五子棋的斜对角方向上的规则 -- java编程(简单粗暴版)
五子棋判断输赢规则 --- 斜对角线方向上
一、左上右下方向上
1、分析图
    
2、代码
/**判断左上右下方向上是否有连续五颗相同颜色的棋子
* 全部遍历法
*/
int loop = 0;
boolean istrue = false;
for(loop = 0, posX = 1, posY = 12; loop < 21; loop++) {
if (posY > 1) {
posY --;
}else if (posX<15) {
posX++;
}
int bufferX = posX;
int bufferY = posY;
for(;posY <= 15 && posX <= 15; posX++, posY++) {
if (board[posX][posY] == color) {
count++;
if (count >= 5) {
istrue = true;
return true; }
}else {
count = 0;
}
}
if (istrue) {
break;
}else {
posX = bufferX;
posY = bufferY;
}
}
二、左下右上方向上
1、分析图

2、代码
/**判断左下右上方向上是否有连续五颗相同颜色的棋子
* 全部遍历法
*/
for(loop = 0, posX=1, posY = 5;loop < 21; loop++) {
//用于遍历下一斜行
if (posY < 15) {
posY ++;
}else if (posX < 15) {
posX++;
}
//用于保存遍历开始的起始的值
int bufferX = posX;
int bufferY = posY;
//开始遍历每一斜行
for(;posY > 1 && posX <= 15; posX++, posY--) {
if (board[posX][posY] == color) {
count++;
if (count >= 5) {
istrue = true;
return true; //跳出内循环 }
}else {
count = 0;
}
}
//跳出循环
if (istrue) {
break;
}else {
posX = bufferX;
posY = bufferY;
}
}
后记:
本来想简单粗暴的直接po上网,但限制了字数发不了,容我多说几句,就当解说好了。
解说:
其实这个遍历规则是按照15*15的棋盘来做的,所以如果是不同型号的棋盘,使用时请改动上面的(loop<21)还有各个(跟15比较的数字)的设定。
为什么是数字21?因为斜线上长度小于5的斜线去除后,即15+15-1-(4+4)[小于5的斜线] == 21;
所以棋盘若为30*30,即为30+30-1-(4+4)=31;
因此,外部循环就是遍历斜线的条数。
其他的根据第二个代码去理解就行了。
反正这是我想到的最好理解的一种判断方法。(不喜勿喷,本人非计算机专业)
---------------------------------------------------------------------------------------------------------------
有空我再编辑优化版的。转发请注原文链接,谢谢!
五子棋的斜对角方向上的规则 -- java编程(简单粗暴版)的更多相关文章
- 五子棋的判断输赢规则 -- java编程(简单优化完整版)
		五子棋的判断输赢规则代码 -- 完整优化版 一.前言 之前浏览过很多网上的方法,但总找不到比较完整,也get不到其他大神的思路,就直接画图分析,分析了之后就有了如下的代码,当然还想到更加优化的一种,只 ... 
- Java编程练习(四)——集合框架应用
		Java集合框架小应用之扑克牌小游戏 学习了Java集合框架之后,我写了一个扑克牌小游戏来巩固知识.学习之余的练习之作,有不足之处还得多多指教了~(*/ω\*) 扑克牌小游戏背景: 1. 创建一副扑克 ... 
- 史上最全Java面试题整理(附参考答案)
		下列面试题都是在网上收集的,本人抱着学习的态度找了下参考答案,有不足的地方还请指正,更多精彩内容可以关注我的微信公众号:Java团长 1.面向对象的特征有哪些方面? 抽象:将同类对象的共同特征提取出来 ... 
- 史上最全Java面试题全集
		2013年年底的时候,我看到了网上流传的一个叫做<Java面试题大全>的东西,认真的阅读了以后发现里面的很多题目是重复且没有价值的题目,还有不少的参考答案也是错误的,于是我花了半个月时间对 ... 
- JAVA 编程规范(上)
		2016-03-20 J120-CHARLIEPAN JAVA 编程规范(上) 1. 应用范围 本规范应用于采用J2EE规范的项目中,所有项目中的JAVA代码(含JSP,SERVLET,JA ... 
- Java学习笔记(四)——google java编程风格指南(上)
		[前面的话] 年后开始正式上班,计划着想做很多事情,但是总会有这样那样的打扰,不知道是自己要求太高还是自我的奋斗意识不够?接下来好好加油.好好学学技术,好好学习英语,好好学习做点自己喜欢的事情,趁着自 ... 
- 《Java编程思想第四版》附录 C Java 编程规则
		附录 C Java 编程规则 本附录包含了大量有用的建议,帮助大家进行低级程序设计,并提供了代码编写的一般性指导: (1) 类名首字母应该大写.字段.方法以及对象(句柄)的首字母应小写.对于所有标识符 ... 
- 史上最全Java面试题(带全部答案)
		今天要谈的主题是关于求职,求职是在每个技术人员的生涯中都要经历多次.对于我们大部分人而言,在进入自己心仪的公司之前少不了准备工作,有一份全面细致面试题将帮助我们减少许多麻烦.在跳槽季来临之前,特地做这 ... 
- 学习java编程能往哪些方向发展
		当下Java训练非常热,是因为通过学习java能够快速的就业,这对于今年就业压力非常大的大学生来说,无疑是一条就业的捷路,虽然培教育费动辄过万,但还是非常值得的. 可是你可曾想过,学习了java编程后 ... 
随机推荐
- Linux下如何释放cache内存
			转自:http://www.linuxidc.com/Linux/2015-02/112685.htm 在Linux下频繁存取文件后,物理内存会很快被用光,当程序结束后,内存不会被正常释放,而是一直作 ... 
- python_如何让字典保持有序?
			案例: 某编程竞赛系统,对参赛选手编程解题进行计时,选手完成题目后,把该选手解题用时记录到字典中,以便赛后按选手名查询成绩(答题时间越短,成绩越优秀) {'lili':(1,43),'yuyu':(2 ... 
- Node.js之事件监听和发送
			演示事件的发送和监听 const events = require("events"); function Account() { this.balance = 0; events ... 
- Maven的Archetype简介
			Archetype,骨架的意思. 文章出处:http://m.blog.csdn.net/blog/FireOfStar/42526027 Archetype是什么? 简单的说,Archetype是M ... 
- Linux安装JDK、MySQL和Tomcat
			1 依赖的安装 因为JDK.Tomcat和MySQL的安装过程中需要从网上下载部分支持包才可以继续,所以需要提前安装好依赖. yum install glibc.1686 yum -y install ... 
- PHP错误杂记
			Notice: Only variables should be passed by reference in-- 原因:The problem is, that end requires a ref ... 
- js控制滚动条滑动
			window.scrollTo(0,document.body.scrollHeight);或者通过设置Location的hash属性参见:http://www.cnblogs.com/oospace ... 
- lvs_dr
			lvs_dr 实验需求(4台虚拟机) eth0 192.168.1.110 单网卡 client(可以使用windows浏览器代替,但会有缓存影响) eth0 192.168.1.186 单网卡 di ... 
- awk匹配以aaa开头,以bbb结尾的内容,同时aaa和bbb之间还包含ccc
			如果是匹配以A开头,以B结尾的内容,同时A和B之间还包含C的这种怎么做?比如 [root@localhost ~]#cat file aaa grge ddd bbb aaa gege ccc bbb ... 
- jQuery动画详解
			本文最初发表于博客园,并在GitHub上持续更新前端的系列文章.欢迎在GitHub上关注我,一起入门和进阶前端. 以下是正文. jQuery 动画 jQuery提供的一组网页中常见的动画效果,这些动画 ... 
