1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

箱庭でUnityを動かしてみる(8日目)

Posted at

2025/03/24(8日目)実施内容

FlowProcessorの中身を実装(フローチャートの実装)

GameMaster とその配下の構成

GameMaster

  • プレイヤー情報とゲーム進行を持つ
  • 都度,子に情報を提供して処理させる

InitGame

  • ロボットを初期配置に配置する
  • プレイヤー情報のインスタンス生成

GamePlaying

  • ゲーム進行中の制御関連を持つ

FinishGame

  • ゲーム終了後の制御関連を持つ(ShowResultと統合)

GameMaster に並ぶ構成

本ゲームで扱うフローチャートや当たり判定等を扱う

FlowProcessor

  • フローチャートのノードデータの表現や処理を実装する

私はフローチャートなんか実装したことないので,とりあえず実装方法をググる
-> プログラミング入門のような,「チャート->プログラム」のようなものしか出てこないため結局自分で考えることに

フローチャートの実装

(箱庭とは直接関係ない話になっていってる...)

フローチャートのノードを知る

  • 端子(Terminator):開始,終了を表す
  • 処理(Process):処理を表す
  • 判断(Decision):条件分岐を表す
  • その他(結合子,書類,データなど)

今回は端子,処理,判断のみ実装

実装構成

  • NodeInfo スーパークラス

    • <string> state メンバ変数:内容を表す
    • <int> id メンバ変数:ノードの識別子を表す
    • <int> nextNode1 メンバ変数:1つ先のノード(1個目)の識別子を表す
    • TermNode サブクラス
    • ProcNode サブクラス
      • <int> time メンバ変数:命令の持続時間を表す
    • DeciNode サブクラス
      • <int> nextNode2 メンバ変数:1つ先のノード(2個目)の識別子を表す
  • ControllFlow クラス

    • <List<TermNode>> terms メンバ変数:端子集合の格納場所
    • <List<ProcNode>> procs メンバ変数:処理集合の格納場所
    • <List<DeciNode>> decis メンバ変数:判断集合の格納場所
    • findNode -> ProcNode メソッド:<int> id が与えられると,一致する処理ノードを返す
    • findNode -> DeciNode メソッド:<int> id が与えられると,一致する判断ノードを返す
    • InsertProcNode -> void メソッド:現在選択中のノードと,処理ノードを作成する上で必要な値(この時,作成されるノードの次ノードを指定できるようにしてある)が与えられると,それに応じた処理ノードを,選択中ノードの直後に挿入する
    • InsertDeciNode -> void メソッド:現在選択中のノードと,判断ノードを作成する上で必要な値(この時,作成されるノードの次ノードを指定できるようにしてある)が与えられると,それに応じた判断ノードを,選択中ノードの直後に挿入する

あとは削除,編集の実装まで済ませてテスト!!(次回はここから)

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?