なかなか複雑なステージです。というか単純に1ステップずつコードに落としていく分には簡単ですが、上手く関数やループでまとめようとするとなかなかやり甲斐のあるパズルのようなステージです。
説明文にある通りやり方は無数にあると思うので、自分なりの方法を考えてみてほしいのですが、とりあえず以下の例では、「宝石を基点に見て、90°違いの2方向の1コマ隣に閉スイッチ」という組み合わせが3カ所にあるという点に着目し、1かたまりを処理した後、ワープを使って他のペアに移動する、という流れで考えました。向きとワープをON/OFFするタイミングがキモです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
//キャラクター作成と配置 let ch = Character() world.place(ch, facing: north, atColumn: 1, row: 6) //ポータル(赤と黄色の2組)の作成と配置 let redPortal = Portal(color: #colorLiteral(red: 0.74, green: 0.15, blue: 0.074, alpha: 1.0)) //赤色 let yellowPortal = Portal(color: #colorLiteral(red: 0.96, green: 0.78, blue: 0.34, alpha: 1.0)) //黄色 world.place(redPortal, atStartColumn: 2, startRow: 7, atEndColumn: 2, endRow: 1) world.place(yellowPortal, atStartColumn: 1, startRow: 2, atEndColumn: 6, endRow: 4) func patten1() { ch.collectGem() ch.jump() ch.toggleSwitch() ch.turnRight() ch.turnRight() ch.jump() ch.turnLeft() ch.jump() ch.toggleSwitch() ch.turnLeft() ch.jump() ch.turnLeft() } //ここから本編 patten1() redPortal.isActive=false patten1() yellowPortal.isActive=false patten1() |