棋盘游戏(三子棋)
#include <stdio.h>
#include<stdlib.h>
#include<Windows.h>
enum op{
EXIT,
PLAY
};
void menu()
{
printf("*****************************************\n");
printf("***************棋盘游戏****************\n");
printf("************0.exit 1.play***************\n");
printf("*****************************************\n");
}
void init(int arr[][3])
{
int i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
arr[i][j]=' ';
}
void print_game(int arr[][3])
{
int i = 0;
for(i=0;i<3;i++)
{
printf(" %c | %c | %c ",arr[i][0],arr[i][1],arr[i][2]);
if(i!=2)
printf("\n---|---|---\n");
}
printf("\n");
}
int player_move(int arr[][3])
{
int x = 0;
int y = 0;
printf("玩家请输入棋子坐标:");
scanf("%d%d",&x,&y);
while(1)
{
if(x<=3&&y<=3)
{
x--;
y--;
arr[x][y]='x';
break;
}
else
{
printf("您所输入的坐标越界了,请重新输入:");
scanf("%d%d",&x,&y);
}
}
}
int computer_move(int arr[][3])
{
int x = 0;
int y = 0;
int i = 0;
int j = 0;
printf("该我啦:\n");
x=rand()%3;
y=rand()%3;
for( i=0;i<3;i++)
for(j=0;j<3;j++)
{
if((arr[x][y]!=' ')&&(arr[x][y]=='x'))
{
x=rand()%3;
y=rand()%3;
continue;
}
else
arr[x][y]='0';
}
}
int check_win(int arr[][3])
{
int i = 0;
for( i=0;i<3;i++)
{
if((arr[i][0]=='x')&&(arr[i][1]=='x')&&(arr[i][2]=='x')
||(arr[0][i]=='x')&&(arr[1][i]=='x')&&(arr[2][i]=='x')
||(arr[0][0]=='x')&&(arr[1][1]=='x')&&(arr[2][2]=='x')
||(arr[0][2]=='x')&&(arr[i][1]=='x')&&(arr[2][0]=='x'))
{
printf("恭喜,你赢啦!\n");
return 0;
}
}
for( i=0;i<3;i++)
{
if((arr[i][0]=='0')&&(arr[i][1]=='0')&&(arr[i][2]=='0')
||(arr[0][i]=='0')&&(arr[1][i]=='0')&&(arr[2][i]=='0')
||(arr[0][0]=='0')&&(arr[1][1]=='0')&&(arr[2][2]=='0')
||(arr[0][2]=='0')&&(arr[i][1]=='0')&&(arr[2][0]=='0'))
{
printf("哈哈,我赢啦!\n");
return 0;
}
}
}
int main()
{
int arr[3][3]={0};
int ret = 0;
int input = 1;
int count1 = 0;
int count2 = 0;
while(input)
{ menu();
printf("请选择:");
scanf("%d",&input);
switch(input)
{ case EXIT:
printf("不玩!");
Sleep(1000);
break;
case PLAY:
printf("游戏开始啦!\n");
init(arr);
print_game(arr);
ret=check_win(arr);
while(ret!=0)
{
player_move(arr);
print_game(arr);
ret=check_win(arr);
computer_move(arr);
print_game(arr);
ret=check_win(arr);
}
}
}
system("pause");
return 0;
}