Flutterでゲーム(?)を作りました

紹介


ソースコード:
github.com
遊ぶ:
rutilicus.github.io

クラス構成概略と実現戦略

f:id:rutilicus:20210819230258p:plain
ほかいくつものSceneがSceneWidgetの具象クラスとしてぶら下がっています。

_MyHomePageStateはプロジェクト作成時にデフォルトであるStatefulWidgetのStateで、MaterialAppのhome属性に指定されています。
_MyHomePageStateのbuildメソッドは以下の3つのことをやるだけです。

  • _sceneWidgetのrunメソッドを呼び出して、戻り値で_sceneWidgetを更新
  • 何もしないsetStateメソッドを1フレームの時間経過後に呼び出すタイマを設定
  • 更新した_sceneWidgetを返す

各SceneWidgetの具象クラスのbuildメソッドについては、StackのchildrenにPositionedで描画位置を指定したImageをListで渡して各シーンでの画面描画を実現しています。

感想

シーン管理などは昔よく使っていた手法なので、そこに持って行っていかに絶対位置描画をさせるかが最大の難所だったように思います。オフスクリーンバッファとかは使っていないのでちらつきとかはありますが、一応それっぽいものができたということで……