前言:java
此次是从前就特别喜欢玩的“奥赛罗”,可是国内玩的人很少,后来也就慢慢淡忘了。偶然想起来,以为仍是挺有意思的,就着手开发了。以前已经写过两三个小游戏,因此开发起来也很顺畅,原觉得利用业余时间几天应该能写完的,断断续续写了两三个星期。中间以为很差又推翻重写了一次。目前只完成了java版本,后面有空的话,应该还会继续完善。git
开发历程github
本来想法是经过加载一些静态图片资源来绘制棋盘和棋子,不事后来本身作的图片效果不是太满意,网上也没有找到合适的图片资源,就把这个想法给pass掉了,改为所有由canvas进行绘制。算法
原来设计是使用三个canvas,分别是:最底部是棋盘画板,中间是落子画板,最上层是提示落子位置画板。后来以为三个canvas太浪费,因此把落子位置给挪到最底层棋盘画板上,每次落子完就会重绘一次棋盘和提示落子位置。为何不适用同一个canvas进行绘制呢?由于重绘实在太耗硬件资源了,最后开发出来的游戏运行时资源占用能够说是很是少的。canvas
之前玩就以为8x8棋盘过小,因此开发的时候就保留了棋盘的可扩展性,能够支持任意格子数量的棋盘,好比正常的8x8棋盘,也能够9x9,10x10,16x16棋盘等等多线程
原先考虑是须要多线程的,后来没有用到。由于几乎全部计算都在几毫秒以内就完成了,也不必非要多线程了。可是仍是使用了两个线程,一个窗口线程和一个后台保活线程,后台线程暂时只有监控窗口线程运行状态和打打日志这样的功能。优化
游戏截图ui
项目维护地址线程
https://github.com/eguid/Othello设计
目前开发进程
已完成
1.0版本更新 一、增长赢棋提示和从新开始游戏 二、优化代码结构
0.3版本更新 一、输赢逻辑判断 二、落子位置算法优化和越界bug修复
0.2版本更新 一、落子位置预测算法实现
0.1版本实现 一、界面、棋盘、棋子绘制 二、棋子翻转算法实现
待完成
一、悔棋(悔棋真的很讨厌,因此一直没加这个功能)
二、人机对战
三、联网对战
若是有兴趣的小伙伴也能够参与开发