Programing/c언어

c언어 바둑판 #1

Sang12 2014. 5. 22. 15:09

#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");
 
}