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