だんごチェック2
単純に、「だんごチェック」関数で再帰関数を使ってやっていたことを、ForやWhileによるループで再現しただけです。
結果として、使用する変数は増えましたが、一つの関数内で全ての処理ができるので、他のインクルードの変数との競合の心配が無いです。…しかし、そこはかとなく処理時間が増加しました。
以下がソース。
マップコマンド だんごチェック2関数起動: Call だんごチェック2 Exit だんごチェック2: Local Select_UnitID Local 出撃味方数 Local Chain_UnitNum Local チェック済 Local ループ済 Local i Local j Local New_Checked = 1 ForEach 味方 出撃 Select_UnitID = 対象ユニットID Incr 出撃味方数 Next Set チェック済[Select_UnitID] Incr Chain_UnitNum Do While (New_Checked > 0) New_Checked = 0 ForEach Attach In チェック済 If ループ済[Attach] = 0 Then Set ループ済[Attach] For i = 1 to 2 For j = 1 to 2 Select_UnitID = Info(マップ,(X(Attach) + i - j),(Y(Attach) + 3 - i - j),ユニットID) If (チェック済[Select_UnitID] = 0) And (Party(Select_UnitID) = "味方") Then Incr Chain_UnitNum Set チェック済[Select_UnitID] Set New_Checked Endif Next Next Endif Next Loop Talk システム 全出撃ユニット$(出撃味方数)の内、$(Chain_UnitNum)機がだんご状態にあります End Return
※制作時間35分程。コレに関しては、しっかり時間をかけてデバッグもしたので、動作に問題は無いはず。
やはり、ForEachで参照中の配列変数の要素数をループの中で増やしても、その増やしたものについては参照してくれませんでした。コレさえできてればもっと行数を減らせたのに…。
やっぱり、こういう、何か出されたお題をプログラムにするのって、凄く楽しいですね。あっという間に時間が過ぎていきます。また何かお題を出してくれないかn(ry