c언어로 벽돌깨기 게임 만들기

▶ 게임 방식

    - 게임이 실행되면 무작위로 10개의 벽돌이(Q)이 나타납니다.

    - 우리는 커서를 상('e' 키) 하('d' 키) 좌('a' 키) 우('d' 키) 움직일수 있습니다.

    - 커서를 움직여서 벽돌을 지나가면 벽돌이 없어집니다. 점수 1점 획득....

    - 30초 동안 게임이 실행되고 30초가 지나면 점수를 출력하고 5초후 프로그램이 종료됩니다.

 

c언어로 게임 만들기 

 

▶ time()   -   시간을 알려주는 함수로써 그리니치 표준시 (GMT)로부터 1970년 1월 1일 0시부터의 경과 시간을 초 단위로 알려준다.

▶ Sleep()   -  지정된 밀리세컨드 동안 프로그램 실행을 일시적으로 정지시키는 역할을 한다(1000 - 1초를 의미한다.)

▶ System()   -   콘솔 명령어를 사용할 수 있도록 해주는 함수

                       예) system("cls");   화면을 지움

                            system("dir");  폴더를 보여줌

▶ gotoxy()  -  x, y 값에 따라 커서를 이동시켜 주는 함수

▶ printf()   -  형식화된 출력을 표준 출력으로 출력하는 함수

                     형식 지정자로는 %d, %i, %o, %u, %x, %f, %e, %c, %s 등을 사용할 수 있다.

_kbhit() 키가 눌렀는지 검사하는 함수 입니다

▶ printf()   -  형식화된 출력을 표준 출력으로 출력하는 함수

                     형식 지정자로는 %d, %i, %o, %u, %x, %f, %e, %c, %s 등을 사용할 수 있다.

▶ _getch()   -   키보드로부터 하나의 문자를 입력받는 함수

                      단, 화면에는 입력 문자가 출력되지 않는다.

                     Visual C++ 2005 이상부터는 ISO C++ 명명 규칙을 준수하고자 getch() 대신 _getch()를 사용한다.

 

[ c언어로 벽돌깨기 게임 만들기 전체 소스 ]

#include <conio.h>
#include <time.h>
#include <stdio.h>
#include <windows.h>
void gotoxy(int x, int y)
{
	COORD CursorPosition={x, y};
	SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), CursorPosition);
}
int main()
{
	int cnt=0, x[100]={0,}, y[100]={0,}, i, po_x, po_y;
	time_t t;
	t=time(0);
	srand(time(NULL));
	for(i=0;i<10;i++)
	{
		po_x=rand()%72+8;
		x[i]=po_x;
		po_y=rand()%24+1;
		y[i]=po_y;
	}
	po_x=2;
	po_y=12;
	clock_t CurTime, OldTime;
	int nKey;
	OldTime=clock();
	while(1)
	{
		if(_kbhit())
		{
			nKey=_getch();
			if(nKey=='q') break;
			switch(nKey)
			{
				case 'a':
					po_x--;
					break;
				case 'd':
					po_x++;
					break;
				case 'w':
					po_y--;
					break;
				case 's':
					po_y++;
					break;
			}
		}
		system("cls");
		if(po_x>=80)
		{
			po_x=0;
			gotoxy(0, po_y);
		}
		if(po_x<0)
		{
			po_x=79;
			gotoxy(79, po_y);
		}
		if(po_y>=25)
		{
			po_y=0;
			gotoxy(po_x, 0);
		}
		if(po_y<0)
		{
			po_y=24;
			gotoxy(po_x, 24);
		}
		for(i=0;i<10;i++)
		{
			if(x[i]==0&&y[i]==0)
			{
				continue;
			}
			gotoxy(x[i], y[i]);
			printf("Q");
		}
		gotoxy(0, 0);
		printf("남은 시간:%d초", 30-(time(0)-t)); 
		gotoxy(po_x, po_y);
		for(i=0;i<10;i++)
		{
			if(x[i]==po_x&&y[i]==po_y)
			{
				x[i]=0;
				y[i]=0; 
				cnt++;
			}
		}

		if(time(0)-t==30)
		{
			gotoxy(30, 1);
			printf("결과:%d개", cnt);
			Sleep(5000);
			break;
		}
		while(1)
	    {
	 		CurTime=clock();
			if(CurTime-OldTime>100)
			{
				OldTime=CurTime;
				break;
			}
		}
	}
	return 0;
}
Posted by 명문코딩컴퓨터
,