遠程除法涉及的編程知識是我們曾經稍有一提的知識點:變量輸出/表達式輸出,由于與正常輸出文字的方法略有不同,因此不少同學會在這里遇到小小的麻煩。
進入關卡時,我們能從目標頁里了解我們本關要做的事情。除了兩個目標外,我們還需要使用除法來計算每個雷區的位置,然后用say函數說出結果,讓大炮摧毀雷區!觀察本關給出的默認代碼,英雄除了說話以外,并沒有其余的動作。
但可以看到,在三個箭頭的空行處,注釋已經說明了我們本關需要填寫的代碼。查看注釋,第7行的注釋要求我們說出第一個范圍:到敵人的距離除以3——這是在暗示我們,第一個雷區的距離正是到敵人距離的三分之一。
與敵人的距離如何計算,大家應該還沒忘記此前接觸到的一個新函數吧,我們可以利用這個函數,來計算我們與目標之間的距離。在默認代碼中也能發現,第6行也已經幫我們使用了這個函數,并賦入了變量distanceToEnemy中。
此時,程序已經自動計算與敵人的距離,并賦進了變量里,接下來我們只需要讓英雄說出這個變量除以3的結果即可。那么應該如何說出呢?大家長期以來使用say函數,都是按照這樣的格式。
把需要說出的內容放在括號和雙引號之內,英雄就會按要求輸出內容。所以,有的同學在這一處就會這樣寫,然后你就會發現,英雄并沒有按你的想法來說出相應的結果。
此處就是關卡所設置的第一個陷阱了,英雄并沒有把相應的距離計算結果說出來,而是直接把這一個計算式給說了出來。我們的大炮不是智能大炮,不具備計算功能,我們必須要把具體的結果告訴它,它才能發射正確的炮彈,這也就是今天涉及的編程知識:運算式的輸出。
早在地牢,我們第一次接觸say函數的時候,我們有提及,之所以要把要說的內容用雙引號包括,這是因為我們說的文字,是一個個字符,因此一句話,就是一串字符,叫字符串,我們要讓英雄說一個字符串,就得把這個字符串用雙引號包括起來,告訴計算機,這一串字符是可以直接說出來的。
而沒有雙引號的時候,這就不是一個字符串,這就變成了一個變量的名字。不記得的同學可以點擊鏈接,回去復習一下:極客戰記[地牢]:注釋中的密語——通關代碼及講解。如果,我們要讓英雄說出一句話——一個字符串,那應該這樣寫。
如果,我們要讓英雄說出一個變量的結果,那應該這樣寫。直接用say函數調用變量,就能夠直接說出這個變量的結果了。
顯然,這兩者的區別在于有無雙引號,如果無雙引號,則調用變量,如果有雙引號,則說出這串字符。細心觀察,字符串是綠色的,而調用變量會是黑色的。那么,如果我們要說一個計算式的結果,其實就跟說出變量是一樣的,不加雙引號,程序就能夠直接計算這個式子的結果,然后輸出。
這么一來,過關的思路就清晰了:說出第一個雷區的位置:敵人距離除以3;說出第二個雷區的位置:敵人距離除以1.5;說點什么激勵自己,等炮彈飛過去,摧毀雷區;沖鋒,尋找敵人,攻擊敵人,通關代碼,這便是森林關卡「遠程除法」的過關教學了。