CODEMONKEY 166-172邏輯與事件- 成功的“鑰匙”

【166-172關】邏輯與事件-成功的“鑰匙”

在這節課中我們將了解什么是事件,以及計算機程序如何與鍵盤交互。

學習目標:

了解事件及事件處理程序

掌握onKey()函數的使用

知識講解:

事件&事件處理程序:事件是在代碼運行時,由用戶觸發的操作,并因此影響正在運行的程序。比如:我們用電腦看電影或者動畫片的時候,一般按下空格鍵就會暫停。再按下空格鍵,播放軟件的程序又會執行播放。

當我們在鍵盤上按下一個鍵,我們就觸發了一個鍵盤事件,此時onKey()函數就會被調用。這個函數我們可稱之為事件處理程序。onKey()函數會接收到一個參數“key”,就是我們按下的按鍵,函數內的代碼只有在按下按鍵的時候才會去執行。

實戰闖關:

第166關:根據右側的提示,當這段代碼在運行時,你可以按下任何按鍵,小猴就會前進。通過按下鍵盤觸發鍵盤事件,onKey()函數就會被調用,此時函數內的程序將被執行,運行看一看吧。

【166-172關】CodeMonkey事件處理程序【上】

原來是這樣。那么怎么樣才能通過一個按鍵控制小猴前進,一個按鍵控制后退,就像我們玩其它游戲一樣來控制移動?帶著這個問題我們繼續闖關看看。

第167關:本關我們還是看到了跟上關一樣的代碼,我們只要按下鍵盤上的鍵,看看代碼,小猴會怎么動呢? “ 撲通”小猴落水了,讓我改成正確的前進方向吧。

【166-172關】CodeMonkey事件處理程序【上】

第168關:在166關我們提出的疑問終于在這一關有了答案,如下圖所示。

【166-172關】CodeMonkey事件處理程序【上】

原來只需要在onKey這個鍵盤事件里判斷你按下的鍵是不是你設置的那個即可,如:if key == ‘w’如果按下的是w那么返回yes。這里要注意兩點:1、比較是否相等要使用兩個等號“==”不要錯了;2、與字符比較,字符要加上引號‘w’。

第169關:修改代碼,當按下 's' 的時候,小猴可以后退。

【166-172關】CodeMonkey事件處理程序【上】

看看右側程序,如果按下‘w’小猴前進,這樣就能吃到前面的香蕉,如果按下‘s’需要讓小猴后退,去吃掉后面的香蕉,這里有個很簡單的bug,修改一下即可輕松過關。

第170關:前進后退我們已經會了,這一關需要用一個鍵來讓小猴轉向,這樣才能得到右上角的香蕉。

【166-172關】CodeMonkey事件處理程序【上】

其實很簡單,我們自己定義一個鍵,比如‘l’讓小猴左轉,那么只需要用if判斷按下的鍵是‘l’的話,讓小猴執行左轉指令,這個很早就學過,是不是很簡單,然后就可以通過前進或者后退去控制小猴了。

第171關:既然可以控制小猴前進、后退、轉向,那么我們就可以控制小猴自由的行動了,因此取到這些香蕉就很簡單了。

【166-172關】CodeMonkey事件處理程序【上】

首先還是要處理鍵盤事件,代碼應該是onKey = (key) ->,如果你記不住,可以直接點擊下方的鍵盤圖標,就會自動生成,這樣我們只需要在這個事件里定義好控制小猴移動的按鍵,即可控制它去拿到香蕉了。

第172關:這一關可不是那么簡單了,如下所示,如果還是跟上一關一樣,用左轉,前進是沒法成功的,因為小猴不管怎么左轉都面對的是河水。

【166-172關】CodeMonkey事件處理程序【上】

怎么辦呢?對,我們可以在按下‘l’的時候讓小猴轉動的角度小一點(使用turn 角度),這樣就容易通過多次按下按鍵‘l’讓小猴對準小島的方向,不至于落水了。

答案:

【166-172關】CodeMonkey事件處理程序【上】

【166-172關】CodeMonkey事件處理程序【上】

【166-172關】CodeMonkey事件處理程序【上】

【166-172關】CodeMonkey事件處理程序【上】

【166-172關】CodeMonkey事件處理程序【上】

【166-172關】CodeMonkey事件處理程序【上】

但是這個答案無法獲得3顆星,提示用7行或更短的代碼來實現。于是刪減了代碼如下所示(想一想,該怎么操控小猴呢),便可成功控制小猴并取得三顆星。

【166-172關】CodeMonkey事件處理程序【上】

【166-172關】CodeMonkey事件處理程序【上】

(歡迎大家留言交流,希望本系列能幫助到學習中遇到困難的家長和孩子們,真正在玩中學習到知識。)

本站內容未經許可,禁止任何網站及個人進行轉載。