java五子棋 坐标偏移_五子棋的斜对角方向上的规则 -- java编程(简单粗暴版)...

五子棋判断输赢规则 --- 斜对角线方向上

一、左上右下方向上

1、分析图

1ab14111a23cd68c038e72b2bfe47ba8.png

2、代码

1 /**判断左上右下方向上是否有连续五颗相同颜色的棋子2 * 全部遍历法3 */

4 int loop = 0;5 boolean istrue = false;6 for(loop = 0, posX = 1, posY = 12; loop < 21; loop++) {7 if (posY > 1) {8 posY --;9 }else if (posX<15) {10 posX++;11 }12 int bufferX =posX;13 int bufferY =posY;14 for(;posY <= 15 && posX <= 15; posX++, posY++) {15 if (board[posX][posY] ==color) {16 count++;17 if (count >= 5) {18 istrue = true;19 return true;20

21 }22 }else{23 count = 0;24 }25 }26 if(istrue) {27 break;28 }else{29 posX =bufferX;30 posY =bufferY;31 }32 }

二、左下右上方向上

1、分析图

38d3357f178215bf8db9bef239c480cd.png

2、代码

1 /**判断左下右上方向上是否有连续五颗相同颜色的棋子2 * 全部遍历法3 */

4 for(loop = 0, posX=1, posY = 5;loop < 21; loop++) {5 //用于遍历下一斜行

6 if (posY < 15) {7 posY ++;8 }else if (posX < 15) {9 posX++;10 }11 //用于保存遍历开始的起始的值

12 int bufferX =posX;13 int bufferY =posY;14 //开始遍历每一斜行

15 for(;posY > 1 && posX <= 15; posX++, posY--) {16 if (board[posX][posY] ==color) {17 count++;18 if (count >= 5) {19 istrue = true;20 return true; //跳出内循环

21

22 }23 }else{24 count = 0;25 }26 }27 //跳出循环

28 if(istrue) {29 break;30 }else{31 posX =bufferX;32 posY =bufferY;33 }34 }

后记:

本来想简单粗暴的直接po上网,但限制了字数发不了,容我多说几句,就当解说好了。

解说:

其实这个遍历规则是按照15*15的棋盘来做的,所以如果是不同型号的棋盘,使用时请改动上面的(loop<21)还有各个(跟15比较的数字)的设定。

为什么是数字21?因为斜线上长度小于5的斜线去除后,即15+15-1-(4+4)[小于5的斜线] == 21;

所以棋盘若为30*30,即为30+30-1-(4+4)=31;

因此,外部循环就是遍历斜线的条数。

其他的根据第二个代码去理解就行了。

反正这是我想到的最好理解的一种判断方法。(不喜勿喷,本人非计算机专业)

---------------------------------------------------------------------------------------------------------------

有空我再编辑优化版的。转发请注原文链接,谢谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值