您的位置:首页 > 编程语言 > C语言/C++

c语言编写三子棋

2016-12-27 16:22 309 查看

c语言编写三子棋

text.c

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#include"game.h"
void game()
{
int ret = 0;
char board[ROWS][COLS]={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);
computer_move(board,ROWS,COLS);
if((ret = check_win(board, ROWS, COLS)) != ' ')
break;
display_board(board,ROWS,COLS);
}
ret = check_win(board, ROWS, COLS);
if(ret == 'X')
{
printf("恭喜你!你赢了!\n");
}
else if(ret == 'O')
{
printf("不好意思!你输了!\n");
}
else if(ret == 'q')
{
printf("平局!\n");
}
display_board(board, ROWS, COLS);

}
void menu()
{
printf("*******************************\n");
printf("****** 1. play   0. exit ******\n");
printf("*******************************\n");

}
int main ()
{
int input = 0;

do
{
menu();
scanf("%d",&input);
switch(input)
{
case 1:
game();
break;
case 0:
break;
default:
printf("选择错误!!");
break;

}

}while(input);
return 0;
}


game.c

#define _CRT_SECURE_NO_WARNINGS 1
#include"game.h"
void init_board(char board[ROWS][COLS],int row,int col)
{
memset(board,' ',row*col);
}
void display_board(char board[ROWS][COLS],int row,int col)
{
int i = 0;
for(i=0; i<row; i++)
{
printf(" %c | %c | %c \n",board[i][0],board[i][1],board[i][2]);
if(i != 2)
printf("
4000
---|---|---\n");
}
}
void player_move(char board[ROWS][COLS],int row,int col)
{
int x = 0;
int y = 0;
while(1)
{
printf("请输入坐标:");
scanf("%d%d",&x,&y);
x--;
y--;
if(((x>=0)&&(x<=2))&&((y>=0)&&(y<=2)))
{
if(board[x][y] == ' ')
{
board[x][y]='X';
break;

}
else
{
printf("输入有误 !");
}
}
else
{
printf("输入有误 !");
}
}
}
void computer_move(char board[ROWS][COLS],int row,int col)
{
printf("电脑下:\n");
while(1)
{
int x = rand()%3;
int y = rand()%3;
if(board[x][y] == ' ')
{
board[x][y] = 'O';
break;
}
}
}
static int is_full(char board[ROWS][COLS],int row,int col)
{
int i = 0;
int j = 0;
for(i=0;i<row;i++)
{
for(j=0;j<col;j++)
{
if(board[i][j]==' ')
return 0;
}
}
return 1;
}
char check_win(char board[ROWS][COLS], int row, int col)
{
int i = 0;
for(i=0; i<row; i++)
{
if((board[i][0]==board[i][1])
&&(board[i][1]==board[i][2])
&&(board[i][1]!=' '))
return board[i][1];
}
for(i=0; i<col; i++)
{
if((board[0][i]==board[1][i])
&&(board[1][i]==board[2][i])
&&(board[1][i]!=' '))
return board[1][i];
}
if((board[0][0]==board[1][1])
&&(board[1][1]==board[2][2])
&&(board[1][1]!=' '))
return board[1][1];
if((board[0][2]==board[1][1])
&&(board[1][1]==board[2][0])
&&(board[1][1]!=' '))
return board[1][1];
if(is_full(board, row, col))
{
return 'q';
}
return ' ';
}


game.h

#ifndef __GAME_H__
#define __GAME_H__
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

#define ROWS 3
#define COLS 3

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

#endif //__GAME_H__
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: