c언어 바둑판 #1
#include<stdio.h>
#include<windows.h>
#include<conio.h>
void draw_check01(int column, int row);
void gotoxy(int x, int y);
void number_display(int n);
#define X_MAX 79 //가로(열)방향 최대값
#define Y_MAX 24 //세로(행)방향 최댓값
void move_arrow_key(char chr, int *x, int *y, 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
{
gotoxy(1,1);
draw_check01(18,18);
gotoxy(x,y);
printf("○");
gotoxy(1,21);
printf("방향키를 누르시오\n");
key=getch();
if(key==27)
exit(0);
else if(key>=72)
move_arrow_key(key,&x,&y,37,19);
}while(1);
}
void move_arrow_key(char key, int *x1, int *y1, int x_b, int y_b)
{
switch(key)
{
case 72: //위쪽(상) 방향의 화살표 키 입력
*y1=*y1-1;
if(*y1<1) *y1=1; //y좌표의 최소값
break;
case 75: //왼쪽(좌) 방향의 화살표 키 입력
*x1=*x1-2;
if(*x1<1) *x1=1; //x좌표의 최소값
break;
case 77: //오른쪽(우) 방향의 화살표 키 입력
*x1=*x1+2;
if(*x1>x_b) *x1=x_b; //x좌표의 최대값
break;
case 80: //아래쪽(하) 방향의 화살표 키 입력
*y1=*y1+1;
if(*y1>y_b) *y1=y_b; //y좌표의 최대값
break;
default:
return;
}
}
void number_display(int n)
{
int i,j,count=1;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
gotoxy(3+4*j,2*2*i);
printf("%2d",count);
count++;
}
}
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];
for(i=1;i<12;i++)
b[i]=0xa0+i;
printf("%c%c",a,b[3]);
for(i=1;i<c;i++)
printf("%c%c",a,b[8]);
printf("%c%c",a,b[4]);
printf("\n");
for(i=1;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");
}