简单的五子棋程序(可悔棋版和普通版)
来源:互联网 发布:sql视图是什么 编辑:程序博客网 时间:2024/04/19 10:01
//普通版
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
#define N 8
void display(char (* p)[N])
{
system("cls");
int i,j;
for(i=0; i<N; i++)
{
for(j=0; j<N; j++)
{
printf("%c\t",p[i][j]);
}
printf("\n\n\n");
}
}
void downchess(char (* p)[N])
{
char black='#';
char white='@';
char h;
int i,j,num=0;
do
{
if(num%2==0)
{
h=black;
}
else
{
h=white;
}
printf("%c方请输入落子坐标的行和列:",h);
scanf("%d%d",&i,&j);
if (p[i][j]!='.')continue;
p[i][j]=h;
display(p);
// if(judje(p,i,j)==1)
// {
//
// break;
// }
num++;
}
while(judje(p,i,j)==0);
printf("%c方胜利\n",h);
}
int judje(char (* p)[N],int a,int b)
{
int sum=0;
int j=0,i=1;
//判断行向
for(;;)
{
if(p[a][b-j]==p[a][b])
{
sum++;
j++;
}
else if(p[a][b+i]==p[a][b])
{
sum++;
i++;
}
else
break;
}
if(sum==5)
return 1;
//判断纵向
sum=0;j=0;i=1;
for(;;)
{
if(p[a-j][b]==p[a][b])
{
sum++;
j++;
}
else
if(p[a+i][b]==p[a][b])
{
sum++;
i++;
}
else break;
}
if(sum==5)
return 1;
//判断右对角
sum=0;j=0;i=1;
for(;;)
{
if(p[a-j][b+j]==p[a][b])
{
sum++;
j++;
}
else
if(p[a+i][b-i]==p[a][b])
{
sum++;
i++;
}
else break;
}
if(sum==5)
return 1;
sum=0;j=0;i=1;
// 判断左对角
for(;;)
{
if(p[a+j][b+j]==p[a][b])
{
sum++;
j++;
}
else
if(p[a-i][b-i]==p[a][b])
{
sum++;
i++;
}
else break;
}
if(sum==5)
return 1;
else return 0;
}
int main()
{
int i,j;
char chess[N][N];
int n=48,k=49;
for(i=0; i<N; i++)
{
for(j=0; j<N; j++)
{
if(i==0)
{
chess[i][j]=n;
n++;
}
else if(j==0)
{
chess[i][j]=k;
k++;
}
else
chess[i][j]='.';
}
}
display(chess);
downchess(chess);
return 0;
}
//可悔棋版
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
#define N 8
void display(int (* p)[N])
{
system("cls");
int i,j;
char qipan[N][N];
char black='#';
char white='@';
char null='.';
for(i=0; i<N; i++)
{
for(j=0; j<N; j++)
{
if(p[i][j]%2==0)
qipan[i][j]=black;
else if(p[i][j]%2==1)
qipan[i][j]=white;
else qipan[i][j]=null;
}
}
for(i=-1; i<N; i++)
{
printf("%d\t",i);
} printf("\n\n\n");
for(i=0; i<N; i++)
{
printf("%d\t",i);
for(j=0; j<N; j++)
{
printf("%c\t",qipan[i][j]);
}
printf("\n\n\n");
}
}
void downchess(int (* p)[N])
{
char h;
char black='#';
char white='@';
int i,j,num=0;
do
{
if(num%2==0)
{
h=black;
}
else
{
h=white;
}
printf("%c方请输入落子坐标的行和列:",h);
scanf("%d%d",&i,&j);
if (p[i][j]!=-1)continue;
p[i][j]=num;
display(p);
int choose;
do
{
printf("悔棋请按2,继续请按1:");
scanf("%d",&choose);
switch(choose)
{
case 1: break;
case 2:
huiqi(p,num);
num--;
display(p);
default : break;
}
}while(choose!=1);
num++;
}
while(judje(p,i,j,num-1)==0);
printf("%c方胜利\n",h);
}
void huiqi(int (* p)[N],int num)
{
int i,j;
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
if(p[i][j]==num)
p[i][j]=-1;
}
}
}
int judje(int (* p)[N],int a,int b,int num)
{
int sum=0;
int j=0,i=1;
//判断行向
for(;;)
{
if(p[a][b-j]%2==num%2&&p[a][b-j]!=-1)
{
sum++;
j++;
}
else if(p[a][b+i]%2==num%2&&p[a][b+i]!=-1)
{
sum++;
i++;
}
else
break;
}
if(sum==5)
return 1;
//判断纵向
sum=0;j=0;i=1;
for(;;)
{
if(p[a-j][b]%2==num%2&&p[a-j][b]!=-1)
{
sum++;
j++;
}
else
if(p[a+i][b]%2==p[a][b]%2&&p[a+i][b]!=-1)
{
sum++;
i++;
}
else break;
}
if(sum==5)
return 1;
//判断右对角
sum=0;j=0;i=1;
for(;;)
{
if(p[a-j][b+j]%2==num%2&&p[a-j][b+j]!=-1)
{
sum++;
j++;
}
else
if(p[a+i][b-i]%2==num%2&&p[a+i][b-i]!=-1)
{
sum++;
i++;
}
else break;
}
if(sum==5)
return 1;
sum=0;j=0;i=1;
// 判断左对角
for(;;)
{
if(p[a+j][b+j]%2==num%2&&p[a+j][b+j]!=-1)
{
sum++;
j++;
}
else
if(p[a-i][b-i]%2==num%2&&p[a-i][b-i]!=-1)
{
sum++;
i++;
}
else break;
}
if(sum==5)
return 1;
else return 0;
}
int main()
{
int i,j;
int chess[N][N];
for(i=0; i<N; i++)
{
for(j=0; j<N; j++)
{
chess[i][j]=-1;
}
}
display(chess);
downchess(chess);
return 0;
}
- 简单的五子棋程序(可悔棋版和普通版)
- Qt版可悔棋2048
- 关于AS3.0 五子棋悔棋功能和五子棋复盘功能的实现
- 简单AI的五子棋程序
- 一个简单的五子棋程序
- 简单的五子棋游戏程序:
- Hbulider创建项目做基于html5的五子棋游戏(编写五子棋简单版二)
- C#版五子棋程序
- Java版五子棋程序
- 简单五子棋(单机版-C)
- 人工智能实现简单的五子棋程序
- 五子棋游戏-2(落子与悔棋)
- 给五子棋加个功能叫悔棋
- C和WIN32 API 的五子棋 程序
- android游戏开发之我的小小游戏1——五子棋游戏3之悔棋与重新开始
- 简单的五子棋(人人对战)
- 简单的小型五子棋
- 五子棋的简单AI
- 求乘法逆元
- 禅道项目管理工具部署
- 用go实现linux命令行
- django manage.py扩展自定义命令
- ElasticSearch 5.1.1安装
- 简单的五子棋程序(可悔棋版和普通版)
- 仿真学习心得
- mysql学习之路09-触发器
- 两个数求和
- VS2015编译Python2.7.14源码(失败)
- C# Dictionary
- Test 2017.10.09
- 路由
- Windows环境如何安装与CSDN CODE相关联的git环境