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

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

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

比如说:

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

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

  1. /////* snapshot
  2. public static void main(String[] args) {
  3. HashMap<String,String> goBangMap = new HashMap<>();
  4.  
  5. goBangMap.put("15A","白棋");
  6.  
  7. }

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. Android Log.isLoggable方法异常:exceeds limit of 23 characters

    AndroidRuntime: java.lang.IllegalArgumentException: Log tag "AccountSetupIncomingFragment" ...

  2. mysql导出csv文件excel打开后数字用科学计数法显示且低位变0的解决方法

    Excel显示数字时,如果数字大于12位,它会自动转化为科学计数法:如果数字大于15位,它不仅用于科学技术费表示,还会只保留高15位,其他位都变0. Excel打开csv文件时,只要字段值都是数字,它 ...

  3. js+jquery(二)

    1.获取列表框所选中的全部选项的值 $("select").change(function() { // 设置列表框change 事件 // 获取列表框所选中的全部选项的值 ale ...

  4. Egret打包App 修改App名称和图标 (Egret4.1.0)

    图标替换位置在项目res下的drawable这些目录下,用新图标覆盖即可. 这里我用白色图片替换了白鹭默认的图片ic_launcher.png 修改App名字,在res->value->s ...

  5. IOS中使用轻量级数据库

    IOS中使用轻量级数据库 目录 概述 IOS中的轻量级数据库 sqlite的方法 数据库的实用操作 第三方类库 FMDatabase 概述 IOS中的轻量级数据库 sqlite的方法 sqlite3 ...

  6. 结合Ajax做地区内容切换!(城市切换)

    实现原理:点击,进行异步保存Cookie , 根据保存的Cookie来切换城市内容: 简单HTML示例: <!doctype html> <html> <head> ...

  7. GROUPING SETS与GROUP_ID

    SELECT E.DEPARTMENT_ID DID, E.JOB_ID JOB, E.MANAGER_ID MID, SUM(E.SALARY) SUM_SAL, COUNT(E.EMPLOYEE_ ...

  8. 解析导航栏的url

    前段时间做ui自动化测试的时候,导航栏菜单始终有点问题,最后只好直接获取到url,然后直接使用driver.get(url)进入页面: 包括做压测的时候,比如我要找出所有报表菜单的url,这样不可能手 ...

  9. 数据展现-百度js绘图

    echarts:酷炫的绘图效果 http://echarts.baidu.com/examples/#chart-type-calendar

  10. mysql 数据操作 多表查询 子查询 带EXISTS关键字的子查询

    带EXISTS关键字的子查询 EXISTS关字键字表示存在. EXISTS 判断某个sql语句的有没有查到结果 有就返回真  true 否则返回假 False 如果条件成立 返回另外一条sql语句的返 ...