一、头文件
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#define ROW 3
#define COL 3
void InitBoard(char board[ROW][COL]);
void ShowBoard(char board[ROW][COL]);
void Human(char board[ROW][COL]);
void Computer(char board[ROW][COL]);
int Judge(char board[ROW][COL]);
二、游戏
#include"game.h"
void InitBoard(char board[ROW][COL])
{
int i = 0;
int j = 0;
for (i = 0; i < ROW; i++)
{
for (j = 0; j < COL; j++)
{
board[i][j] = ' ';
}
}
}
void ShowBoard(char board[ROW][COL])
{
int i = 0;
int j = 0;
for (i = 0; i < ROW; i++)
{
for (j = 0; j < COL; j++)
{
printf(" %c ",board[i][j]);
if (j < COL-1)
{
printf("|");
}
}
printf("\n");
if (i < ROW - 1)
{
for (j = 0; j < COL; j++)
{
printf("___");
if (j < COL - 1)
{
printf("|");
}
}
}
printf("\n");
}
}
void Human(char board[ROW][COL])
{
int i = 0;
int j = 0;
printf("your turn\n");
while (1)
{
printf("input place(1,3):");
scanf("%d%d", &i, &j);
if ((i > 0 && i <= ROW) && (j > 0 && j <= COL))
{
if (board[i-1][j-1] != ' ')
{
printf("place full\n");
continue;
}
else
{
board[i-1][j-1] = '*';
break;
}
}
else
{
printf("input wrong\n");
}
}
}
void Computer(char board[ROW][COL])
{
int i = 0;
int j = 0;
printf("computer turn\n");
while (1)
{
i = rand() % ROW;
j = rand() % COL;
if (board[i][j] == ' ')
{
board[i][j] = '+';
break;
}
}
}
int Judge(char board[ROW][COL])
{
int i = 0;
int j = 0;
int h = 0;
int c = 0;
for (i = 0; i < ROW; i++)
{
for (j = 0,c = 0,h = 0; j < COL; j++)
{
if (board[i][j] == '*')
{
h++;
}
if (board[i][j] == '+')
{
c++;
}
}
if (h == 3)
{
return 1;
}
if (c == 3)
{
return 2;
}
}
for (j = 0; j < COL; j++)
{
for (i = 0, h = 0, c = 0; i < ROW; i++)
{
if (board[i][j] == '*')
{
h++;
}
if (board[i][j] == '+')
{
c++;
}
}
if (h == 3)
{
return 1;
}
if (c == 3)
{
return 2;
}
}
for (i = 0, c = 0, h = 0; i < ROW; i++)
{
if (board[i][i] == '*')
{
h++;
}
if (board[i][i] == '+')
{
c++;
}
}
if (h == 3)
{
return 1;
}
if (c == 3)
{
return 2;
}
for (i = 0, c = 0, h = 0; i < ROW; i++)
{
if (board[i][ROW-1-i] == '*' )
{
h++;
}
if (board[i][ROW-i-1] == '+')
{
c++;
}
}
if (h == 3)
{
return 1;
}
if (c == 3)
{
return 2;
}
for (i = 0,h=0; i < ROW; i++)
{
for (j = 0; j < COL; j++)
{
if (board[i][j] == '*' || board[i][j] == '+')
{
h++;
}
}
}
if (h == ROW * COL)
{
return 0;
}
}
三、检测
#include"game.h"
void menu()
{
printf("************************\n");
printf("**********井字棋********\n");
printf("**1、开始游戏 0、退出**\n");
printf("************************\n");
}void game()
{
int ret = 0;
srand((unsigned int)time(NULL));
char board[ROW][COL] = { 0 };
InitBoard(board);
ShowBoard(board);
//printf("show is ok\n");
while (1)
{
Human(board);
ShowBoard(board);
ret=Judge(board);
if (ret == 1 || ret == 2 || ret == 0 )
{
break;
}
Computer(board);
ShowBoard(board);
ret=Judge(board);
if (ret == 1 || ret == 2 || ret == 0)
{
break;
}
}
switch (ret)
{
case 0:
printf("ping\n");
break;
case 1:
printf("Human win\n");
break;
case 2:
printf("Computer win\n");
break;
}
}