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

    前言:

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

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

  • 相关阅读:
    锁定/解锁账户BAPI
    ME5A报表增强
    PS 独立集中标识下修改项目采购类型增强
    生产版本BAPI
    生产订单工艺路线修改
    销售订单BAPI增强
    Office RTF远程模板注入
    CVE20211732 LPE漏洞分析
    C/C++ Qt 数据库与ComBox多级联动
    C/C++ Qt 数据库SqlRelationalTable关联表
  • 原文地址:https://www.cnblogs.com/eguid/p/10195554.html
Copyright © 2011-2022 走看看