棋盘游戏(三子棋)

棋盘游戏(三子棋)

#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;

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值