c언어 게임 만들기 -snake game !!
1일차
기본 인터페이스와 뱀 머리 구현 해보기
게임 시작화면 틀 잡기
#include< stdio.h>
#include <Windows.h>
#include <conio.h>
#define LEFT 75
#define RIGHT 77
#define UP 72
#define DOWN 80
//방향키의 아스키값을 미리 정의해 놓았다.
gotoxy(int x,int y)
{
COORD pos = ;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);
}
//게임 시작 화면의 문구를 원하는 위치에 출력하고, 선택하기 위해 좌표 값을 지정해주는
//gotoxy함수를 사용했다.
void interface01()
{
int a;
int x=10,y=5;
gotoxy(x,y);
system("cls");
fflush(stdin);
system("mode con: cols=150 lines=41"); //창 화면 크기
system("color 0b"); //색 변경 -> 민트색
int i;
system("cls");
printf("■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■");
for(i=1; i<39; i++)
{
printf("■ ■");
}
printf("■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■");
// 게임 시작 화면 테두리
textcolor(15);
gotoxy(64,10);
printf(" SNAKE GAME \n");
gotoxy(67,13);
printf(" MEUN\n");
gotoxy(64,16);
printf(" GAME START = y\n");
scanf("%c",&a);
gotoxy(67,17);
printf(" EXIT = n\n");
scanf("%c",&a);
gotoxy(59,16);
printf("▶");
//처음 화면에 출력될 문구 설정
//y를 입력하면 게임시작, n을 입력하면 게임 종료를 설정
if(a==y)
{
System("cls");
Printf("게임 실행 부분");
}
//입력 값이 y일 경우
if(a==n)
{
System("cls");
printf("게임 종료");
}
//입력 값이 n일 경우
else
{
exit(0);
}
//나가기
scanf 함수를 이용해 y , n를 입력 받아 해당 창으로 이동한다.
게임 실행 부분에는 뱀 게임 코드 삽입
뱀 머리 기본 설정
void play()
{
int direction = UP;
int X = 19;
int Y = 38;
//시작할때의 뱀 머리 위치와 움직이는 방향을 미리 정해놓았다.
gotoxy(Y, X);
printf("■");
//뱀 머리 출력
while (1) //일단은 계속 반복되도록 했다.
{
if (kbhit())
{
direction = getch();
}
//반복 중 키보드입력이 있다면 그 값을 direction에 넣는다.
if (direction == UP)
{
gotoxy(Y, X);
printf(" ");
gotoxy(Y, --X);
printf("■");
}
else if (direction == DOWN)
{
gotoxy(Y, X);
printf(" ");
gotoxy(Y, ++X);
printf("■");
}
else if (direction == LEFT)
{
gotoxy(Y, X);
printf(" ");
gotoxy(Y -= 2, X);
printf("■");
}
else if (direction == RIGHT)
{
gotoxy(Y, X);
printf(" ");
gotoxy(Y += 2, X);
printf("■");
}
//입력되어 있는 방향값으로 한칸씩 움직이게 했다.
Sleep(50);
//0.05초 마다 움직이게 해놨다. 조금 빠른 것 같은데 이것으로 난이도를 조정 가능할 것이다.
}
}
void main()
{
system("mode con: cols=150 lines=41");
//콘솔 창의 크기를 고정시켰다.
interface01();
play();
//나중에 인터페이스 부분과 합쳐야 하기 때문에 메인함수는 최대한 간소화 했다.
}
수정해야 될 부분.
방향키를 제외한 나머지 키 값이 입력되면 방향키가 입력될때까지 기다린다. => 조건문을 하나 더 달아주면 될 것 같다.
방향키를 연속으로 여러 번 누르면 뱀이 느려진다.
방향키를 누른 다음 한턴 쉬고 방향이 전환된다. => kbhit과 getch말고 다른 방법이 있나 찾아봐야 할 것 같다.
뱀이 벽을 뚫고 지나간다. => 벽에 닿으면 게임오버되게 만들어야 함.
'C언어' 카테고리의 다른 글
C언어 로또 프로그램 만들기 (0) | 2015.08.26 |
---|---|
C언어 게임 만들기(5일차) (0) | 2015.08.26 |
C언어 게임 만들기(4일차) (0) | 2015.08.26 |
C언어 게임 만들기(3일차) (0) | 2015.08.26 |
C언어 게임 만들기(2일차) (0) | 2015.08.26 |