#开始

  最近在忙着做一个基于酷Q的QQ机器人,想到了做游戏,第一个想到的霸气点的游戏就是五子棋啊  ` _>`

  因为没有图形界面的原因 所有核心就是判断是否在棋盘上出现了五个棋子连在一起的情况 然后我想到了三种搜索方式 在这里展示出来

#效果

#判断五子代码

  

     public static int dudgeWin(int[][] qipan,int y,int x) //判断是否五个棋子连在一起了 如果0是黑棋赢了 -1是白棋赢了
{
int c = 0; //计数
int qi = qipan[y][x];
//上下
for(int i= 0 ;i<11;i++) //在所在的列中暴力搜索
{
if(qi == qipan[i][x])
{
c++; //遇到相同的棋子就加一
if(c>=5)
{
return qi;
}
}else
{
c = 0; //如果出现一个不同的 那就归一
}
} c = 0; //下面开始左右搜索
for(int i= 0 ;i<11;i++) //在所在的行中暴力搜索
{
if(qi == qipan[y][i])
{
c++; //遇到相同的棋子就加一
if(c>=5)
{
return qi;
}
}else
{
c = 0; //如果出现一个不同的 那就归一
}
} c = 0; // 平行于主对角线
if(x>y) //主对角线上
{
for(int i=0,j=x-y;i<11 && j<11;i++,j++)
{
if(qipan[i][j] == qi)
{
c++;
if(c >= 5)
{
return qi;
}
}else
{
c = 0;
}
}
}else if(x<y) //主对角线下
{
for(int i=y-x,j=0;i<11 && j<11;i++,j++)
{
if(qipan[i][j] == qi)
{
c++;
if(c >= 5)
{
return qi;
}
}else
{
c = 0;
}
}
}else //在主对角线上
{
for(int i=0,j=0;i<11 && j<11;i++,j++)
{
if(qipan[i][j] == qi)
{
c++;
if(c >= 5)
{
return qi;
}
}else
{
c = 0;
}
}
} c = 0; //平行于副对角线的搜索
for(int i=y,j=x;i>=0 && j<11;i--,j++)
{
if(qipan[i-1][j+1] == qi)
{
c++;
if(c >= 5)
{
return qi;
}
}else
{
break;
}
} for(int i=y,j=x;i<11 && j>=0;i++,j--)
{
if(qipan[i][j] == qi)
{
c++;
if(c >= 5)
{
return qi;
}
}else
{
break;
}
}
return -2; //没有胜利 那就是返回-2
}

  1. 水平和垂直方向都是搜索整列的方式 定义了个int c; 用来计数.

  2. 其实平行于对角线方向的判断也和水平方向差不多 只不过是倾斜的判断 依旧是搜索一整排 所以应该算作一种方法

  3. 平行于副对角线方向的这个搜索方法应该是效率最高的了吧 以副对角线为例  先依次判断右上角方向上的棋子 出现空位或者与当前下载的棋子的类型不一样的,那就结束判断,开始判断左下角方向上的棋子 遇到空位或者不同类型的棋子就退出计数

#备注

  1. 上面的代码仅仅提供思路 切记不要直接复制到自己的代码中 因为不一定合适

  2. 对完整的QQ机器人源码感兴趣的同学可以到这里查看源码: https://github.com/LonelySinging/new_QQRobot.git

  3. 上面的代码还不支持人机模式

  4. 有宝贵的建议请留言 谢谢

