java五子棋判断输赢算法
2016-07-08 00:41
1316 查看
用一个二维数组先将棋盘存储,已下的白棋标为1,已下的黑棋标为2,未下的棋全部为0。
此时,先来判断横向输赢,即当横向有五个1或五个2连在一起即判断为赢
先向右寻找
//棋子数从一开始
int count=1;
while(true)
{
x1= x1+1;
int value = chess[x1][y1];
//如果相同,则继续向后对比
if(value == chess[x][y];)
{
count++;
}
else
{
break;
}
x1 =x;
y1 = y;
然后向右边寻找
while(true)
{
x1 = x1-1;
// xiangzuohuoqu
int value =chess[x1][y1];
//颜色不一致
if(value == chess[x][y])
{
count++;
}
else
{
break;
}
}
//如果数目达到5或者大于五,就判定为赢
if(count >= 5)
{
return true;
}
}
同理,竖向的就是将y1改变,x1不变
斜向就是将x1,y1同时改变
这样一共分为四种情况:横向相等,竖向相等,左斜相等,右斜相等,每种情况需要分为两个部分的查找
那么,可以用一种更为简单的方法来判断输赢,定义一个三维数组,参数分别为横向需改变的,竖向需改变的,以及斜向需改变的
然后用一个三重循环来对这些改变进行设置,依次实现对横竖斜的判断!
此时,先来判断横向输赢,即当横向有五个1或五个2连在一起即判断为赢
先向右寻找
//棋子数从一开始
int count=1;
while(true)
{
x1= x1+1;
int value = chess[x1][y1];
//如果相同,则继续向后对比
if(value == chess[x][y];)
{
count++;
}
else
{
break;
}
x1 =x;
y1 = y;
然后向右边寻找
while(true)
{
x1 = x1-1;
// xiangzuohuoqu
int value =chess[x1][y1];
//颜色不一致
if(value == chess[x][y])
{
count++;
}
else
{
break;
}
}
//如果数目达到5或者大于五,就判定为赢
if(count >= 5)
{
return true;
}
}
同理,竖向的就是将y1改变,x1不变
斜向就是将x1,y1同时改变
这样一共分为四种情况:横向相等,竖向相等,左斜相等,右斜相等,每种情况需要分为两个部分的查找
那么,可以用一种更为简单的方法来判断输赢,定义一个三维数组,参数分别为横向需改变的,竖向需改变的,以及斜向需改变的
然后用一个三重循环来对这些改变进行设置,依次实现对横竖斜的判断!
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树