wookss blog

Tic Tac Toe 게임소스 본문

Study/C/C++

Tic Tac Toe 게임소스

wooklab 2013. 5. 15. 01:06
반응형

 

#include <stdio.h>
#include <stdlib.h>
char matrix[3][3];              // 전역변수 2차원 배열 선언
char check(void);               // 전역변수
void init_matrix(void);         // ********************* 
void get_player_move(void);   	// * ㅍ ㄹ ㅌ 타  이   * 
void get_computer_move(void);   // * ㅡ ㅗ ㅗ     ㅂ   * 
void disp_matrix(void);         // ********************* 
void main() 
{
  char done;			// 문자 done 선언
  printf("이것은 Tic Tac Toe 게임입니다.\n");   // 게임설명 출력 부분
  printf("당신은 컴퓨터와 상대할 것입니다.\n\n");  // 게임설명 출력 부분
  done = ' ';           // done 에 공백 삽입
  init_matrix();        // init_matrix 함수 호출
  do  
  {
  	disp_matrix();        // disp_matrix 함수 호출
  	get_player_move();    // get_player_move 함수 호출
  	done = check();       // done에 check 대입
  	if(done !=' ')        // done이 공백이 아니면 실행
  	break;
  	get_computer_move();	// get_computer_move 함수 호출
  	done=check();         // done에 check 대입
  }
  while(done == ' ');         // done이 공백이면 반복

  if(done=='O')          // done이 0일 경우 승리
  	printf("You Win!\n");  
  else            // 그외엔 컴퓨터 승리
  	printf("I win!!!!\n");
 
 disp_matrix();          // disp_matrix 함수 호출
}

void init_matrix(void)
{
	int i,j;
	for(i=0; i<3; i++)
		for(j=0; j<3;j++)
			matrix[i][j]=' '; 
}

void disp_matrix(void) 
{
	int t;
	for(t=0;t<3;t++)
	{
		printf(" %c | %c | %c ", matrix[t][0],matrix[t][1],matrix[t][2]);
		if (t != 2) 
			printf("\n---|---|---\n");  
	}
	printf("\n");
}

void get_player_move(void) 
{
	int x,y;
	printf("당신의 좌표를 입력하시오 X,Y : ");
	scanf("%d,%d",&x,&y);
	x--;
	y--;
	if(matrix[x][y] != ' ')
	{
		printf("잘못이동하셨읍니다\n");
		get_player_move();
	}
	else
		matrix[x][y] = 'O';
} 

void get_computer_move(void)
{
	int i,j;
	for(i=0; i<3; i++)
	{
		for(j=0; j<3; j++)
			if (matrix[i][j]==' ')
				break;
			if(matrix[i][j]==' ')
				break;
	}
	if(i*j==9)
	{
		printf("draw\n");
		exit(0);
	}
	else
		matrix[i][j]='X';
}

char check(void)
{
	int i;
	for(i=0;i<3;i++)
		if(matrix[i][0]==matrix[i][1] && matrix[i][0]==matrix[i][2])
			return matrix[i][0];
	for(i=0;i<3;i++)
		if(matrix[0][i]==matrix[1][i] && matrix[0][i]==matrix[2][i])
			return matrix[0][i];
	if(matrix[0][0]==matrix[1][1] && matrix[1][1]==matrix[2][2])
		return matrix[0][0];
	if(matrix[0][2]==matrix[1][1] && matrix[1][1]==matrix[2][0])
		return matrix[0][2];
	return ' ';
}

 




 

 

반응형

'Study > C/C++' 카테고리의 다른 글

C언어 문법 요약  (1) 2013.05.21
lotto 소스  (0) 2013.05.15
C++ for문 이용하여 다이아몬드 출력  (1) 2013.05.14