⒈ 新しい挙動を作る
これまでに使ったコマンドだけで右を向くには、turnLeft() コマンドを3回入力しなくてはいけません。
解答例
解説
moveForward()
moveForward()
moveForward()
turnLeft()
turnLeft()
turnLeft()
moveForward()
moveForward()
moveForward()
collectGem()
前に進む
前に進む
前に進む
左を向く
左を向く
左を向く
前に進む
前に進む
前に進む
宝石を取る
⒉ 新しい関数を作る
func を使って右に曲がるための関数を新しく定義します。
解答例
解説
func turnRight() {
turnLeft()
turnLeft()
turnLeft()
}
moveForward()
turnRight()
moveForward()
turnRight()
moveForward()
moveForward()
turnRight()
moveForward()
moveForward()
moveForward()
moveForward()
turnRight()
moveForward()
toggleSwitch()
turnLeft()
moveForward()
turnRight()
moveForward()
turnLeft()
moveForward()
右に曲がる turnRight の定義 {
左を向く
左を向く
左を向く
}
前に進む
右に曲がる
前に進む
右に曲がる
前に進む
前に進む
右に曲がる
前に進む
前に進む
前に進む
前に進む
右に曲がる
前に進む
スイッチを入れる
左を向く
前に進む
右に曲がる
前に進む
左を向く
前に進む
⒊ 集めて、切り替えて、繰り返す
繰り返しのパターンをまとめた gemAndSwich(宝石を取って スイッチを入れる) と言う名前の関数を定義しました。
解答例
解説
func gemAndSwich {
moveForward()
collectgem()
moveForward()
toggleSwitch()
moveForward()
}
gemAndSwich()
turnLeft()
gemAndSwich()
moveForward()
turnLeft()
gemAndSwich()
turnLeft()
gemAndSwich()
gemAndSwich の定義
前に進む
宝石を取る
前に進む
スイッチを入れる
前に進む
}
gemAndSwich の実行
左を向く
gemAndSwich の実行
前に進む
左を向く
gemAndSwich の実行
左を向く
gemAndSwich の実行
⒋ 往復する
宝石3個を取る gem3 と言う名前の関数を新たに定義しました。
解答例
解説
func gem3() {
collectGem()
moveForward()
collectGem()
moveForward()
collectGem()
}
gem3()
turnRight()
moveForward()
turnRight()
gem3()
turnLeft()
moveForward()
turnLeft()
gem3()
gem3 の定義 {
宝石を取る
前に進む
宝石を取る
前に進む
宝石を取る
}
gem3 の実行
右を向く
前に進む
右に曲がる
gem3 の実行
左を向く
前に進む
左を向く
gem3 の実行
⒌ パターンをネストする
solveStair(階段をクリア)関数と
turnAround(後ろを向く)関数を定義して、
solveStair 関数の中で turnAround 関数を呼び出します。
解答例
解説
func turnAround() {
turnLeft()
turnLeft()
}
func solveStair() {
moveForward()
collectGem ()
turnAround()
moveForward()
turnLeft()
}
solveStair()
solveStair()
solveStair()
solveStair()
turnAround の定義
左を向く
左を向く
}
solveStair の定義
前に進む
宝石を取る
turnAround の実行
前に進む
左を向く
}
solveStair の実行
solveStair の実行
solveStair の実行
solveStair の実行
⒍ 並んだ階段
コードを実行して、solveRow(列をクリア)関数を呼び出すと何が起こるかを確かめます。
solveRow()関数にcollectGemTurnAround()関数を更に追加して、1列をクリアします。
解答例
解説
func collectGemTurnAround() {
moveForward()
moveForward()
collectGem()
turnLeft()
turnLeft()
moveForward()
moveForward()
}
func solveRow() {
collectGemTurnAround()
collectGemTurnAround()
}
solveRow()
turnRight()
moveForward()
turnLeft()
solveRow()
turnRight()
moveForward()
turnLeft()
solveRow()
collectGemTurnAround() の定義 {
前に進む
前に進む
宝石を取る
左を向く
左を向く
前に進む
前に進む
}
solveRow() の定義
collectGemTurnAround()の実行
collectGemTurnAround()の実行
}
solveRow()の実行
右に曲がる
前に進む
左を向く
solveRow()の実行
右に曲がる
前に進む
左を向く
solveRow()の実行
⒎ パターンを探す
swich1() swich2() と2つの関数を定義しました。
解答例
解説
func swich1() {
moveForward()
moveForward()
toggleSwitch()
turnRight()
turnRight()
moveForward()
moveForward()
}
func swich2() {
moveForward()
moveForward()
toggleSwitch()
moveForward()
moveForward()
toggleSwitch()
turnRight()
turnRight()
moveForward()
moveForward()
moveForward()
moveForward()
}
swich1()
turnRight()
swich2()
turnRight()
swich1()
turnRight()
swich2()
swich1() の定義 {
前に進む
前に進む
スイッチを入れる
右に曲がる
右に曲がる
前に進む
前に進む
}
swich2() の定義 {
前に進む
前に進む
スイッチを入れる
前に進む
前に進む
スイッチを入れる
右に曲がる
右に曲がる
前に進む
前に進む
前に進む
前に進む
}
swich1()の実行
右に曲がる
swich2()の実行
右に曲がる
swich1()の実行
右に曲がる
swich2()の実行



コメント