#开始

  最近在忙着做一个基于酷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. [CF653F] Paper task - 后缀数组,线段树,vector

    [CF653F] Paper task Description 给定一个括号序列,统计合法的本质不同子串的个数. Solution 很容易想到,只要在传统统计本质不同子串的基础上修改一下即可. 考虑经 ...

  2. ICPC2019 亚洲区域赛 南京站

    蒟蒻终于打完了人生的第一场ICPC了. 终榜去星后rank36,AG,和AU差几十罚时了. 虽有遗憾但总体也是正常发挥了. 不愿再去对比赛做什么回顾,甚至很不愿去想.很多题已经在能力之外,即便是平常熟 ...

  3. 阿里云 Linux 挂在硬盘 翻了几篇这个最好

    原文 :https://www.jianshu.com/p/fa587bbfbb60 阿里云数据盘挂载完整过程 阿里云挂载云盘第一步 在阿里云管理员后台,云盘管理中心挂载好云盘在哪个服务器上面. 登录 ...

  4. js -- 日期时间格式化

    /** * js日期时间格式化 * @param date 时间读对象 * @param format 格式化字符串 例如:yyyy年MM月dd日 hh时mm分ss秒 * @returns {stri ...

  5. 使用imread()函数读取图片的六种正确姿势

    OpenCV实践之路——使用imread()函数读取图片的六种正确姿势 opencv里的argv[1]指向的文件在哪里 测试 #include "opencv2/highgui/highgu ...

  6. goland 2019.1.1破解

    https://blog.csdn.net/hi_liuxiansheng/article/details/89078405

  7. while、for循环结构_python

    一.while循环的基础例子: 例子1:判断是否大于50 例子2:按需打印乘法口诀 例子3:无限循环 while True: print (“true”) 二.for循环 1.for循环的常见范围的用 ...

  8. 题解【洛谷P2341】 [HAOI2006]受欢迎的牛

    题面 题解 \(Tarjan\)缩点后统计每个点的出度. 如果有多个点出度为\(0\),就直接输出\(0\),否则输出出度为\(0\)的强连通分量里的点数. 代码 #include <iostr ...

  9. Bootstrap入门(2)表格

    Bootstrap入门(四)表格 <table>标签 首先,引入bootstrap的css文件,然后表格内容放在一个class为table的<table>标签中(class=& ...

  10. 210. 课程表 II

    Q: 现在你总共有 n 门课需要选,记为 0 到 n-1. 在选修某些课程之前需要一些先修课程. 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0,1] 给定课程总量 ...