三子棋:行,列,正负对角线率先到达三个的胜利。我在vs studio2019分了三个文件game.h;
game.c;test.c;
game.h//存放相关头文件和声明
#include<stdlib.h>
#include<time.h>
#include<Windows.h>
#define row 3
#define col 3
void menu();
void board_init(char arr[row][col]);
void board_show(char arr[row][col]);
int playgame();
void people_play(char arr[row][col]);
void computer_play(char arr[row][col]);
int isfull(char arr[row][col]);
int win(char arr[row][col]);
game.c//存放关键信息
#include "game.h"
void menu() {//打印菜单
printf("****************\n");
printf("1.玩游戏 0.退出\n");
printf("****************\n");
}
void board_init(char arr[row][col]){//初始化数组
int i = 0, j = 0;
for (i = 0; i < row; i++) {
for (j = 0; j < col; j++) {
arr[i][j] = ' ';
}
}
}
void board_show(char arr[row][col]) {//打印棋盘
int i = 0, j = 0;
for (i = 0; i < row; i++) {
for (j = 0; j < col; j++) {
printf(" %c ", arr[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 people_play(char arr[row][col]) {//玩家下棋
int x = 0, y = 0;
printf("请输入您要下的坐标\n");
scanf("%d %d", &x, &y);
if (x <= row && y <= col&&arr[x-1][y-1]==' ') {
arr[x - 1][y - 1] = '*';
}
else {
printf("输入不合法请重新输入\n");
people_play(arr);
}
}
void computer_play(char arr[row][col]) {//电脑下棋
int x=rand() % row;
int y=rand() % col;
if (arr[x][y] == ' ') {
arr[x][y] = '#';
}
else {
computer_play(arr);
}
}
int win(char arr[row][col]) {//输赢判断
int i = 0; int j;
for (i = 0; i < row; i++) {
if (arr[i][0] == arr[i][1] && arr[i][2] == arr[i][1]&& arr[i][1]!=' ') {
return 0;
}
}
for (j = 0; j < col; j++) {
if (arr[0][j] == arr[1][j] && arr[1][j] == arr[2][j]&& arr[2][j]!=' ') {
return 0;
}
}
if (arr[0][0] == arr[1][1] && arr[1][1] == arr[2][2]&& arr[2][2]!=' ') {
return 0;
}
if (arr[0][2] == arr[1][1] && arr[1][1] == arr[2][0]&& arr[2][0]!=' ') {
return 0;
}
return 1;
}
int isfull(char arr[row][col]) {//判断棋盘是否满
int i = 0, j = 0;
for (i = 0; i < row; i++) {
for (j = 0; j < col; j++) {
if (arr[i][j] == ' ')
return 1;
}
}
return 0;
}
int playgame(){
srand((unsigned)time(NULL));
char arr[row][col] = { 0 };
board_init(arr);
board_show(arr);
while (isfull(arr)) {
if (isfull(arr)) {
people_play(arr);
system("CLS");
board_show(arr);
if (!win(arr)) {
printf("玩家赢\n");
return 0;
}
}
if (isfull(arr)) {
computer_play(arr);
system("CLS");
board_show(arr);
if (!win(arr)) {
printf("电脑赢\n");
return 0;
}
}
}
printf("平局\n");
}
test.c//控制游戏开始和结束
#include "game.h"
int main() {
int input = 1;
do {
menu();
printf("请输入:");
scanf("%d", &input);
switch (input) {
case 1:
playgame();
break;
case 0:
return;
default:
printf("输入错误请重新输入");
break;
}
} while (1);
}
运行截图太麻烦录了个视频主页里有想看可以看,