跳轉到

遍佈隨機寶石

挑戰:收集數量隨機決定的寶石,以 totalGems 表示。

簡介

在這項挑戰中,寶石出現的位置和數量都是隨機的。你需要編寫一個演算法,讓角色在關卡世界中有效率地持續走動,收集任何出現的寶石。

讓角色有效率地走動的同時,思考如何能使程式碼更加簡潔。嘗試將動作分解成可重複使用的函數,這樣所需的程式碼行數就會減少。這稱為分解程式碼,這不僅對於函數的重複使用大有幫助,而且能讓任何查看程式碼的人容易理解程式碼的內容。

img

講解

宣告一個變數來追蹤你收集了多少顆寶石,並與 totalGems 常數做比較,以決定何時停止收集。

解答

請務必嘗試解題

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

let totalGems = randomNumberOfGems
var gemCounter = 0
bluePortal.isActive = false
pinkPortal.isActive = false
while gemCounter < totalGems {
    if isOnGem {
        collectGem()
        gemCounter = gemCounter + 1
    }
    moveForward()
    if isBlocked {
        turnLeft()
        turnLeft()
        if bluePortal.isActive == true {
            bluePortal.isActive = false
            pinkPortal.isActive = false
        } else if bluePortal.isActive == false {
            bluePortal.isActive = true
            pinkPortal.isActive = true
        }
    }
}

後記

你的程式設計技巧進步神速。現在應該學習一組新的技巧了。準備好開始了嗎?