规划引擎工作模式
本節(jié)概要
- 重構游戲的現有引擎結構
- 規(guī)劃游戲的 Flutter 層與原生引擎之間的接口
- 提前解決啟用開局庫的問題
- 實現 Flutter 層面的引擎封裝
「單機對戰(zhàn)」和「挑戰(zhàn)云主機」兩種游戲模式都是處理人機對弈的場景。我們計劃在兩種場景使用相同的 BattlePage 頁面,僅配置不同的 AI 引擎。
調整引擎組織方式
我們之前已經存在 CloudEngine 了,它和本地引擎將有一些不同的實現方式,但卻有一些相同的對外接口。對此,我們做一個面向對象的抽象思考,以便讓 BattlePage 頁面可以使用多態(tài)方式調用不同的引擎。
在 lib/engine 文件夾下,我們新建一個 engine.dart 文件,在其中實現一個抽象的 AiEngine 引擎類,并且將 EngineResponse 類從 CloudEngine 中移到此文件中來 — 顯然 EngineResponse 是不同引擎公用的:
/// 引擎查詢結果包裹 /// type 為 move 時表示正常結果反饋,value 用于攜帶結果值 /// type 其它可能值至少包含:timeout / nobestmove / network-error / data-error class EngineResponse {final String type;final dynamic value;EngineResponse(this.type, {this.value}); }abstract class AiEngine {// 啟動引擎Future<void> startup() async {}// 關閉引擎Future<void> shutdown() async {}// 搜索最佳著法Future<EngineResponse> searc總結
- 上一篇: java整数类型
- 下一篇: 第6章 Python 数字图像处理(DI