棋盘游戏(三子棋)
2016-07-23 14:27
246 查看
棋盘游戏(三子棋)
#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;
}
#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;
}
相关文章推荐
- ViewGroup.LayoutParams
- 嵌入式 Linux下永久生效环境变量bashrc
- 多媒体文件格式之FLV
- 第一周学习笔记4
- poj 1088 / 3624两道简单DP
- iOS笔记 页面切换 CATransition Animation动画
- webpack知识梳理
- cocos2dx.3.x之重要类分析(1)——Ref
- Ubuntu解压缩zip,tar,tar.gz,tar.bz2
- vim编辑器重新打开文本,回到上次编辑的位置
- ContentProvider 操作小实例 (了解)
- iOS - 小文件下载篇(边下载边写入文件)
- Windows应用程序对键盘与鼠标的响应
- 链表面试笔试题目总结
- Ubuntu 1604更新软件提示W
- 基于MVC+EasyUI的Web开发框架经验总结(17)--布局和对话框自动适应大小的处理
- HDU 5739 Fantasia(tarjan)
- Codeforces Round #364 (Div. 2) E DFS
- Android 全仿To圈儿个人资料界面层叠淡入淡出显示效果
- css的绝对定位与相对定位