Java 判断五子棋五子相连的更多相关文章

  1. [Java]局域网五子棋

    提示: 下面给的代码有问题哦,可以自己去调试 可用版下载 请点击这里 密码:x6ve(退出程序,端口并没有被关闭,可自行修改代码实现) img

  2. 用Java写的简单五子棋游戏(原创五子连珠算法)

    源码jar包(已安装jdk环境可直接运行) 下载地址:http://download.csdn.net/detail/eguid_1/9532912 五子连珠算法为自创算法,对于五子棋该算法性能足以. ...

  3. Java的五子棋实现

    Java 五子棋 注:除机器人算法外其余借鉴于MLDN. package MyFiveChess; import robot.*; import java.awt.*; import javax.sw ...

  4. Java进阶(五)Java I/O模型从BIO到NIO和Reactor模式

    原创文章,同步发自作者个人博客,http://www.jasongj.com/java/nio_reactor/ Java I/O模型 同步 vs. 异步 同步I/O 每个请求必须逐个地被处理,一个请 ...

  5. HTML5+JS 《五子飞》游戏实现(一)规则

    很久没写文章了,这个游戏其实已经写了有段时间了,一直没有完善,赶在新年之际,分享给大家. 该<五子飞>游戏,不是平常大家所说的<五子棋>,这个玩法简单,是我们老家儿时常玩的一种 ...

  6. HTML5+JS 《五子飞》游戏实现(八)人机对战

    要想实现人机对战,就必须让电脑自动下棋,而且要知道自动去查找对方的棋子,看看有没有可以挑一对的,有没有可以夹一个的,这样下起来才有意思. 当电脑用户下完棋后,电脑应立即搜索用户的棋子,然后如果没有被吃 ...

  7. HTML5+JS 《五子飞》游戏实现(六)鼠标响应与多重选择

    上一章我们提到了如果有多条线上的棋子可以被吃掉,那么游戏需要提示用户,让用户选择吃哪条线上的.另外因为是网页游戏,所以一定要实现鼠标单击棋子可以进行操作. 当鼠标移动棋子上面后,切换鼠标指针为手形,移 ...

  8. HTML5+JS 《五子飞》游戏实现(五)移动棋子

    上一章 我们知道了怎么处理两个重要的吃棋动作,想要吃对方的棋子,首先得移动自己的棋子.现在里沃特跟大家分享分享,怎么移动棋子. 想要移动棋子,在页面上,首先要点击一下要移动的棋子,然后再点击一下目标位 ...

  9. HTML5+JS 《五子飞》游戏实现(四)夹一个和挑一对

    在第一章我们已经说了怎么才能“夹一个”以及怎样才能挑一对,但那毕竟只是书面上的,对码农来讲,我们还是用代码讲解起来会更容易了解. 为了更容易对照分析,我们先把路线再次贴出来: // 可走的路线 thi ...

随机推荐

  1. WPF 解决无边框产生的相关问题

    原文:WPF 解决无边框产生的相关问题 最大化: 在设置WindowStyle="None" AllowsTransparency="True"后,最大化会覆盖 ...

  2. Ubuntu 的apt install 和卸载正确姿势

    先说下使用apt  installl 安装的包的卸载: apt-get remove: 卸载软件apt-get purge: 卸载软件和配置文件apt-get autoremove: 移除没有使用的依 ...

  3. vue实现隔行换色,下拉菜单控制隔行换色的颜色

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. Java对象构成所有Java应用程序的基础

    通过在优锐课的ange交流下,掌握了很多编程思想方法 特来分享 对象具有状态和行为 Java中的对象以及其他任何``面向对象''语言都是所有Java应用程序的基本组成部分,代表了你可能在你周围找到的任 ...

  5. scw——02错误initializationError(Runner:JUnit 4)

    代码: 错误: 原因:版本不同,自动生成的代码不同 解决:

  6. IntelliJ IDEA 2017.3尚硅谷-----模板

    https://www.jetbrains.com/help/idea/using-live-templates.html  

  7. HTML的媒体元素(视频+音频)

    网页的媒体元素 包括 视频 音频 首先创建一个文件夹,放视频和音频         播放(非自动播放+自动播放) 视频播放 1.1. 打开网页不自动播放 <video src="../ ...

  8. AcWing 282. 石子合并

    #include <iostream> #include <algorithm> using namespace std; ; int n; int s[N];//前缀和 in ...

  9. Pikachu练习平台(暴力破解)

    Pikachu练习平台(暴力破解) 因为下面要用到burp suite,这里先简单介绍一下intruder模块的东西 Target选项:        设置攻击目标,可以通过proxy发送 Pasit ...

  10. 初识hadoop --- (分布式文件系统 + 分块计算)

    [转载] + 整理 2016-11-18 使用范围: Hadoop典型应用有:搜索.日志处理.推荐系统.数据分析.视频图像分析.数据保存等. Hadoop历史 雏形开始于2002年的Apache的Nu ...