#include<stdio.h>
#include"game.h"
int meun()
{
printf("****************请选择***************\n");
printf("******1.开始游戏*****0.退出游戏******\n");
return 0;
}
void game()
{
char ret ;
char board[ROW][COL] = {0};// 初始化棋盘
initboard(board, ROW,COL);
displayboard(board, ROW, COL);
while(1)
{
peoplay(board,ROW,COL);
displayboard(board, ROW, COL);
ret= isend(board,ROW,COL);
if(ret!='C')
{
break;
}
cptplay(board,ROW,COL);
displayboard(board, ROW, COL);
ret=isend(board,ROW,COL);
if(ret!='C')
{
break ;
}
}
if(ret=='X')
{
printf("人赢\n");
}
if (ret=='O')
{
printf("电脑赢\n");
}
if(ret=='Q')
{
printf("平局\n");
}
}
int test()
{
srand((unsigned int)time(NULL));
int chose=0;
meun();
scanf("%d", &chose);
switch (chose)
{
case 1:
printf("开始\n");
game();
test();
break;
case 0:
printf("结束\n");
break;
default:
printf("请重新输入\n");
}
return 0;
}
int main()
{
test();
return 0;
}
//头文件部分
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define ROW 3 // 定义行3
#define COL 3 //定义 列 3
// 声明
void initboard(char board[ROW][COL], int row, int col);
void displayboard(char board[ROW][COL], int row, int col);
void peoplay(char board[ROW][COL], int row, int col);
void cptplay(char board[ROW][COL], int row, int col);
char isend(char board [ROW][COL],int row,int col );
//模块化函数
#include"game.h"
//棋盘初始化
void initboard(char board[ROW][COL], int row, int col)
{
for (int i=0; i < row; i++)
{
for (int j = 0; j < col; j++)
board[i][j] = ' ';
}
}
//**********************************画棋盘***********************************
void displayboard(char board[ROW][COL], int row, int col)
{
for (int i = 0; i < row+1; i++)
{
for (int j = 0; j < col; j++)
{
printf("*--");
}
printf("*");
printf("\n");
if(i<row)
{
for (int j = 0; j < col; j++)
{
printf("|");
printf( " %c",board[i][j]);
if(j==col-1)
{
printf("|");
}
}
}
printf("\n");
}
printf("\n");
}
// ***************************************人下旗********************************
void peoplay(char board[ROW][COL], int row, int col)
{
int x=0;
int y=0;
while(1)
{
printf("请输入坐标");
scanf("%d ,%d",&x,&y);
if(x>0 && x<=ROW && y>0 && y<=COL)
{
if(board[x-1][y-1]== ' ')
{
board[x-1][y-1]='X';
break;
}
else
{
printf("输入错误,请重新输入\n");
}
}
}
}
//*********************************电脑下旗*****************************
void cptplay(char board[ROW][COL], int row, int col)
{
int x=0;
int y=0;
printf("电脑下棋\n");
while(1)
{
x=rand()%row;
y=rand()%col;
if(board[x][y]== ' ')
{
board[x][y]='O';
break;
}
}
}
*****************************判断输赢*********************************
//0 表示没满,1表示满了
int isfull(char board[ROW][COL],int row,int col)
{
for(int i=0;i<row;i++)
{
for(int j=0;j<col;j++)
{
if(board[i][j]== ' ')
return 0;
}
}
return 1;
}
//结束条件
char isend(char board [ROW][COL],int row,int col )
{
//*********************行相同**************************
for(int i=0;i<row;i++)
{
if(board[i][0]==board[i][1] && board[i][1]==board[i][2] && board[i][1] != ' ')
return board[i][0];
}
//*********************列相同**************************
for(int j=0;j<col;j++)
{
if(board[0][j]==board[1][j] && board[0][j]==board[2][j] && board[2][j] != ' ')
return board[0][j];
}
//*********************对角线相同**************************
if(board[0][0]==board[1][1] && board[2][2]==board[0][0] && board[1][1] != ' ')
return board[0][0];
if(board[0][2]==board[1][1] && board[2][0]==board[1][1] && board[0][2] != ' ')
return board[0][2];
//*********************是否下完判断**************************
if(1==isfull(board,ROW,COL))
return 'Q';
return 'C';
}
//****************主函数判断********************
#include<stdio.h>
#include"game.h"
int meun()
{
printf("****************请选择***************\n");
printf("******1.开始游戏*****0.退出游戏******\n");
return 0;
}
void game()
{
char ret ;
char board[ROW][COL] = {0};// 初始化棋盘
initboard(board, ROW,COL);
displayboard(board, ROW, COL);
while(1)
{
peoplay(board,ROW,COL);
displayboard(board, ROW, COL);
ret= isend(board,ROW,COL);
if(ret!='C')
{
break;
}
cptplay(board,ROW,COL);
displayboard(board, ROW, COL);
ret= isend(board,ROW,COL);
if(ret!='C')
{
break ;
}
}
if(ret=='X')
{
printf("人赢\n");
}
if (ret=='O')
{
printf("电脑赢\n");
}
if(ret=='Q')
{
printf("平局\n");
}
}
int test()
{
srand((unsigned int)time(NULL));
int chose=0;
meun();
scanf("%d", &chose);
switch (chose)
{
case 1:
printf("开始\n");
game();
test();
break;
case 0:
printf("结束\n");
break;
default:
printf("请重新输入\n");
}
return 0;
}
int main()
{
test();
return 0;
}