发一下自己开发的自娱自乐小游戏:奥赛罗(黑白棋、翻转棋),支持可落子位置提示,原创翻转算法

前言:

这次是从前就特别喜欢玩的“奥赛罗”,但是国内玩的人不多,后来也就慢慢淡忘了。偶然想起来,觉得还是挺有意思的,就着手开发了。之前已经写过两三个小游戏,所以开发起来也很顺畅,原以为利用业余时间几天应该能写完的,断断续续写了两三个星期。中间觉得不好又推翻重写了一次。目前只完成了java版本,后面有空的话,应该还会继续完善。

 

开发历程

原本想法是通过加载一些静态图片资源来绘制棋盘和棋子,不过后来自己做的图片效果不是太满意,网上也没有找到合适的图片资源,就把这个想法给pass掉了,改成全部由canvas进行绘制。

原来设计是使用三个canvas,分别是:最底部是棋盘画板,中间是落子画板,最上层是提示落子位置画板。后来觉得三个canvas太浪费,所以把落子位置给挪到最底层棋盘画板上,每次落子完就会重绘一次棋盘和提示落子位置。为什么不适用同一个canvas进行绘制呢?因为重绘实在太耗硬件资源了,最后开发出来的游戏运行时资源占用可以说是非常少的。

以前玩就觉得8x8棋盘太小,所以开发的时候就保留了棋盘的可扩展性,可以支持任意格子数量的棋盘,比如正常的8x8棋盘,也可以9x9,10x10,16x16棋盘等等

原先考虑是需要多线程的,后来没有用到。因为几乎所有计算都在几毫秒之内就完成了,也没必要非要多线程了。但是还是使用了两个线程,一个窗口线程和一个后台保活线程,后台线程暂时只有监控窗口线程运行状态和打打日志这样的功能。

游戏截图

游戏中提示下一步可以落子的位置
结束游戏可以选择重新开始

项目维护地址

https://github.com/eguid/Othello

 

目前开发进程

已完成

1.0版本更新 1、增加赢棋提示和重新开始游戏 2、优化代码结构

0.3版本更新 1、输赢逻辑判断 2、落子位置算法优化和越界bug修复

0.2版本更新 1、落子位置预测算法实现

0.1版本实现 1、界面、棋盘、棋子绘制 2、棋子翻转算法实现

待完成

1、悔棋(悔棋真的很讨厌,所以一直没加这个功能)

2、人机对战

3、联网对战

 

如果有兴趣的小伙伴也可以参与开发

 

posted @ 2018-12-19 14:10  eguid  阅读(1264)  评论(0编辑  收藏  举报