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

因为前端知识匮乏,但感觉只是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. sencha touch 入门系列 (九)sencha touch 视图组件简介

    对于一个普通用户来说,你的项目就是一组简单的视图集合,用户直接通过跟视图进行交互来操作你的应用,对于一个开发人员来说,视图是一个项目的入口,虽然大部分时候最有价值的部分是在model层和control ...

  2. all index range ref eq_ref const system 索引type说明

    背景知识 在使用sql的过程中经常需要建立索引,而每种索引是怎么处罚的又是怎么起到作用的,首先必须知道索引和索引的类型. 索引类型type 我们可以清楚的看到type那一栏有index ALL eq_ ...

  3. Sublime Text 3配置Minify压缩,格式化css,js,html,json,svg

    1.通过 Package Control 安装Minify 按 ctrl + shift + p   输入  Install Package 然后   输入Minify  按回车就可以安装啦 2.安装 ...

  4. Lucene4.x创建索引与3.x的一些不同

    lucene3.x的时候创建Field的时候可以直接指定存储和索引的选项类下下边这样: doc.add(new Field("createrId",diaryField.getCr ...

  5. 【BZOJ3932】[CQOI2015]任务查询系统 主席树

    [BZOJ3932][CQOI2015]任务查询系统 Description 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分.超级计算机中的 任务用三元组(Si, ...

  6. c# winform窗体边框风格的设计

    1.首先,窗体的FormBorderStyle设置成None,不要控制边框. 2.然后,TransparencyKey和BackColor颜色设置成相同的,这样,窗体就透明了. 3.最后,窗体的拖动 ...

  7. oracle的with as用法

    转自:https://www.cnblogs.com/linjiqin/archive/2013/06/24/3152667.html with as语法–针对一个别名with tmp as (sel ...

  8. Android 性能测试工具- GT

    GT(随 身调)是APP的随身调测平台,它是直接运行在手机上的“集成调测环境”(IDTE, Integrated Debug&Test Environment).利用GT,仅凭一部手机,无需连 ...

  9. Oracle数据类型char与varchar的对比

    使用scott用户连接数据库 新建一个表 create table stu01(name char(32)); 插入一条数据 insert into stu01 values('liuyueming' ...

  10. Git Bash关键命令

    1.默认目录是C:\Users\用户名 2.切换目录:$cd c:\\windows 3.切换到上级目录:cd ..,中间有空格 4.列出某目录所有文件,相当于DOS下的dir:ls c:\\wind ...