这是包含主函数的text.c
#define _CRT_SECURE_NO_WARNINGS
#define _CRT_SECURE_NO_DEPRECATE
#pragma warning(disable:4996)
#include<stdio.h>
#include"game.h"
void menu()
{
printf("******************************\n");
printf("***** 1,play *****\n");
printf("***** 2,exit *****\n");
printf("******************************\n");
}
int main()
{
menu();
int a = 0;
do
{
scanf("%d", &a);
switch (a)
{
case 1:
{
system("cls");
printf("进入三子棋游戏\n请选择游戏模式\n");
printf("******************************\n");
printf("***** 1,PVP ******\n");
printf("***** 2,BOT ******\n");
printf("***** 0,EXIT ******\n");
printf("******************************\n");
int b = 0;
scanf("%d", &b);
switch (b)
{
case 1:
{
char arr[ROW][COL];
system("cls");
initializeBoard(arr, ROW, COL);
displaybBoard(arr, ROW, COL);
do
{
PLAYER1IO(arr, ROW, COL);
displaybBoard(arr, ROW, COL);
int c = isWin(arr, ROW, COL);
if (c == 1)
{
printf("胜利\n");
break;
}
else if (c == 3)
{
printf("平局\n");
break;
}
} while (1);
break;
}
case 2:
{
char arr[ROW][COL];
system("cls");
initializeBoard(arr, ROW, COL);
displaybBoard(arr, ROW, COL);
do
{
PLAYER2IO(arr, ROW, COL);
displaybBoard(arr, ROW, COL);
int c = isWin(arr, ROW, COL);
if (c == 1)
{
printf("胜利\n");
break;
}
else if (c == 3)
{
printf("平局\n");
break;
}
BOTIO(arr, ROW, COL);
displaybBoard(arr, ROW, COL);
c = isWin(arr, ROW, COL);
if (c == 1)
{
printf("人工智能胜利\n");
break;
}
else if (c == 3)
{
printf("平局\n");
break;
}
} while (1);
}
}
break;
}
case 0:
{
printf("退出三子棋游戏\n");
break;
}
default:
{
printf("请重新输入\n");
break;
}
}
} while (a);
return 0;
}
这是执行三子棋内部程序game.c
#define _CRT_SECURE_NO_WARNINGS
#define _CRT_SECURE_NO_DEPRECATE
#pragma warning(disable:4996)
#include<stdio.h>
#include<Windows.h>
#include"game.h"
char fo = ' ';
void initializeBoard(char arr[ROW][COL], int row, int col)
{
for (int i1=0;i1<row;i1++)
{
for (int i2=0;i2<col;i2++)
{
arr[i1][i2] = ' ';
}
}
}
void displaybBoard(char arr[ROW][COL], int row, int col)
{
for (int i1 = 0; i1 < row; i1++)
{
for (int i2 = 0; i2 < col; i2++)
{
if (i2!=col-1)
{
printf("%c |",arr[i1][i2]);
}
else if (i2==col-1)
{
printf("%c \n", arr[i1][i2]);
}
}
if (i1!=row-1)
{
for (int i3 = 0; i3 < col; i3++)
{
printf("---");
if (i3 != col - 1)
{
printf("|");
}
}
}
printf("\n");
}
}
void gameIO(char arr[ROW][COL], int row, int col)
{
int x, y;
printf("please input your X");
scanf("%d",&x);
printf("please input your Y");
scanf("%d", &y);
arr[x][y] = 'f';
}
void PLAYER1IO(char arr[ROW][COL], int row, int col)
{
int x, y;
io1:
puts("PLAYER 1:please input your position(x,y)(x,y坐标从一开始)");
scanf("%d%d",&x,&y);
if (arr[x - 1][y - 1] ==' ')
{
system("cls");
arr[x-1][y-1] = '0';
}
else
{
puts("your place has used,please try again.");
goto io1;
}
}
void PLAYER2IO(char arr[ROW][COL], int row, int col)
{
int x, y;
io1:
puts("PLAYER 2:please input your position(x,y)(x,y坐标从一开始)");
scanf("%d%d", &x, &y);
if (x>=1&&x<=row+1&&y>=1&&y<=col+1)
{
if (arr[x-1][y-1]==' ')
{
system("cls");
arr[x-1][y-1] = 'X';
}
else
{
puts("your place has used,please try again.");
goto io1;
}
}
else
{
puts("please try again.");
goto io1;
}
}
int isWin(char arr[ROW][COL], int row, int col)
{
for (int i1=0;i1<row;i1++)
{
if (arr[i1][0]==arr[i1][1]&&arr[i1][0]==arr[i1][2]&&arr[i1][0]!=' ')
{
return 1;
break;
}
}
for (int i2 = 0; i2< col; i2++)
{
if(arr[0][i2]==arr[1][i2]&&arr[0][i2]==arr[2][i2]&&arr[0][i2]!=' ')
{
return 1;
break;
}
}
int v1=0;
for (int i3 = 0; i3 < row; i3++)
{
for (int i4= 0; i4 < col; i4++)
{
if (arr[i3][i4]!=' ')
{
v1++;
}
}
}
if (v1==row*col)
{
return 3;
}
if (arr[0][0] == arr[1][1] && arr[0][0] == arr[2][2] && arr[0][0] != ' ')
{
return 1;
}
else if (arr[0][2] == arr[1][1] && arr[0][2] == arr[2][0] && arr[0][2] != ' ')
{
return 1;
}
else
return 0;
}
int BOTIO(char arr[ROW][COL], int row, int col)
{
printf("BOT thinking");
for (int i=0;i<10;i++)
{
Sleep(130);
printf("_");
}
int a = 0;
for (int i1 = 0; i1 < row; i1++)
{
for (int i2 = 0; i2 < col; i2++)
{
if (arr[i1][i2]==' ')
{
system("cls");
arr[i1][i2] = '0';
a = 1;
break;
}
}
if (a==1)
{
break;
}
}
}
这是game.c的头文件game.h
#pragma once
#define ROW 3
#define COL 3
void initializeBoard(char arr[ROW][COL], int row, int col);
void displaybBoard(char arr[ROW][COL], int row, int col);
void gameIO(char arr[ROW][COL], int row, int col);
void PLAYER1IO(char arr[ROW][COL], int row, int col);
void PLAYER2IO(char arr[ROW][COL], int row, int col);
int isWin(char arr[ROW][COL], int row, int col);
int BOTIO(char arr[ROW][COL], int row, int col);
3379

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



