JS+Canvas的棋盘游戏和Java的动态结合
二维数组的题做了有几个了,感觉很有趣,随后想到想做一个五子棋的游戏.
因为前端知识匮乏,但感觉只是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的动态结合相关推荐
- java心电图_使用原生js+canvas实现模拟心电图
从2016年2月转行进入IT行业,到现在也有将近两年的时间了,从最开始的java到现在的前端,前进的路上一直靠自己摸索,一路走到现在,前端大神是绝对谈不上的,最多算一只刚入门的菜鸟. 从最开始的懵懵懂 ...
- matlab 模拟心电图,使用原生js+canvas实现模拟心电图的实例
从2015年2月转行进入IT行业,到现在也有将近两年的时间了,从最开始的java到现在的前端,前进的路上一直靠自己摸索,一路走到现在,前端大神是绝对谈不上的,最多算一只刚入门的菜鸟. 从最开始的懵懵懂 ...
- Java JVM 动态方法调用指令 invokedynamic 实现分析(以 Lambda 表达式实现原理为例)...
一.前言 对于 invokedynamic 指令的实现需要方法句柄作为前提知识点.可参考 Java JVM 动态方法调用之方法句柄 MethodHandle. 本文以 Lambda 表达式中运用 in ...
- canvas 闭合_烧脑!JS+Canvas 带你体验「偶消奇不消」的智商挑战
本文原载于 SegmentFault 专栏 一个会小程序开发的iOSer 作者:huangjianke 整理编辑:SegmentFault 启逻辑之高妙,因想象而自由 层叠拼图Plus是一款需要空间想 ...
- nashorn js 调用 java_Java8 Nashorn实现Java调用javascript代码
最近项目需要,利用java执行动态语言,首先想到的是支持js. 1.从打印Hello World开始 Java8 引入Nashorn实现javascript调用,比如使用java运行一段js实现&qu ...
- 设计模式总结——代理模式以及java的动态代理
定义 给目标对象一个代理对象,并由代理对象控制对目标对象的引用.联想到生活中就像是海外代购 既然是代理,就说明他要做的事情要比你直接去做要做的多,这就联系到了方法的增强,也就联系到了AOP,面向切面. ...
- java实现动态上传多个文件并解决文件重名问题
java实现动态上传多个文件并解决文件重名问题 参考文章: (1)java实现动态上传多个文件并解决文件重名问题 (2)https://www.cnblogs.com/skycodefamily/p/ ...
- java的动态代理机制详解
2019独角兽企业重金招聘Python工程师标准>>> 参考资料 1.java的动态代理机制详解 转载于:https://my.oschina.net/Howard2016/blog ...
- 代理模式及Java实现动态代理
代理模式 定义:给某个对象提供一个代理对象,并由代理对象控制对于原对象的访问,即客户不直接操控原对象,而是通过代理对象间接地操控原对象. 代理模式UML图 在上图中: RealSubject 是原对象 ...
最新文章
- js 条件语句控制html,如何避免在JS脚本上过多使用 if 语句?(技巧分享)
- 你是别人眼中的废物产品经理吗?
- MLC——内存延迟及带宽测试工具
- 由哥倫比亞預防醫學中心想到的
- 基于jsp邮件收发系统用javamail包
- 静态类型和动态类型的语言有什么区别?
- UVA785 LA5281 Grid Colouring【DFS】
- Python Tricks(十)—— 递归修改文件名
- mysql buffer size_mysql read_buffer_size 设置多少合适
- antd树形控件拖拽 改变数据位置
- Delphi 7 升级到 Delphi 2010 总结
- 系统集成项目管理工程师历年真题下载地址
- mtk java_MTK,mrp,JAVA你了解多少?
- A very hard mathematic problem HDU - 4282
- 60秒轻松计算出任意一年任意一天星期几?
- 算法学习之狄克斯特拉算法
- 前端对用户身份证号码进行验证以及模糊显示
- 【HTTP】HTTP Authorization 之 Basic Auth 和 X-Auth-Token
- Glassfish Request URI is too large 问题的解决
- DataGrip使用教程
热门文章
- 他是世界上最杰出的程序员,一个月写了个操作系统,退休后去做飞行员!
- 考驾照选择 AI 教练,心态稳定不骂人
- 一场由FPGA触发的芯片战争
- Fundebug后端Java异常监控插件更新至0.2.0,支持Spring及Maven
- (step8.2.6)hdu 1848(Fibonacci again and again——组合博弈)
- android好用的第三方库2018使用总结
- java中String new和直接赋值的区别
- 慕课网 深入浅出javascript 笔记
- systemd系统服务管理详解
- [通用技术]在不同语言中用协程实现全排列算法(C++/Lua/Python/C#)