跳轉到

置於特定位置

目標:將你的角色置於關卡世界中的特定位置。

簡介

到目前為止,已經為你選好角色的起點。在這個關卡中,你會透過將引數傳入到稱為 place方法來選取起點。 使用 place 方法

place 有三個參數world.place(item: Item, atColumn: Int, row: Int)

  • item:使用 Item 類型的輸入,包含 CharacterExpert 類型。傳入一個專家實例expert

  • atColumn:用一個 Int 表示要放置角色的直欄。

  • row:用一個 Int 表示要放置角色的橫列。

world.place (expert, atColumn: 1, row: 1)

  1. 按下關卡世界中的磚塊來顯示其座標。
  2. 查看地圖,為專家尋找一個起點位置。在 place 方法中使用該位置的直欄值和橫列值。

img

講解

在先前的關卡中角色被初始化後需要透過指令讓角色一步一步移動,但現在我們有了新工具place,看一下簡介中對於place的說明,用它讓角色瞬間移動吧。若你認為瞬間移動太過於無趣,也能夠搭配先前練習的move方法完成任務喔!

解答

請務必嘗試解題

請同學務必嘗試自己解題,不要直接看答案。學習程式時最好的學習方法是自己嘗試解題,程式設計不會只有一種寫法,請通過不斷的嘗試和優化來找到屬於自己最好的解答。

1
2
3
4
5
6
7
let expert = Expert()
world.place(expert, atColumn: 1, row: 1)
expert.collectGem()
world.place(expert, atColumn: 1, row: 6)
expert.collectGem()
world.place(expert, atColumn: 6, row: 1)
expert.collectGem()
let expert = Expert()
world.place(expert, atColumn: 2, row: 6)
func turnAround() {
    expert.turnLeft()
    expert.turnLeft()
}
func turnLockCollectGem() {
    expert.turnLeft()
    expert.turnLockUp()
    turnAround()
    expert.moveForward()
    expert.collectGem()
    turnAround()
    expert.moveForward()
    expert.turnRight()
}
turnLockCollectGem()
expert.move(distance: 5)
turnLockCollectGem()
expert.move(distance: 6)
expert.collectGem()

後記

初始化你的角色或專家後,你現在可以將它們放置在關卡世界中的任意位置。你在 world 上呼叫了 place 方法,其中 world 是關卡世界本身 (Gridworld 類型) 的實例。