这个游戏用的是前6章的知识,通过定义2维数组3*3型,将值赋给9个格子,通过选择格子来选择下棋的位置
代码如下:
#include<stdio.h>
#include<Windows.h>
#include<stdlib.h>
#include<math.h>
#define time 9
int main()
{
printf("欢迎来到井字游戏\n");
printf("游戏规则:\n");
printf("1p使用X,2p使用O,当任意一种符号横排或者竖排或者对角线均相同时,该玩家获胜\n");
char A[3][3] = {
{'0','1','2'},
{'3','4','5'},
{'6','7','8'}
};
int player; int choice;
int number;
int row; int line;
int winner=0;
int i;
for (i = 0; i < time && winner == 0; i++)
{
player = i % 2 + 1; //设置1p和2p
printf("请%d p选择你要下的位置\n", player);
scanf_s("%d", &choice);
row = floor(choice/3);
line = choice % 3;
if (row > 2 || row < 0 || line>2 || line < 0 || choice>8) //使输入正确
{
printf("错误输入,游戏结束\n");
break;
}
if (A[row][line] == 'X' || A[row][line] == 'Q')
{
printf("错误输入,游戏结束\n");
break;
}
if (player == 1) //设置1p和2p的输入
{
A[row][line] = 'X';
}
else
{
A[row][line] = 'Q';
}
printf("****************\n"); //制作棋盘
printf("*%c * %c * %c *\n", A[0][0], A[0][1], A[0][2]);
printf("****************\n");
printf("*%c * %c * %c *\n", A[1][0], A[1][1], A[1][2]);
printf("****************\n");
printf("*%c * %c * %c *\n", A[2][0], A[2][1], A[2][2]);
printf("****************\n");
if ((A[0][0] == A[1][1] && A[1][1] == A[2][2]) || (A[0][2] == A[1][1] && A[1][1] == A[2][0])) //判定胜利条件
{
winner = player;
printf("胜利者是%d p", player);
system("pause");
}
for (number = 0; number < 3; number++) //判定胜利条件
{
if ((A[number][0] == A[number][1] && A[number][1] == A[number][2]) ||
(A[0][number] == A[1][number] && A[1][number] == A[2][number]))
{
winner = player;
printf("胜利者是%d p", player);
system("pause");
}
if (i == 9) //平局时
{
printf("平局");
system("pause");
}
}
}
return 0;
}