C 언어로 삼자기 프로그램 구현

13992 단어
삼자 바둑 프로그램을 실현하려면 먼저 메뉴를 인쇄하고 게임을 선택하거나 종료한 다음에 바둑판을 초기화하고 기호로 삼자 바둑판을 표시한 다음에 게이머가 걷고 컴퓨터가 걷고 컴퓨터가 갈 때rand의 무작위 위치로 마지막에 승부를 검사한다.(이 게임의 난이도는 컴퓨터에 지는 것이라고 할 수 있다. 하하하)
game.h 헤더 파일
#ifndef __GAME_H__  
#define __GAME_H__  

#include   
#include   
#include   

#define ROWS 3  
#define COLS 3  

void init_board(char board[ROWS][COLS], int rows, int cols);
void display_board(char board[ROWS][COLS], int rows, int cols);
void computer_move(char board[ROWS][COLS], int rows, int cols);
void player_move(char board[ROWS][COLS], int rows, int cols);
char check_win(char board[ROWS][COLS], int rows, int cols);

#endif __GAME_H__  

test.c 소스 파일
#include   
#include   
#include   
#include "game.h"  

void game()  
{  
    char board[ROWS][COLS];  
    double ret = 0.0;  
    init_board(board, ROWS, COLS);  
    display_board(board, ROWS, COLS);  
    srand((unsigned int)time(NULL));  
    while(1)  
      {  
           player_move(board, ROWS, COLS);  
           if((ret = check_win(board, ROWS, COLS))!=' ')  
           {  
               break;  
           }  
    display_board(board, ROWS, COLS);  
    printf("
"
); computer_move(board, ROWS, COLS); if((ret = check_win(board, ROWS, COLS))!=' ') { break; } display_board(board, ROWS, COLS); printf("
"
); } if(ret == 'X') { printf(" ,
"
); } if(ret == '0') { printf(" ,
"
); } else if(ret == 'p') { printf("
"
); } display_board(board, ROWS, COLS); } void menu() { printf("********************************
"
); printf("******** 1.play *******
"
); printf("******** 0.exit ********
"
); printf("********************************
"
); } int main() { int input = 0; do { menu(); printf(" :"); scanf("%d", &input); switch(input) { case 1: game(); break; case 0: break; default: printf(" , :
"
); } } while(input); return 0; }

game.c 소스 파일
#define _CRT_SECURE_NO_WARNINGS 1  

#include "game.h"  

void init_board(char board[ROWS][COLS], int rows, int cols)  
{  
    memset(board, ' ', rows*cols*sizeof(char));  
}  

void display_board(char board[ROWS][COLS], int rows, int cols)  
{  
   int i = 0;  
   for(i=0; iprintf(" %c | %c | %c 
"
, board[i][0], board[i][1],board[i][2]); if(i != rows) { printf("---|---|---
"
); } } } void player_move(char board[ROWS][COLS], int rows, int cols) { int x = 0; int y = 0; while(1) { printf(" >"); scanf("%d%d", &x, &y); x--; y--; if(((x>=0) && (xy>=0) && (y<=cols))) { if(board[x][y] == ' ') { board[x][y] = 'X'; break; } else { printf(" ,
"
); } } else { printf(" ,
"
); } } } void computer_move(char board[ROWS][COLS], int rows, int cols) { int x = 0; int y = 0; x = rand()%3; y = rand()%3; while(1) { x = rand()%3; y = rand()%3; if(board[x][y] == ' ') { board[x][y] = '0'; break; } } } int check_full(char board[ROWS][COLS], int rows, int cols) { int i = 0; int j = 0; for(i=0; ifor(j=0; jif(board[i][j] == ' ') return 0; } } return 1; } char check_win(char board[ROWS][COLS], int rows, int cols) { int i = 0; int j = 0; for(i=0; iif((board[i][0]==board[i][1]) && (board[i][1]==board[i][2]) && (board[i][0]!= ' ')) { return board[i][0]; } } for(j=0; jif((board[0][i]==board[1][i]) && (board[1][i]==board[2][i]) && (board[0][i]!= ' ')) { return board[0][i]; } } if((board[0][0]==board[1][1]) && (board[1][1]==board[2][2]) && (board[0][0]!= ' ')) { return board[0][0]; } if((board[2][0]==board[1][1]) && (board[1][1]==board[0][2]) && (board[0][2]!= ' ')) { return board[0][0]; } if(check_full(board, rows, cols)) { return 'p'; } return ' '; }

좋은 웹페이지 즐겨찾기