少兒編程游戲CodeMonkey通關(guān)攻略:第96-100關(guān)

今天我們一起玩until循環(huán)的最后5關(guān):第96-100關(guān)。

這幾關(guān)增加了貓咪抓老鼠的環(huán)節(jié),游戲更加有趣,也讓小孩子們更加理解為什么要使用until循環(huán):直到貓睡覺之前,小老鼠是不能輕舉妄動(dòng)的!這也是until循環(huán)與for循環(huán)的最大區(qū)別:在for循環(huán)里,我們知道循環(huán)次數(shù);但是在until循環(huán)里,我們不知道循環(huán)次數(shù)。這在實(shí)際中是真實(shí)存在的,比如,我們不知道性情難以捉摸的貓咪什么時(shí)候睡覺,因?yàn)橹挥挟?dāng)貓咪睡覺之后,小老鼠才能活動(dòng)起來!

Until the cat is sleeping, the mouse can go to the match and grab it!

So, let's begin!

哎呀,我的英文水平暴露了。。。

第96關(guān)

我們已經(jīng)提出,這幾關(guān)里,小老鼠需要等待貓咪睡著之后,才可以動(dòng)身去撿火柴。

我們先看看這一關(guān)的畫面:

小老鼠啊,你趴在火柴堆上干什么啊。。。

你這樣貌似也不能隱身啊。。。

不管如何,還是先看看右邊的代碼吧:

在這個(gè)代碼里,第1-3行定義了goto函數(shù),第4-8行定義了collect函數(shù)。

第11-14行是正式的操作指令:小老鼠在貓咪睡著之前保持等待狀態(tài),在貓咪睡著后走15步。其中wait()指令表示等待!

很明顯,問題出在這個(gè)step 15上,走15步與上面定義的兩個(gè)函數(shù)沒有任何關(guān)系,也無法讓小老鼠撿起火柴放回火柴堆。

下面是我修改后的代碼:

只需要把step 15改成collect match就可以啦!

點(diǎn)擊運(yùn)行看效果!

滿分通關(guān)!

第97關(guān)

用wait指令等待貓咪睡覺,這個(gè)我們?cè)谏弦魂P(guān)就看到了。

看左邊的畫面框,我們發(fā)現(xiàn),其實(shí)這一關(guān)比上一關(guān)多了2根火柴而已。不過小老鼠攜帶能力有限,一次只能撿起一根火柴。要讓小老鼠依次收集這三根火柴,我們需要使用for循環(huán)。

看看右邊的代碼框:

第1-3行仍然是定義goto函數(shù),第4-8行定義collect函數(shù)。

下面是我給出的一個(gè)解決方案:

第9-12行,讓小老鼠每次收集一個(gè)火柴,注意要用until循環(huán)讓小老鼠在貓咪睡著時(shí)去收集火柴。

如果在小貓咪醒著的時(shí)候去撿火柴,小老鼠會(huì)被貓咪追趕,并被嚇得落荒而逃。

點(diǎn)擊運(yùn)行看效果!

這是小老鼠收集第一根火柴的過程。

這是小老鼠收集第三根火柴的過程。

滿分通關(guān)!

第98關(guān)

其實(shí),前兩關(guān)里的until代碼可以放在函數(shù)里面,比如放在collect函數(shù)里,也就是在小老鼠在去收集火柴之前等待貓咪睡著。

先看看這一關(guān)的界面:

在左邊的畫面框里,小老鼠需要過一座木橋,再去收集火柴。這沒有什么難度,多一行g(shù)oto bridge代碼就可以解決。

我們看看右邊的代碼框:

第1-3行仍然定義goto函數(shù)。

第6-11行定義safeCollect函數(shù),在這個(gè)函數(shù)里,我們需要在goto t之前加入until循環(huán),也就是在去收集之前等待貓咪睡著。

我給出的修改方案如下:

點(diǎn)擊運(yùn)行看效果,這里我只給出小老鼠收集第一根火柴時(shí)的過程。

滿分通關(guān)!

第99關(guān)

這一關(guān)與前幾關(guān)的不同之處在于,在這一關(guān)里,火柴是被螞蟻拖著不停運(yùn)動(dòng)著的。所以我們需要把前幾關(guān)的goto函數(shù)改成chase函數(shù)。

在左側(cè)的畫面框里,我們可以看到火柴是被螞蟻拖著不停運(yùn)動(dòng)著的。

在右側(cè)的代碼框里,系統(tǒng)把前幾關(guān)的goto函數(shù)改成chase函數(shù)。

我們需要定義chase函數(shù),chase是追逐的意思,也就是小老鼠要不斷面向火柴,并走向火柴,直到從螞蟻手里搶到火柴。

另外,在safeCollect函數(shù)里,我們依然需要像在第98關(guān)里一樣,加入until循環(huán),讓小老鼠不被貓咪抓到!

點(diǎn)擊運(yùn)行看看效果!

還不錯(cuò),滿分通關(guān)!

第100關(guān)

今天的最后一關(guān)!

猴博士好大的口氣,再來三個(gè)。。。什么?

是再來三個(gè)運(yùn)動(dòng)著的火柴!

左邊的畫面框是我們熟悉的界面,小老鼠在每次出去從螞蟻手里搶火柴之前,需要等待貓咪睡著。

右邊的代碼框里什么都沒有。

我根據(jù)前幾關(guān)的經(jīng)驗(yàn),寫出的代碼如下:

第1-4行,定義chase函數(shù)。

第5-9行,定義collect函數(shù)。

第11-14行,讓小老鼠收集每一根火柴。

當(dāng)然,我們也可以把until代碼放在collect函數(shù)里,然后把collect函數(shù)改寫成safeCollect函數(shù),代碼如下,我就不解釋了:

我們按照第一個(gè)版本的代碼運(yùn)行,看看效果如何!

這是小老鼠追逐第一根火柴的過程。

這是小老鼠追逐第三根火柴的過程。

滿分通關(guān)!


結(jié)語:

until函數(shù)對(duì)于循環(huán)次數(shù)不定的情況,比for循環(huán)更加靈活!

----------------------------------------------------------------------華麗的分割線----------------------------------------------------------------------

下一次教程,我們將學(xué)習(xí)if判斷語句,期待if語句可以讓我們寫出更加強(qiáng)大而靈活的代碼!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容