#ifndef __GAME_H__
#define __GAME_H__
void game();
void CheckerBoard(char arr[3][3]);
void PrintArr(char arr[3][3]);
void Computer(char arr[3][3]);
void Player(char arr[3][3]);
void IsWin(char arr[3][3]);
void Determine(char arr[3][3]);
#endif//__GAME_H__
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#include"game.h"
//棋盘初始化函数
void CheckerBoard(char arr[3][3])
{
int m = 0;
int n = 0;
for(m=0;m<3;m++)
{
for(n=0;n<3;n++)
{
arr[m][n] = ' ';
}
}
}
//打印棋盘函数
void PrintArr(char arr[3][3])
{
int i = 0;
for(i=0;i<3;i++)
{
printf(" %c | %c | %c \n",arr[i][0],arr[i][1],arr[i][2]);
if(i != 2)
{
printf("---|---|---\n");
}
}
}
//电脑下棋函数
void Computer(char arr[3][3])
{
int n = 0;
int m = 0;
srand((unsigned int)time(NULL));
n = rand()%3;
m = rand()%3;
while(arr[m][n] != ' ')
{
n = rand()%3;
m = rand()%3;
}
arr[m][n] = '*';
}
//玩家下棋函数
void Player(char arr[3][3])
{
int x = 0;
int y = 0;
while(1)
{
printf("请输入坐标\n");
scanf("%d%d",&x,&y);
if(x>=1 && x<=3 && y>=1 && y<=3 && arr[x-1][y-1] == ' ')
{
arr[x-1][y-1] = '#';
break;
}
else
{
printf("输入错误\n");
}
}
//start:
// printf("请输入坐标\n");
// scanf("%d%d",&x,&y);
//
// if((x>3)||(y>3)||(0 == x)||(0 == y)||(arr[x-1][y-1] != ' '))
// {
// printf("输入错误\n");
// goto start;
//
// }
// else
// {
// arr[x-1][y-1] = '#';
//
// }
}
//判断棋盘满和是否平局的 函数
void Determine(char arr[3][3])
{
int i = 0;
int j = 0;
int count = 0;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
if(arr[i][j] != ' ')
{
count++;
}
}
}
//printf("count = %d\n", count);
if(9 == count)
{
printf("平局\n");
printf("棋盘满了\n");
exit(0);
}
}
//判断谁赢的函数
void IsWin(char arr[3][3])
{
if(arr[0][0]==arr[0][1] && arr[0][1]==arr[0][2] && arr[0][0]=='*'||
arr[1][0]==arr[1][1] && arr[1][1]==arr[1][2] && arr[1][0]=='*'||
arr[2][0]==arr[2][1] && arr[2][1]==arr[2][2] && arr[2][0]=='*'||
arr[0][0]==arr[1][0] && arr[1][0]==arr[2][0] && arr[0][0]=='*'||
arr[0][1]==arr[1][1] && arr[1][1]==arr[2][1] && arr[0][1]=='*'||
arr[0][2]==arr[1][2] && arr[1][2]==arr[2][2] && arr[0][2]=='*'||
arr[0][0]==arr[1][1] && arr[1][1]==arr[2][2] && arr[0][0]=='*'||
arr[0][2]==arr[1][1] && arr[1][1]==arr[2][0] && arr[0][2]=='*')
{
printf("电脑赢\n");
exit(0);
}
if(arr[0][0]==arr[0][1] && arr[0][1]==arr[0][2] && arr[0][0]=='#'||
arr[1][0]==arr[1][1] && arr[1][1]==arr[1][2] && arr[1][0]=='#'||
arr[2][0]==arr[2][1] && arr[2][1]==arr[2][2] && arr[2][0]=='#'||
arr[0][0]==arr[1][0] && arr[1][0]==arr[2][0] && arr[0][0]=='#'||
arr[0][1]==arr[1][1] && arr[1][1]==arr[2][1] && arr[0][1]=='#'||
arr[0][2]==arr[1][2] && arr[1][2]==arr[2][2] && arr[0][2]=='#'||
arr[0][0]==arr[1][1] && arr[1][1]==arr[2][2] && arr[0][0]=='#'||
arr[0][2]==arr[1][1] && arr[1][1]==arr[2][0] && arr[0][2]=='#')
{
printf("玩家赢\n");
exit(0);
}
}
void game()
{
int line = 3;
int row = 3;
char board[3][3] = {0};
CheckerBoard(board);//设置棋盘函数
//PrintArr(board);//打印棋盘
printf("电脑先走\n");
while(1)
{ printf("电脑走\n");
Computer(board);
PrintArr(board);
IsWin(board);
Determine(board);
printf("玩家走\n");
Player(board);
PrintArr(board);
IsWin(board);
Determine(board);
}
}
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include"game.h"
enum
{
PLAY,
EXIT,
};
void menu()
{
printf("*************************\n");
printf("****1.play 0.exit****\n");
printf("*************************\n");
}
int main()
{
int input;
do
{
menu();
printf("请选择\n");
scanf("%d",&input);
switch(input)
{
case 0:
break;
case 1:
game();
break;
default:
printf("选择错误\n");
break;
}
}
while(input)
;
return 0;
}
三子棋
最新推荐文章于 2022-11-10 14:31:26 发布