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

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

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

比如说:

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

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

    /////* snapshot
public 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端的事件监听和数据传导了

JS+Canvas的棋盘游戏和Java的动态结合的更多相关文章

  1. 【微信小程序项目实践总结】30分钟从陌生到熟悉 web app 、native app、hybrid app比较 30分钟ES6从陌生到熟悉 【原创】浅谈内存泄露 HTML5 五子棋 - JS/Canvas 游戏 meta 详解,html5 meta 标签日常设置 C#中回滚TransactionScope的使用方法和原理

    [微信小程序项目实践总结]30分钟从陌生到熟悉 前言 我们之前对小程序做了基本学习: 1. 微信小程序开发07-列表页面怎么做 2. 微信小程序开发06-一个业务页面的完成 3. 微信小程序开发05- ...

  2. 如何用easyui+JAVA 实现动态拼凑datagrid表格(续)

    前面一段时间写了一篇文章: 如何用easyui+JAVA 实现动态拼凑datagrid表格 这篇文章的话,效果是可以实现,但是经过我反复试验,还是存在一些问题的. 今天这篇文章就是向大家介绍下如何避免 ...

  3. Java和js的区别,以及Java和c的区别

    刚开始的时候我们也搞不清这些概念,不过后来就慢慢清晰了,首先和大家谈谈Java和js的区别,最简单的区别就是一个是后端,一个是前端.   java是纯面向对象语言,javascrip其实和Java是完 ...

  4. [JS,Canvas]日历时钟

    [JS,Canvas]日历时钟 Html: <!doctype html> <html> <head> <meta charset="UTF-8&q ...

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

    在学习Spring的时候,我们知道Spring主要有两大思想,一个是IoC,另一个就是AOP,对于IoC,依赖注入就不用多说了,而对于Spring的核心AOP来说,我们不但要知道怎么通过AOP来满足的 ...

  6. java中动态代理实现机制

    前言: 代理模式是常用的java设计模式,它的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息.过滤消息.把消息转发给委托类,以及事后处理消息等.代理类与委托类之间通常会存在关联关系 ...

  7. Java特性-动态代理

    代理在开发中无处不在: 我们完成一个接口开发A,接口下有很多个实现类,这些类有些共同要处理的部分,比如每一个类都定义了接口A中的方法getXX(String name).我现在想把每次调用某个实现类的 ...

  8. 随笔 JS 字符串 分割成字符串数组 并动态添加到指定ID的DOM 里

    JS /* * 字符串 分割成字符串数组 并动态添加到指定ID的DOM 里 * @id 要插入到DOM元素的ID * * 输入值为图片URL 字符串 * */ function addImages(i ...

  9. 意外作出了一个javascript的服务器,可以通过js调用并执行任何java(包括 所有java 内核基本库)及C#类库,并最终由 C# 执行你提交的javascript代码! 不敢藏私,特与大家分

    最近研发BDC 云开发部署平台的数据路由及服务管理器意外作出了一个javascript的服务器,可以通过js调用并执行任何java(包括 所有java 内核基本库)及C#类库,并最终由 C# 执行你提 ...

随机推荐

  1. Java可视化JVM监控软件

    jdk自带.jdk安装目录下 1.JConsole 选择 不安全 可用不多 2.VisualVM

  2. java EE ME SE有什么关系

    1. Java SE(Java Platform,Standard Edition).Java SE 以前称为 J2SE.它允许开发和部署在桌面.服务器.嵌入式环境和实时环境中使用的 Java 应用程 ...

  3. bootstrap之表单

    一.表单布局 向父 <form> 元素添加 role="form". 把标签和控件放在一个带有 class .form-group 的 <div> 中.这是 ...

  4. mysql 效率 inner join 与 where in

    -- report 123.77k行 report_loss 620 行 -- inner join ;report_loss 索引 all report 索引 eq_ref ; -- total 0 ...

  5. vim命令删除后重新安装

    个人原创博客,转载请注明,否则追究法律责任 2017-09-30-09:51:20 1,删除vim命令.模拟错误 [root@localhost ~]# which vim/usr/bin/vim[r ...

  6. C#文件下载的几种方式

    第一种:最简单的超链接方法,<a>标签的href直接指向目标文件地址,这样容易暴露地址造成盗链,这里就不说了 1.<a>标签 <a href="~/Home/d ...

  7. highmaps如何自定义 区间的颜色刻度

    https://api.highcharts.com/highmaps/colorAxis.dataClassColor http://jsfiddle.net/gh/get/library/pure ...

  8. 微信小程序 --- 文件的上传和下载

    文件上传 / 文件下载 : wx.uploadFile

  9. 边的双联通+缩点+LCA(HDU3686)

    Traffic Real Time Query System Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K ...

  10. mysql客户端不能插入中文字符

    问题:输入中文报错:Incorrect string value 步骤: 1.查看MySQL编码设置 show variables like '%character%'; 2.重新设置编码(注意:ut ...