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


    前言:

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

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

  • 相关阅读:
    关于MTK平台CC相关的Log查询
    es5 对象方法
    es5 数组查询案例
    继承 和 es5 新增方法 数组方法
    扩展内置对象
    Js 面向对象 动态添加标签页
    记住用户名 缓存案例 localstorage
    解析好的静态页面.shtml浏览器无法解析.需要apache解析后再返回给浏览器
    开始工作----微信通过get检查当前网站---是否可用
    view视图--display中echo出ob_get_contents的缓冲内容--(实现,拼接好文件--导入文件)
  • 原文地址:https://www.cnblogs.com/eguid/p/10195554.html
Copyright © 2020-2023  润新知