五子棋学习(1)
来源:互联网 发布:js math.pow 编辑:程序博客网 时间:2024/05/17 18:45
//五子棋游戏双人版
#include<iostream>
#include<iomanip>
using namespace std;
const int X = 21; //棋盘行数
const int Y = 21; //棋盘列数
char p[X][Y]; //定义棋盘
int m=0;//定义临时点,保存输入坐标
int n=0;
void display() //输出棋盘
{
for(int j=0; j<Y; j++)
cout<<setw(3)<<setfill(' ')<<j;
cout<<endl;
for(int i=1; i<Y; i++)
{
cout<<setw(3)<<setfill(' ')<<i;//setw(x)设置输出字符位宽
for(int j=1;j<X;j++)
cout<<setw(3)<<setfill(' ')<<p[i][j];//setfill是设置填充填充字符
cout<<endl;
}
}
int black() //黑方落子
{
cout<<"请黑方输入落子位置:\n"
<<"请输入落子的行数:";
cin>>m;
cout<<"请输入落子的列数:";
cin>>n;
n=getche();
if(m<=0||m>=X||n>=Y||n<=0)
{
cout<<"超出棋盘范围,请重新输入正确坐标!\n";
black();
return 0;//防止一步多次清屏
}
else if((p[m][n]==65)||p[m][n]==66)
{
cout<<"该点已有棋子,请重新选取落子点!\n";
black();
return 0;//防止一步多次清屏
}
else
p[m][n]=66; //黑方用'B'来表示
system("cls");
display();
return 0;
}
int red() //白方落子
{
cout<<"请白方输入落子位置:\n"
<<"请输入落子的行数:";
cin>>m;
cout<<"请输入落子的列数:";
cin>>n;
if(m>=X||m<=0||n<=0||n>=Y)
{
cout<<"超出棋盘范围,请重新输入正确坐标!\n";
red();
return 0;//防止一步多次清屏
}
else if((p[m][n]==65)||p[m][n]==66)
{
cout<<"该点已有棋子,请重新选取落子点!\n";
red();
return 0;
}
else
p[m][n]=65; //白方用'A'来表示
system("cls");
display();
return 0;
}
#include<iomanip>
using namespace std;
const int X = 21; //棋盘行数
const int Y = 21; //棋盘列数
char p[X][Y]; //定义棋盘
int m=0;//定义临时点,保存输入坐标
int n=0;
void display() //输出棋盘
{
for(int j=0; j<Y; j++)
cout<<setw(3)<<setfill(' ')<<j;
cout<<endl;
for(int i=1; i<Y; i++)
{
cout<<setw(3)<<setfill(' ')<<i;//setw(x)设置输出字符位宽
for(int j=1;j<X;j++)
cout<<setw(3)<<setfill(' ')<<p[i][j];//setfill是设置填充填充字符
cout<<endl;
}
}
int black() //黑方落子
{
cout<<"请黑方输入落子位置:\n"
<<"请输入落子的行数:";
cin>>m;
cout<<"请输入落子的列数:";
cin>>n;
n=getche();
if(m<=0||m>=X||n>=Y||n<=0)
{
cout<<"超出棋盘范围,请重新输入正确坐标!\n";
black();
return 0;//防止一步多次清屏
}
else if((p[m][n]==65)||p[m][n]==66)
{
cout<<"该点已有棋子,请重新选取落子点!\n";
black();
return 0;//防止一步多次清屏
}
else
p[m][n]=66; //黑方用'B'来表示
system("cls");
display();
return 0;
}
int red() //白方落子
{
cout<<"请白方输入落子位置:\n"
<<"请输入落子的行数:";
cin>>m;
cout<<"请输入落子的列数:";
cin>>n;
if(m>=X||m<=0||n<=0||n>=Y)
{
cout<<"超出棋盘范围,请重新输入正确坐标!\n";
red();
return 0;//防止一步多次清屏
}
else if((p[m][n]==65)||p[m][n]==66)
{
cout<<"该点已有棋子,请重新选取落子点!\n";
red();
return 0;
}
else
p[m][n]=65; //白方用'A'来表示
system("cls");
display();
return 0;
}
int evalue()
{
int k = 0,r = 0;
//斜线判断
for(k=3;k<X-2;k++)
{
for(r=3;r<Y-2;r++)
{
if(p[k][r]!='-'&&p[k-2][r-2]==p[k][r]&&p[k-1][r-1]==p[k][r]&&p[k+1][r+1]==p[k][r]&&p[k+2][r+2]==p[k][r])
return 1;
else if(p[k][r]!='-'&&p[k+2][r-2]==p[k][r]&&p[k+1][r-1]==p[k][r]&&p[k-1][r+1]==p[k][r]&&p[k-2][r+2]==p[k][r])
return 1;
}
}
//横线判断
for(k=1;k<X;k++)
for(r=3;r<Y-2;r++)
if(p[k][r]!='-'&&p[k][r-2]==p[k][r]&&p[k][r-1]==p[k][r]&&p[k][r+1]==p[k][r]&&p[k][r+2]==p[k][r])
return 1;
//竖线判断
for(k=3;k<X-2;k++)
for(r=1;r<Y;r++)
if(p[k][r]!='-'&&p[k-2][r]==p[k][r]&&p[k-1][r]==p[k][r]&&p[k+1][r]==p[k][r]&&p[k+2][r]==p[k][r])
return 1;
return 0;
}
int main()
{
memset(p,'-',441); //初始化为‘-’//在一段内存块中填充某个给定的值
cout<<"欢迎使用简易双人对战五子棋游戏\n"
<<"五子棋棋谱如下:\n";
display();
while(1)
{
red();
if(evalue())
{
cout<<"白方赢!\n";
break;
}
black();
if(evalue())
{
cout<<"黑方赢!\n";
break;
}
}
return 0;
}
{
int k = 0,r = 0;
//斜线判断
for(k=3;k<X-2;k++)
{
for(r=3;r<Y-2;r++)
{
if(p[k][r]!='-'&&p[k-2][r-2]==p[k][r]&&p[k-1][r-1]==p[k][r]&&p[k+1][r+1]==p[k][r]&&p[k+2][r+2]==p[k][r])
return 1;
else if(p[k][r]!='-'&&p[k+2][r-2]==p[k][r]&&p[k+1][r-1]==p[k][r]&&p[k-1][r+1]==p[k][r]&&p[k-2][r+2]==p[k][r])
return 1;
}
}
//横线判断
for(k=1;k<X;k++)
for(r=3;r<Y-2;r++)
if(p[k][r]!='-'&&p[k][r-2]==p[k][r]&&p[k][r-1]==p[k][r]&&p[k][r+1]==p[k][r]&&p[k][r+2]==p[k][r])
return 1;
//竖线判断
for(k=3;k<X-2;k++)
for(r=1;r<Y;r++)
if(p[k][r]!='-'&&p[k-2][r]==p[k][r]&&p[k-1][r]==p[k][r]&&p[k+1][r]==p[k][r]&&p[k+2][r]==p[k][r])
return 1;
return 0;
}
int main()
{
memset(p,'-',441); //初始化为‘-’//在一段内存块中填充某个给定的值
cout<<"欢迎使用简易双人对战五子棋游戏\n"
<<"五子棋棋谱如下:\n";
display();
while(1)
{
red();
if(evalue())
{
cout<<"白方赢!\n";
break;
}
black();
if(evalue())
{
cout<<"黑方赢!\n";
break;
}
}
return 0;
}
阅读全文
0 0
- 五子棋学习(1)
- 五子棋学习(2)
- 学习五子棋
- j2se版五子棋(Demo学习总结)
- Android学习笔记:简易五子棋(上)
- Android学习笔记:简易五子棋(下)
- java学习(4) 五子棋 小程序
- 五子棋----1
- 慕课上学习的五子棋
- imooc学习笔记--五子棋
- JAVA学习--五子棋
- 简易五子棋详细Java源代码(1)
- 《华清远见学习手记》之 网络五子棋游戏QT类的设计与实现 (1)
- Java控制台五子棋编码学习
- 五子棋算法探讨1
- JavaScript 五子棋(1)
- 一步一步实现五子棋1
- 五子棋进展(10.23)
- ④设计模式之多例模式
- logstash-input-jdbc 同步原理及相关问题解读
- 版本控制之VSS(一)
- unity时间延迟方法总结(新人勿喷)
- 前端面试之---javascript作用域和闭包
- 五子棋学习(1)
- Leap Motion C++开发笔记(一)下载安装及环境配置
- 【九度OJ】1187:最小年龄的3个职工
- 【DP】51Nod 1052 最大M子段和
- 阅读源码流程
- 工厂模式
- PHP的最大递归层数
- codeforces 849A A.Odds and Ends
- 我的自我评价·担忧·困惑·反思(不断更新)