board.h
<span style="font-size:18px;">#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define Line 3
#define Column 3
void meau();
void Init(char board[Line][Column], int x, int y);//初始化一个棋盘即初始化二维数组中所有元素的函数
void Display(char board[Line][Column]);//打印棋盘的函数
void computer(char board[Line][Column]);//电脑下棋的函数
void player(char board[Line][Column],int x,int y);//玩家下棋的函数
int check_complete(char board[Line][Column]);//检测棋盘是否下满的函数
int check_win(char board[Line][Column]);//判断是电脑赢还是玩家赢的函数</span>
board.c
<span style="font-size:18px;">#define _CRT_SECURE_NO_WARNINGS 1
#include"board.h"
void meau()
{
printf("**************<1>--player**********\n");
printf("**************<0>-- exit **********\n");
printf("***********************************\n");
}
void Init(char board[Line][Column], int x, int y)
{
int i = 0, j = 0;
for (i = 0; i < Line; i++)
{
for (j = 0; j < Column; j++)
{
board[i][j] = ' ';
}
}
}
void Display(char board[Line][Column])
{
int i;
for (i = 0; i<3; i++)
{
printf("_%c_|_%c_|_%c_\n", board[i][0], board[i][1], board[i][2]);
if (i<2)
printf(" | | \n");
}
}
void computer(char board[Line][Column])
{
int x, y, sum = 0;
srand((unsigned)time(NULL));
x = rand() % 3;
y = rand() % 3;
while (board[x][y] != ' ')
{
if (check_complete(board) < 9)
{
x = rand() % 3;
y = rand() % 3;
}
else
{
break;
}
}
board[x][y] = '*';
}
void player(char board[Line][Column],int x, int y)
{
while (1)
{
printf("请输入玩家所对应的坐标:\n");
scanf("%d%d", &x, &y);
if ((x>=0&&x < Line)&&(y>=0&&y < Column)&& (board[x][y] == ' '))
{
board[x][y] = '@'; break;
}
else
printf("输入有误请重新输入\n");
}
}
int check_complete(char board[Line][Column])
{
int i, j, count = 0;
for (i = 0; i < Line; i++)
{
for (j = 0; j < Column; j++)
{
if (board[i][j] != ' ')
{
count++;
}
}
}
return count;
}
int check_win(char board[Line][Column])
{
if ((board[0][1] == '*'&& board[0][0] == '*' && board[0][2] == '*') || (board[1][1] == '*'&& board[1][0] == '*' && board[1][2] == '*') || (board[2][1] == '*'&& board[2][0] == '*' && board[2][2] == '*') || (board[1][0] == '*'&& board[0][0] == '*' && board[2][0] == '*') || (board[1][1] == '*'&& board[0][1] == '*' && board[2][1] == '*') || (board[0][2] == '*'&& board[1][2] == '*' && board[2][2] == '*') || (board[2][2] == '*'&& board[1][1] == '*' && board[2][0] == '*') || (board[0][0] == '*'&& board[1][1] == '*' && board[2][2] == '*'))
{
return 1;
}
if ((board[0][1] == '@'&& board[0][0] == '@' && board[0][2] == '@') || (board[1][1] == '@'&& board[1][0] == '@' && board[1][2] == '@') || (board[2][1] == '@'&& board[2][0] == '@' && board[2][2] == '@') || (board[1][0] == '@'&& board[0][0] == '@' && board[2][0] == '@') || (board[1][1] == '@'&& board[0][1] == '@' && board[2][1] == '@') || (board[0][2] == '@'&& board[1][2] == '@' && board[2][2] == '@') || (board[2][2] == '@'&& board[1][1] == '@' && board[2][0] == '@') || (board[0][0] == '@'&& board[1][1] == '@' && board[2][2] == '@'))
{
return 0;
}
else
{
return -1;
}
}</span>
test.c
<span style="font-size:18px;">#define _CRT_SECURE_NO_WARNINGS 1
#include "board.h"
void game()
{
int line=0, column=0;
char board1[Line][Column];
Init(board1, Line, Column);
while (1)
{
player(board1, line, column);
computer(board1);
Display(board1);
if (check_win(board1) == 1)
{
printf("电脑获胜"); break;
}
if (check_win(board1) == 0)
{
printf("人获胜"); break;
}
if (check_complete(board1) == 9 && check_win(board1) != 1 && check_win(board1) != 0)
{
printf("此次为平局"); break;
}
}
}
int main()
{
int num;
while (1)
{
meau();
printf("请选择输入一个数0或1:\n");
scanf("%d", &num);
printf("\n");
switch (num)
{
case 1:game();
break;
case 0:exit(1);
break;
default:printf("输入错误请重新选择:\n"); break;
}
}
system("pause");
return 0;
}</span>
本文介绍了一个简单的五子棋游戏程序实现,使用C语言编写。该程序包括玩家与电脑对战的功能,通过随机算法实现电脑下棋逻辑,并提供用户交互界面进行游戏操作。此外,还实现了游戏状态检查功能,用于判断游戏胜负。
1万+

被折叠的 条评论
为什么被折叠?



