呼呼(js围棋基本功能达成~)
2018-03-12 23:34
239 查看
到今天为止闷头肝了3天,用js达成了围棋界面,实现了一定的基本逻辑(提子之类的2333)
棋盘的画法参考了这篇文章和代码,感觉还是很容易理解的(呃……:before和:after伪元素的使用还是很不熟练啊……)
http://blog.csdn.net/sinat_38077266/article/details/72730203
在逻辑上难点主要在于提子和落子是否合法(禁入点)的操作,这就跟棋子的气相关了(用个二维数组吧233)。我这里是在每次落子时进行判断。先判断这个落子是否能触发提子,如果能提子的话就不需要判断这个落子是否合法了,否则就要判断这个落子是否合法。虽说判断顺序是先提子后合法,然而写代码函数的时候先写的是是否合法。这里通过递归得到与落子相连的棋子,同时判断相连的棋子是否有气(因为递归所以可能会发生重复判定导致死循环,所以需要另一个二维数组来判定是否判定过该棋子),只要有一个棋子有气就说明这块棋是不会被提子的,即落子是不会导致这个棋子所在的这块棋没气,即落子是合法的。
回过头来说为什么要先写这个合法函数,因为这个函数能判定棋的死活,那样在提子的函数里调用这个函数就会方便许多了。
(代码不敢贴上来,因为感觉写得行数有点多了,还要再优化、再优化……)
刚刚修正了一大堆bug,最后终于成功地摆了一盘棋,过程没有出bug,这真的是让我太兴奋了:)))))))
(其实打劫的部分还没做 囧)
接下来工作就是完善其他功能和界面吧,目标是幽灵围棋的实现……这大概还有许多路要走吧……
棋盘的画法参考了这篇文章和代码,感觉还是很容易理解的(呃……:before和:after伪元素的使用还是很不熟练啊……)
http://blog.csdn.net/sinat_38077266/article/details/72730203
在逻辑上难点主要在于提子和落子是否合法(禁入点)的操作,这就跟棋子的气相关了(用个二维数组吧233)。我这里是在每次落子时进行判断。先判断这个落子是否能触发提子,如果能提子的话就不需要判断这个落子是否合法了,否则就要判断这个落子是否合法。虽说判断顺序是先提子后合法,然而写代码函数的时候先写的是是否合法。这里通过递归得到与落子相连的棋子,同时判断相连的棋子是否有气(因为递归所以可能会发生重复判定导致死循环,所以需要另一个二维数组来判定是否判定过该棋子),只要有一个棋子有气就说明这块棋是不会被提子的,即落子是不会导致这个棋子所在的这块棋没气,即落子是合法的。
回过头来说为什么要先写这个合法函数,因为这个函数能判定棋的死活,那样在提子的函数里调用这个函数就会方便许多了。
(代码不敢贴上来,因为感觉写得行数有点多了,还要再优化、再优化……)
刚刚修正了一大堆bug,最后终于成功地摆了一盘棋,过程没有出bug,这真的是让我太兴奋了:)))))))
(其实打劫的部分还没做 囧)
接下来工作就是完善其他功能和界面吧,目标是幽灵围棋的实现……这大概还有许多路要走吧……
相关文章推荐
- js基本功能大全
- jsp中js实现本地图片预览基本功能
- js + bootstrap 实现基本的增删改查功能 -- 兰
- 【JS】原生js实现拖拽功能基本思路
- js基本功能大全
- 利用JS实现基本的图片轮播功能,包括鼠标的经过事件
- Vue.js 基本功能了解
- Vue.js 基本功能了解
- JS实现购物车的基本功能
- three.js 02-01 之场景基本功能
- 利用JS面向对象+模块化封装集AJAX请求、基本数据校验、URL参数截取等功能于一身的通用工具模块
- 原生js实现拖拽功能基本思路详解
- nodejs+angular+mongodb实现论坛基本功能
- 【js基本功能模块】“回到顶部”代码优化
- JS结合bootstrap实现基本的增删改查功能
- js实现鼠标拖拽功能基本思路
- 利用JS面向对象+模块化封装集AJAX请求、基本数据校验、URL参数截取等功能于一身的通用工具模块
- JS结合bootstrap实现基本的增删改查功能
- 原生js实现拖拽功能基本思路
- JS和Java实现链表类的基本功能