視界内に彫刻がある場合、鑑賞フェーズに入るプログラムを設計しています。
鑑賞フェーズでは、事前に設定された「鑑賞時間」のステップ数、彫刻の前で待機することで「鑑賞」を表現しています。
しかし現在のコードでは、
If 鑑賞フェイズの場合
待機処理
Else そうでない場合
行動ルール
End if
という形で構築されており、IF文が非常に巨大で不親切構造になっている気がします。
加えてこの方法は、「鑑賞の判定」がコードの前半部分にあり「行動ルール」が後半にあるからこそ通用する方法であり、
例えば「0.6artisocレシピブック ポテンシャル法を使って、買い回り行動を再現しよう」に、
「商品棚に到達確認した際、『商品をかごに入れる為の時間』の長さ=3ステップ分待機させる」という処理を加えたい場合には通用しません。(前半に行動ルールがあり、後半に判定がある為)
この様な「前半に行動ルールがあり、後半に判定がある」場合でも、待機処理をしたい場合、どのようにコードを書けばいいでしょうか。
if構造が巨大な点について
関数を用いて構造自体を縮める方法はあります。
If 鑑賞フェイズの場合 待機() Else そうでない場合 行動() End if …… sub 待機(){ 待機処理 } sub 行動(){ 行動ルール }
また、今回のように分量に差がある場合は、分量が少ない方をif文の上に置いておくと見やすくなります。その際条件式をひっくり返せばよいので、
If not 鑑賞フェイズの場合 行動ルール Else そうでない場合 待機処理 End if
と書くと実現できます。
また、このコード自体は待機処理をした後に行動処理をするわけではないように見受けられましたので、↑のやり方をすれば逆転は出来るかと思われます。