아데니아의 블로그

adenia.egloos.com

포토로그


최근 포토로그


주석만 가져가

#include <stdio.h>
#include <conio.h>
#include <Windows.h>
#include <stdlib.h>

void gotoxy(int x, int y);
void draw_check01(int c, int r);
void move_arrow_key(char key, int *x1, int *y1, int x_b, int y_b);
void game_control(void);

int main(void)
{
game_control(); //게임컨트롤 함수 실행
return 0;
}

void game_control(void)
{
int x=1, y=1;
char key;
do //do while 반복문으로 무한반복함.
{
gotoxy(1,1); //첫 시작 좌표는 1,1
draw_check01(18,18); //바둑판 그림을 18*18 사이즈로 만듬
gotoxy(x,y); //1,1에 지정된 위치에
printf("○"); //○ 모양을 출력함.
gotoxy(1,21); //바둑판 아래쪽 1, 21 에 아래 글씨를 출력
printf("방향키를 누르시오.");
key=getch(); //키 하나를 입력받음
if(key==27) //esc가 입력되면
exit(0); //종료됨.
else if(key>=72) //아스키값 72 이상의 키가 입력되면
move_arrow_key(key, &x, &y, 37, 19); //방향키 입력 함수 실행, 최대값은 x 37, y 19
}while(1);
}

void gotoxy(int x, int y) //커서 이동 함수
{
COORD Pos = {x-1, y-1};
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), Pos);
}

void draw_check01(int c, int r) //바둑판 그리기 함수
{
int i, j;
unsigned char a=0xa6; //확장 코드를 사용하기 위해
unsigned char b[12]; //2바이트 사용
for(i=1;i<12;i++)
b[i]=0xa0+i; //확장 코드 모양을 결정하기 위해 배열 사용
printf("%c%c", a, b[3]); //┌모양 출력
for(i=0;i<c-1;i++)
printf("%c%c", a, b[8]); //┬모양 출력
printf("%c%c", a, b[4]); //┐모양 출력
printf("\n"); //줄 바꿈
for(i=0;i<r-1;i++)
{
printf("%c%c", a, b[7]); //├모양 출력
for(j=0;j<c-1;j++)
printf("%c%c", a, b[11]); //┼모양 출력
printf("%c%c", a, b[9]); //┤모양 출력
printf("\n"); //줄 바꿈
}
printf("%c%c", a, b[6]); //└모양 출력
for(i=0;i<c-1;i++)
printf("%c%c", a, b[10]); //┴모양 출력
printf("%c%c", a, b[5]); //┘모양 출력
printf("\n"); //줄 바꿈
}

void move_arrow_key(char key, int *x1, int *y1, int x_b, int y_b) //화살표 이동 함수
{
switch(key)
{
case 72: //위쪽 방향키 입력시
*y1=*y1-1; //위쪽으로 1칸씩 이동
if(*y1<1) *y1=1; //맨 위쪽이면 더이상 이동하지 않음
break;
case 75: //왼쪽 방향키 입력시
*x1=*x1-2; //왼쪽으로 2칸씩 이동(바둑판 상에서는 1칸씩 이동)
if(*x1<1) *x1=1; //맨 왼쪽이면 더이상 이동하지 않음
break;
case 77: //오른쪽화살표 입력시
*x1=*x1+2; //오른쪽으로 2칸씩 이동(바둑판 상에서는 1칸씩 이동)
if(*x1>x_b) *x1=x_b; //맨 오른쪽이면 더이상 이동하지 않음
break;
case 80: //아래쪽 방향키 입력시
*y1=*y1+1; //아래쪽으로 1칸씩 이동
if(*y1>y_b) *y1=y_b; //맨 아래쪽이면 더이상 이동하지 않음
break;
default:
return;
}
}

덧글

댓글 입력 영역