今天我們一起玩until循環的第91-95關。
第91關
我們來看看這一關的畫面。
在左側的畫面框里,小老鼠面向火柴,但火柴在螞蟻手里。我們來想象一下接下來會發生什么:小老鼠需要從螞蟻手里搶走火柴,然后轉向火柴堆,走到那里,放下火柴。
我們看看右側的代碼框。
空空的,一定是打開方式不對。
第二次打開后,依然還是空的。
看來這次是要我們自己寫出整個代碼了。
按照以上分析,我給出了如下的代碼示例:
點擊運行看效果!
三星通關!
第92關
在這一關里,小老鼠會遇到一個新的麻煩:過河,但不通過木橋。
我們看看左側的畫面框,因為小老鼠無法越過草叢,所以無法經過木橋過河。它過河的唯一方式就是通過小烏龜,所以我們需要小烏龜先游到小老鼠的面前。
再來看看右側的代碼。
第1,2行:在小烏龜接近木橋之前,小烏龜不停地旋轉1度。
整個代碼的錯誤就在這里,應該是“小烏龜不停地向木橋走1步”,所以應該把“turtle.turn 1”改成“turtle.step 1”。
第3行:小老鼠撿起火柴。
第4行:小老鼠走向火柴堆。
第5行:小老鼠放下火柴。
我們修改后的代碼如下:
點擊運行看效果:
三星通關!
第93關
我們先看看畫面和提供的代碼。
這一關與第91關的區別是,在91關里,螞蟻的運動軌跡和小老鼠在同一個方向上。而在這一關里,小老鼠橫著走,而小老鼠朝向上方。所以,小老鼠需要在螞蟻移動的過程中,不停地改變自己的朝向,從而一直向火柴走去。
系統給出的代碼如下:
只需要在第3行里加上“step 1”就可以了。
點擊運行看看效果。
三星通關!
第94關
在這一關里,我們需要用函數來包裝until指令以及相關的操作。
在左側的畫面框里,小老鼠依然朝向上方,而螞蟻拖著火柴依然是水平移動。
在右側的代碼框里,系統給出的代碼如下:
在代碼框里,第1-2行,我們要定義一個chase(追逐)函數,這個函數的對象是m,在接近m之前,我們需要小老鼠一直調整方向,面向火柴,并且向火柴走去。
在第4行里,“chase match”這行代碼讓小老鼠追逐火柴;
在第6行里,“chase pile”這行代碼讓小老鼠追逐火柴堆。
這里我們要注意的是,小老鼠既可以追逐運動的火柴,也可以追逐不動的火柴堆。
我給出的代碼如下:
點擊運行看效果!
三星過關!
第95關
如果小老鼠遇到很多運動中的火柴,它該怎么辦呢?
在左側的畫面框里,我們可以看到這一關與上一關的區別是,小老鼠需要追逐三根火柴,而不是一根。很自然地,我們可以運用for循環處理這么多跟火柴,而追逐每根火柴可以用chase函數來執行。
我們接著看看右側的代碼框:
在第1-3行里,我們需要定義chase函數,讓小老鼠追逐對象m(m是畫面框里的每根火柴)。
什么是追逐呢?就是火柴在哪里,小老鼠就一直看著火柴(turnTo m),并且向火柴追去(step 1),直到追上(near)火柴了。
我們需要在第2-4行里寫入如下的代碼:
點擊運行看效果!
三星通關!
今天的通關攻略就介紹到這里了。
這5關里,我們主要學會了如何處理火柴被螞蟻拖著不停地運動的場景,那就是讓小老鼠不停地面向火柴(turnTo match),走向火柴(step 1)。這些操作可以用一個chase函數來包裝。
下次,我們將更新第96到100關,這是until循環的最后5關。