티스토리 뷰
반응형
개발자의 C언어 독학 기초 # 간단한 게임을 만들어 보자
모든 강의 자료 : www.codingnow.co.kr/
이번시간에는 C언어 기본 문법을 사용하여 재미있는 게임을 만들어 보았다.
W
A S D
버튼을 눌러 ★을 이동하는 게임이다.
system("mode con:cols=100 lines=25"); //콜솔크기
이것은 콘솔의 크기를 조정하는 consol 창 명령이다.
GetKey( ) 함수에서 눌려진 키 값을 가져온다.
int GetKey(void)
{
if(_kbhit() != 0)
{
return _getch();
}
return 0;
}
GotoXY는 consol창 내에서의 커서 위치를 지정하는 기능을한다.
원하는 위치에 커서를 이동하고 그 위치에 원하는 값을 출력하는 목적이다.
void GotoXY(int x, int y)
{
COORD Pos;
Pos.X = 2*x;
Pos.Y = y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),Pos);
}
입력 받은 키 값에 따라 ★ 의 위치를 지정하는 부분이다.
switch(key)
{
case 'a'://left
{
if(x > 1) x-=1;
break;
}
case 'd'://right
{
if(x < (X_MAX-2)) x+=1;
break;
}
case 'w'://up
{
if(y > 1) y--;
break;
}
case 's'://down
{
if(y < Y_MAX-2) y++;
break;
}
}
외곽을 그리는 부분이다.
------
| |
------
for(int i=0; i<Y_MAX; i++)
{
for(int k=0; k<X_MAX; k++)
{
if(i==0 || i==(Y_MAX-1))
{
GotoXY(k,i);
printf("-",i);
}
if((i>0 && i < (Y_MAX-1)) && (k==0 || k==(X_MAX-1)))
{
GotoXY(k,i);
printf("|",i);
}
}
}
지정된 위치에 ★ 을 출력한다.
GotoXY(x,y);
printf("★");
전체 화면을 그리고 80ms 동안 나타낸 다음 다시 그리기 위해 지운다.("cls")
Sleep(80);
system("cls"); //화면지움
전체 소스 코드이다.
#include <stdio.h>
#include <windows.h> //system 명령 실행을 위해
#include <conio.h>
int GetKey(void)
{
if(_kbhit() != 0)
{
return _getch();
}
return 0;
}
void GotoXY(int x, int y)
{
COORD Pos;
Pos.X = 2*x;
Pos.Y = y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),Pos);
}
#define X_MAX 20
#define Y_MAX 20
void main(void)
{
system("chcp 65001"); //gcc 한글 깨짐
system("cls"); //화면지움
system("mode con:cols=100 lines=25"); //콜솔크기
int key;
int x=X_MAX/2,y=Y_MAX/2;
while(1)
{
key = GetKey();
switch(key)
{
case 'a'://left
{
if(x > 1) x-=1;
break;
}
case 'd'://right
{
if(x < (X_MAX-2)) x+=1;
break;
}
case 'w'://up
{
if(y > 1) y--;
break;
}
case 's'://down
{
if(y < Y_MAX-2) y++;
break;
}
}
for(int i=0; i<Y_MAX; i++)
{
for(int k=0; k<X_MAX; k++)
{
if(i==0 || i==(Y_MAX-1))
{
GotoXY(k,i);
printf("-",i);
}
if((i>0 && i < (Y_MAX-1)) && (k==0 || k==(X_MAX-1)))
{
GotoXY(k,i);
printf("|",i);
}
}
}
GotoXY(x,y);
printf("★");
GotoXY(0,Y_MAX+1);
printf("x = %d, y = %d\n",x,y);
printf("A : Left, D : Right, W : Up, D : Down\n",x,y);
Sleep(80);
system("cls"); //화면지움
}
return;
}
반응형
'C언어 강의' 카테고리의 다른 글
C언어 기초 # 10진수를 2진수로 변환하기 - 씨에프랩 (0) | 2020.04.19 |
---|---|
C언어 별을 출력 # for do while을 이용 (0) | 2020.04.17 |
개발자의 C언어 독학 기초 # scanf (0) | 2020.04.16 |
개발자의 C언어 독학 기초 # gets, puts (0) | 2020.04.16 |
개발자의 C언어 독학 기초 # 응용편 2의보수 (bit연산)구하기 (0) | 2020.04.15 |