C++——黑白棋(落子)
来源:互联网 发布:微信载入数据失败 编辑:程序博客网 时间:2024/04/30 07:57
黑白棋(落子)
时限:1000ms 内存限制:10000K 总时限:3000ms
描述:
经过前3题的热身相信大家已经对黑白棋有了一定的认识,下面我们来编写稍微复杂一点的模块。黑白棋并不像5子棋或者围棋一样可以在任意空白处下子,那么检测某个位置是否可以下子(如对规则还不是很了解,请参照前3题的规则介绍),也是我们黑白棋AI算法会经常调用的模块。下面需要同学们编写这一检测模块。
输入:
首先读入的是当前棋盘的状态,共8行,每行8个数字,1代表白棋,2代表黑棋,0代表为空格(未下子)。第9行有3个数字R C N,分别代表给定点的行、列还有所要下子的颜色。
输出:
输出对于这个位置是否可以落子,可以输出Yes,不可以则输出No.
输入样例:
0 0 0 0 0 0 0 00 0 0 0 0 0 1 00 0 0 2 0 2 0 00 0 1 2 2 2 0 00 0 0 2 1 0 0 00 0 0 2 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 02 4 1
输出样例:
Yes
#include<iostream>
using namespace std;
int shang();int xia();int zuo();int you();int zuoshang();int youshang();int zuoxia();int youxia();
int qipan[8][8];int row,col,color;
int main(){ int i,j;
for(i=0;i<8;i++) { for(j=0;j<8;j++) { cin>>qipan[i][j]; } } cin>>row; cin>>col; cin>>color;
if(shang()||xia()||zuo()||you()||zuoshang()||youshang()||zuoxia()||youxia()) { cout<<"Yes"<<endl; } else { cout<<"No"<<endl; }
return 0;}
//判断向上方向是否可连线
int shang(){ int i,counter,flag;
counter=1; flag=0;
for(i=row-1;i>=0;i--) { if(qipan[i][col]!=color&&qipan[i][col]!=0) { counter++; } else { break; } } if(counter>1&&i>=0&&qipan[i][col]==color) { flag=1; } return(flag);}
//判断向下int xia(){ int i,counter,flag;
counter=1; flag=0;
for(i=row+1;i<8;i++) { if(qipan[i][col]!=color&&qipan[i][col]!=0) { counter++; } else { break; } } if(counter>1&&i<8&&qipan[i][col]==color) { flag=1; } return(flag);}
//判断向左
int zuo(){ int i,counter,flag;
counter=1; flag=0;
for(i=col-1;i>=0;i--) { if(qipan[row][i]!=color&&qipan[row][i]!=0) { counter++; } else { break; } } if(counter>1&&i>=0&&qipan[row][i]==color) { flag=1; } return(flag);}
//判断向右
int you(){ int i,counter,flag;
counter=1; flag=0;
for(i=col+1;i<8;i++) { if(qipan[row][i]!=color&&qipan[row][i]!=0) { counter++; } else { break; } } if(counter>1&&i<8&&qipan[row][i]==color) { flag=1; } return(flag);}
//判断左上
int zuoshang(){ int i,j,counter,flag,flag1;
counter=1; flag=0; flag1=0;
for(i=row-1;i>=0;i--) { for(j=col-1;j>=0;j--) { if(row-i==col-j) { if(qipan[i][j]!=color&&qipan[i][j]!=0) { counter++; } else { flag1=1; break; } } } if(flag1==1) { break; } } if(counter>1&&i>=0&&j>=0&&qipan[i][j]==color) { flag=1; } return(flag);}
//判断右上
int youshang(){ int i,j,counter,flag,flag1;
counter=1; flag=0; flag1=0;
for(i=row-1;i>=0;i--) { for(j=col+1;j<8;j++) { if(row-i==j-col) { if(qipan[i][j]!=color&&qipan[i][j]!=0) { counter++; } else { flag1=1; break; } } } if(flag1==1) { break; } } if(counter>1&&i>=0&&j<8&&qipan[i][j]==color) { flag=1; } return(flag);}
//判断左下
int zuoxia(){ int i,j,counter,flag,flag1;
counter=1; flag=0; flag1=0;
for(i=row+1;i<8;i++) { for(j=col-1;j>=0;j--) { if(i-row==col-j) { if(qipan[i][j]!=color&&qipan[i][j]!=0) { counter++; } else { flag1=1; break; } } } if(flag1==1) { break; } } if(counter>1&&i<8&&j>=0&&qipan[i][j]==color) { flag=1; } return(flag);}
//判断右下
int youxia(){ int i,j,counter,flag,flag1;
counter=1; flag=0; flag1=0;
for(i=row+1;i<8;i++) { for(j=col+1;j<8;j++) { if(i-row==j-col) { if(qipan[i][j]!=color&&qipan[i][j]!=0) { counter++; } else { flag1=1; break; } } } if(flag1==1) { break; } } if(counter>1&&i<8&&j<8&&qipan[i][j]==color) { flag=1; } return(flag);}
- C++——黑白棋(落子)
- 黑白棋(落子)
- 黑白棋的落子
- C++——黑白棋(向左)
- C++——黑白棋(右上)
- C++——黑白棋(final)
- C++——黑白棋(连续子个数)
- C++——黑白棋(状态改变)
- C++——黑白棋(基础模块)
- C++——又是黑白棋
- 黑白棋(落子)绞尽脑汁 与老师模式强烈不兼容的思路(不推荐)
- UVA220 ——黑白棋(Othello)
- java-----五子棋小游戏(二)-----黑白棋落子制作
- 黑白棋求使新状态己方子最多的落子位置
- c语言图形小游戏(黑白棋)
- C黑白棋
- 黑白棋 C语言
- 黑白棋代码——完结版
- H
- C++——黑白棋(右上)
- Android-X86 创始人
- python基础知识
- 使用Gson解析Json为Map对象探索(下)
- C++——黑白棋(落子)
- css3 中transition监听事件
- Python 爬虫项目示例
- Sublime Text3如何解决乱码
- 产品经理之互联网产品流程设计
- Closure
- Volatile关键字总结
- 《弃子长安》第十章 血染胡杨
- Maven学习总结系列二:Maven的安装和配置