二维数组的题做了有几个了,感觉很有趣,随后想到想做一个五子棋的游戏.

因为前端知识匮乏,但感觉只是Java中去用二维数组做的话还是不太难的.

首先生成15*15的棋盘,(先不考虑前后端交互),其后HashMap作为棋盘数据容器,用来接收黑棋或者白棋的设置.

比如说:

HashMap<String,String> goBang = new HashMap<>();

其后 15A 与 白棋 分别作为 key 和 value ,put到goBang

    /* snapshotpublic static void main(String[] args) {HashMap<String,String> goBangMap = new HashMap<>();goBangMap.put("15A","白棋");}

15A是棋盘坐标系.如图:

随后,白棋下子完成,这时候应该是设置一个裁判来检测棋盘的下子,是否有连成5个子的,也就是说,每一步棋之后(或者在先手的执行完第五步开始进入该裁判方法)

该裁判类应该去遍历整个棋盘,查看是否有连5个子的,该裁判应该去遍历整个棋盘,是否已无位置可以下子,或者说再怎么下子也无一方会获胜,则裁定程序结束(胜出 / 平局)

难点还在于判定每个角与边.(与细胞自动机不同的是,这个棋子(细胞)要判定的不再仅仅是周围的8个元素了,而是可能很多个以及位置不再像CellMachine那样固定.

比如说,最后黑棋落子形成了5连子,其他4个的位置连在它的左上方,这时候该如何判定?)

也许可以渐进性地去推断: 当有两个相连接时,判定两个子分别两端+1位置(+1指的是恰能组成5连子的位置的下个位置) 是否还有该颜色棋子.如果首端没有+1的,那么判断尾端是否有+1,如果true,

再判定+1位置的+1位置是否有该颜色棋子.直到这个true不满足5个,则取消该首尾棋子的判定,并且,如果该首尾列两端+1位置均为另一颜色,或者一端无法放置棋子,没有形成5连子,则应再下次裁定时

取消对该首尾列的判定(去除)

待续

2018.07.27整体的后台Java代码加判断棋子5连胜出的裁判类都做好了,那么应该再就是前端的棋盘生成以及棋子生成和Web端的事件监听和数据传导了

转载于:https://www.cnblogs.com/ukzq/p/9302755.html

JS+Canvas的棋盘游戏和Java的动态结合相关推荐

  1. java心电图_使用原生js+canvas实现模拟心电图

    从2016年2月转行进入IT行业,到现在也有将近两年的时间了,从最开始的java到现在的前端,前进的路上一直靠自己摸索,一路走到现在,前端大神是绝对谈不上的,最多算一只刚入门的菜鸟. 从最开始的懵懵懂 ...

  2. matlab 模拟心电图,使用原生js+canvas实现模拟心电图的实例

    从2015年2月转行进入IT行业,到现在也有将近两年的时间了,从最开始的java到现在的前端,前进的路上一直靠自己摸索,一路走到现在,前端大神是绝对谈不上的,最多算一只刚入门的菜鸟. 从最开始的懵懵懂 ...

  3. Java JVM 动态方法调用指令 invokedynamic 实现分析(以 Lambda 表达式实现原理为例)...

    一.前言 对于 invokedynamic 指令的实现需要方法句柄作为前提知识点.可参考 Java JVM 动态方法调用之方法句柄 MethodHandle. 本文以 Lambda 表达式中运用 in ...

  4. canvas 闭合_烧脑!JS+Canvas 带你体验「偶消奇不消」的智商挑战

    本文原载于 SegmentFault 专栏 一个会小程序开发的iOSer 作者:huangjianke 整理编辑:SegmentFault 启逻辑之高妙,因想象而自由 层叠拼图Plus是一款需要空间想 ...

  5. nashorn js 调用 java_Java8 Nashorn实现Java调用javascript代码

    最近项目需要,利用java执行动态语言,首先想到的是支持js. 1.从打印Hello World开始 Java8 引入Nashorn实现javascript调用,比如使用java运行一段js实现&qu ...

  6. 设计模式总结——代理模式以及java的动态代理

    定义 给目标对象一个代理对象,并由代理对象控制对目标对象的引用.联想到生活中就像是海外代购 既然是代理,就说明他要做的事情要比你直接去做要做的多,这就联系到了方法的增强,也就联系到了AOP,面向切面. ...

  7. java实现动态上传多个文件并解决文件重名问题

    java实现动态上传多个文件并解决文件重名问题 参考文章: (1)java实现动态上传多个文件并解决文件重名问题 (2)https://www.cnblogs.com/skycodefamily/p/ ...

  8. java的动态代理机制详解

    2019独角兽企业重金招聘Python工程师标准>>> 参考资料 1.java的动态代理机制详解 转载于:https://my.oschina.net/Howard2016/blog ...

  9. 代理模式及Java实现动态代理

    代理模式 定义:给某个对象提供一个代理对象,并由代理对象控制对于原对象的访问,即客户不直接操控原对象,而是通过代理对象间接地操控原对象. 代理模式UML图 在上图中: RealSubject 是原对象 ...

最新文章

  1. js 条件语句控制html,如何避免在JS脚本上过多使用 if 语句?(技巧分享)
  2. 你是别人眼中的废物产品经理吗?
  3. MLC——内存延迟及带宽测试工具
  4. 由哥倫比亞預防醫學中心想到的
  5. 基于jsp邮件收发系统用javamail包
  6. 静态类型和动态类型的语言有什么区别?
  7. UVA785 LA5281 Grid Colouring【DFS】
  8. Python Tricks(十)—— 递归修改文件名
  9. mysql buffer size_mysql read_buffer_size 设置多少合适
  10. antd树形控件拖拽 改变数据位置
  11. Delphi 7 升级到 Delphi 2010 总结
  12. 系统集成项目管理工程师历年真题下载地址
  13. mtk java_MTK,mrp,JAVA你了解多少?
  14. A very hard mathematic problem HDU - 4282
  15. 60秒轻松计算出任意一年任意一天星期几?
  16. 算法学习之狄克斯特拉算法
  17. 前端对用户身份证号码进行验证以及模糊显示
  18. 【HTTP】HTTP Authorization 之 Basic Auth 和 X-Auth-Token
  19. Glassfish Request URI is too large 问题的解决
  20. DataGrip使用教程

热门文章

  1. 他是世界上最杰出的程序员,一个月写了个操作系统,退休后去做飞行员!
  2. 考驾照选择 AI 教练,心态稳定不骂人
  3. 一场由FPGA触发的芯片战争
  4. Fundebug后端Java异常监控插件更新至0.2.0,支持Spring及Maven
  5. (step8.2.6)hdu 1848(Fibonacci again and again——组合博弈)
  6. android好用的第三方库2018使用总结
  7. java中String new和直接赋值的区别
  8. 慕课网 深入浅出javascript 笔记
  9. systemd系统服务管理详解
  10. [通用技术]在不同语言中用协程实现全排列算法(C++/Lua/Python/C#)