game.c文件
#include "game.h"
void menu() {
printf("----------------------\n");
printf("-----1.play 0.exit----\n");
printf("----------------------\n");
}
void print(char board[ROW][COL]) {
int i = 0, j = 0;
for (j = 0; j < COL; j++) {
for (i = 0; i < ROW; i++) {
printf(" %c ", board[j][i]);
if (i < ROW - 1)
printf("|");
}printf("\n");
if (j < COL - 1) {
for (i = 0; i < ROW; i++) {
printf("---");
if (i < ROW - 1)
printf("|");
}printf("\n");
}
}
printf("\n");
}
void change(char board[ROW][COL]) {
int i = 0, j = 0;
for (i = 0; i < ROW; i++) {
for (j = 0; j < COL; j++) {
board[i][j] = ' ';
}
}
}
void player(char board[ROW][COL]) {
printf("玩家下棋\n");
while (1) {
int x = 0, y = 0;
scanf("%d %d", &x, &y);
if (x > ROW || x < 0 || y>COL || y < 0) {
printf("输入有误,请重新输入\n");
continue;
}
if (board[x - 1][y - 1] == ' ') {
board[x - 1][y - 1] = '*';
print(board);
break;
}
else
printf("该位置已经填入东西,错误");
}
}
void computer(char board[ROW][COL]) {
printf("电脑下棋\n");
while (1) {
int x = rand() % 3;
int y = rand() % 3;
if (board[x][y] == ' ') {
board[x][y] = '#';
print(board);
break;
}
}
}
char ifwin(char board[ROW][COL]) {
int i = 0, j = 0;
int cnt = 0;
for (j = 0; j < COL; j++) {
cnt = 0;
for (i = 0; i < ROW - 1; i++) {
if (board[i][j] == board[i + 1][j] && board[i][j] == '*')
cnt++;
if (cnt == ROW - 1)
return '*';
}
}
for (i = 0; i < ROW; i++) {
cnt = 0;
for (j = 0; j < COL - 1; j++) {
if (board[i][j] == board[i][j + 1] && board[i][j] == '*')
cnt++;
if (cnt == ROW - 1)
return '*';
}
}
for (i = 0, cnt = 0; i < ROW - 1; i++) {
if (board[i][i] == board[i + 1][i + 1] && board[i][i] == '*')
cnt++;
if (cnt == ROW - 1)
return '*';
}
return 'c';
}
char iffail(char board[ROW][COL]) {
int i = 0, j = 0;
int cnt = 0;
for (j = 0; j < COL; j++) {
cnt = 0;
for (i = 0; i < ROW - 1; i++) {
if (board[i][j] == board[i + 1][j] && board[i][j] == '#')
cnt++;
if (cnt == ROW - 1)
return '#';
}
}
for (i = 0; i < ROW; i++) {
cnt = 0;
for (j = 0; j < COL - 1; j++) {
if (board[i][j] == board[i][j + 1] && board[i][j] == '#')
cnt++;
if (cnt == ROW - 1)
return '#';
}
}
for (i = 0, cnt = 0; i < ROW - 1; i++) {
if (board[i][i] == board[i + 1][i + 1] && board[i][i] == '#')
cnt++;
if (cnt == ROW - 1)
return '#';
}
return 'c';
}
char goon(char board[ROW][COL]) {
int i = 0, j = 0;
for (i = 0; i < ROW; i++) {
for (j = 0; j < COL; j++) {
if (board[i][j] == ' ')
return 'c';
}
}
return 'C';
}
void gameing(char board[ROW][COL]) {
int ret = 'c';
while (ret == 'c') {
player(board);
ret = ifwin(board);
if (ret == '*') {
printf("玩家赢了\n");
print(board);
break;
}
computer(board);
ret = iffail(board);
if (ret == '#') {
printf("电脑赢了\n");
print(board);
break;
}
ret = goon(board);
if (ret == 'C') {
printf("平局\n");
print(board);
break;
}
}
}
void game() {
char board[ROW][COL] = { 0 };
change(board);
print(board);
gameing(board);
}
game.h文件
#pragma once
#include <stdio.h>
#define ROW 3
#define COL 3
#include <time.h>
void menu();
void print(char board[ROW][COL]);
void game();
void change(char board[ROW][COL]);
test.c文件
#include "game.h"
int main() {
srand((unsigned int)time(NULL));
int input = 1;
while (input) {
menu();
scanf("%d", &input);
switch (input) {
case 1:
game();
break;
case 0:
break;
default:
printf("您的输入有误");
}
}
}