再帰の勉強がてら、迷路を解くやーーつ 作りました!
初再帰のため、ツッコミどころや改善点などあるかと思いますが、 ご指摘の際は優しく教えてください🥺💖ww
\ リファクタして短くなりました!!笑 /
下記が本体部分のコードです★(コメントなしver.)
Option Explicit
Const 壁 = 14277081
Const 白 = 16777215
Const 赤 = 255
Const 緑 = 9359529
Const 灰 = 8421504
Sub 開始()
Call 再帰(ActiveCell)
End Sub
Private Sub 再帰(セル)
Dim 範囲 As Range
Set 範囲 = Union(セル.Offset(-1, 0), セル.Offset(0, -1), セル.Offset(0, 1), セル.Offset(1, 0))
Dim 次のセル As Range
For Each 次のセル In 範囲
If 次のセル.Interior.Color = 白 Then
セル.Interior.Color = 緑
次のセル.Interior.Color = 赤
If 次のセル.Value = "★" Then
MsgBox "ゴーーール!"
End
End If
Call 再帰(次のセル)
End If
If 範囲.Areas(4).Address = 次のセル.Address Then
セル.Interior.Color = 灰
End If
Next
End Sub
進行方向の判定を入れたら 進む方向は「前・右・左」の3パターンでいいんですが、 判定するのが面倒だったのでとりあえず 「上下左右」の4方向を全て見てみる感じで作りました!🤣ww
ちなみに、ゴールが下にあるという前提で 面白い動きをするために、あえて『下』の選択を最後にしてますw
進行方向を判定するパターンもまた挑戦してみたいと思います!
コード見直してちょっと短くなりました♪ ( * ‘ω‘ *) < スッキリ!