main.c
// 문자 출력 : printf() / putchar()
// 커서 이동 : SetConsoleCursorPosition
// 입력 : GetAsyncKeyState()
#include "stdio.h"
struct position
{
int x;
int y;
}player, bullet;
int main(void)
{
//플레이어 위치
player.x = 0, player.y = 0;
//총알 위치
bullet.x = 0, bullet.y = 0;
//시간 변수
float deltaTime;
float s_deltaTime;
float s_prevTick = 0;
s_prevTick = clock();
float Player_Time = 0;
float Bullet_Time = 0;
// 1. 현재 시점을 구한다.,
// 2. 현재 시점과 이전 시점의 차이를 통해 흐른 시간을 구한다.
//플레이어 이동
while (1)
{
//현재시간 - 과거시간을 초단위로 나누고, 그 나눈 만큼 Time을 증가시킨다.
clock_t currentTick = clock();
float deltatime = (float)(currentTick - s_prevTick) / CLOCKS_PER_SEC;
s_prevTick = currentTick;
Player_Time += deltatime;
if (Player_Time >= 0.1)
{
if (0x8000 & GetAsyncKeyState(VK_UP))
{
player.y--;
if (player.y < 0)
{
player.y = 0;
}
}
if (0x8000 & GetAsyncKeyState(VK_DOWN))
{
player.y++;
if (player.y > 50)
{
player.y = 50;
}
}
if (0x8000 & GetAsyncKeyState(VK_LEFT))
{
player.x--;
if (player.x < 0)
{
player.x = 0;
}
}
if (0x8000 & GetAsyncKeyState(VK_RIGHT))
{
player.x++;
if (player.x > 50)
{
player.x = 50;
}
}
//총알 입력
if (0x8000 & GetAsyncKeyState(VK_SPACE))
{
//총알 위치
bullet.x = player.x + 1;
bullet.y = player.y;
}
Player_Time = 0;
for (int i = 1; i <= 10; i++)
{
bullet.x++;
}
//총알 늘어나는것 delta time.
//1. 총알 날아가야댐 (bool값으로 처리)
//2. 그 bool값을 이용해서 총알이 존재하면 총알 위치를 앞으로 한칸 씩 땡겨준다.
//3. 3초뒤에 사라지게.(delta 값)
//초기화
system("cls");
}
//플레이어 출력
COORD pos = { player.x, player.y };
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);
printf("P");
//총알 위치 출력
COORD pos2 = { bullet.x, bullet.y };
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos2);
printf("⇒");
}
//스페이스바를 누르면 총알이 생성 o
// 생성 위치는 플레이어 위치 x가 +1
// 총알은 n초마다 이동
// 이동 방향은 x++
// 3초가 지나면 사라짐
}
stdio.h
#pragma once
#include <stdbool.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <float.h>
#include <limits.h>
#include <assert.h>
#include <string.h>
#include <stdarg.h>
#include <time.h>
#include <Windows.h>
typedef int8_t int8;
typedef int16_t int16;
typedef int32_t int32;
typedef int64_t int64;
typedef uint8_t uint8;
typedef uint16_t uint16;
typedef uint32_t uint32;
typedef uint64_t uint64;