各辺3マスの正方形のステージです。真ん中を除き全てのコマに宝石かスイッチのどちらかが出現するので、漏らさず処理していきます。
4辺の全てのコマの上を通るルートは色々考えられるでしょう。ただし個別にmoveForward()とturnRight()/Left()を書いていくのではなく、上手くループで済ませてみましょう。
σ(^^)は角を基点に1辺をひとまとまりとして考えてみました。ただしスタート地点から最初の角だけはループにおさまらない個別のコードで処理しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
//そのコマに宝石があれば取り、閉スイッチがあれば切り替える関数 func getOrToggle() { if isOnGem { collectGem() } else if isOnClosedSwitch { toggleSwitch() } } //ここから本編 //スタート地点から見て正面と右奥のコマを処理 moveForward() getOrToggle() turnRight() moveForward() getOrToggle() //ここから3辺はループで処理 for i in 1 ... 3 { turnRight() moveForward() getOrToggle() moveForward() getOrToggle() } |
他にも辺の真ん中のコマを基点にするのであれば、スタート地点から1歩進んだところのコマまで個別に処理し、あとは4回のループにまとめる、なんて捉え方もできるかも知れませんよ?