Hello,今天我們來設計一款自已的游戲:我先來描述一下游戲的場景,妖怪使用詭計把悟空的金箍棒騙到了山上的茅草屋里,悟空下決心要打敗妖怪,找回如意金箍棒,他來了到了妖怪的老巢,一個蝙蝠怪把守著茅草屋的入口,悟空如果碰到蝙蝠怪,游戲就會結束,我們現在實現一段程序算法,來幫助悟空找回金箍棒吧
#### ## 騰訊視頻課程地址:https://v.qq.com/x/page/v0753si3c5s.html

我們玩兒游戲的時候可以通過手柄的上、下、左、右鍵來控制角色的移動的方向,不管是使用手柄、鍵盤、還是鼠標,我們總是可以控制游戲中的人物移動,今天就讓我們實現 利用鍵盤控制角色移動的功能吧,
**#### 本節課知識點:
1、使用鍵盤上的方向鍵控制角色在舞臺區的動作
2、使用“碰到顏色”代碼塊來控制角色移動的范圍**
打開scratch編程界面,我們想要實現的效果是,按下鍵盤的上移鍵,可以讓悟空向舞臺區的上方移動,按下左鍵可以讓悟空向左旋轉,按下右鍵可以讓悟空向右旋轉,
首先我們從動作模塊組里拖動一個移動10步的代碼塊出來,悟空在什么情況下才會移動呢?嗯,需要一個判斷語句,從控制模塊組中找到條件判斷語句,放在綠旗被點擊的下方,并且把移動10步的代碼塊放到判斷語句的執行部分,判斷語句已經有了,那么srcatch是如何識別鍵盤的向上鍵被按下了呢?這是我們這節課所要學的新功能,從代碼選擇區的偵測模塊組里邊選擇“按鍵空格鍵是否被按下”,拖動到我們的腳本區中,點擊下拉菜單將空格鍵變為向上方向鍵,然后把這個偵測條件拖動到條件判斷語句當中,現在這段代碼的意思就是:“如果鍵盤上的向上鍵被按下,就讓悟空移動10步”,

之前我們講過電腦會按照我們寫好的程序一步一步順序的執行,在我們現在寫好的代碼中,當綠旗被點擊時,它會順序執行下面的代碼,也就是它會判斷上鍵被按下了嗎?當然我們在點擊綠旗的一瞬間,向上鍵當然是沒有被按下的,所以程序不會執行判斷中的移動10步的代碼,

接下來程序繼續執行,但是我們的程序下方已經沒有任何代碼了,所以,這個算法結構已經執行完畢,所以我們現在需要實現一段不停的 判斷的功能,我們知道無限循環可以實現這個功能的,我們從控制區拖動無限循環代碼出來,

現在讓我們來看一下添加了無限循環后程序是如何運行的吧,當綠旗被點擊時,程序就進入了無限循環中,首先它會判斷一次鍵盤的上鍵被按下了嗎?由于這個時間向上鍵沒有被按下,所以不會執行中間的移動10步語句,這個時間呢我們的程序會繼續向下執行,當執行到程序末尾,由于添加了無限循環代碼,程序會返回到剛剛開始的地方,也就是再次判斷鍵盤向上鍵是否被按下,這個時候鍵盤的上鍵還是沒有被按下,程序執行完這次循環后,又會回來再次判斷鍵盤上的上鍵是不是被按下,這個時候如果我們按下了向上鍵,程序就會執行移動10步的代碼了,當然無限循環中的判斷會一直不停的進行,我們只要按下向上鍵悟空就會一直向前移動,如果這個時候我們松開了向上鍵,程序再執行向上鍵是否被按下的代碼時,發現向上鍵沒有被按下,那程序就不能執行移動10步的代碼了,
回到scratch中,來運行一下試試,很好,現在悟空可以順利的向前移動啦,但是移動的速度太快了,怎么讓它移動的速度變慢一點呢?我們經過前面幾節課的學習,知道可以更改移動10步代碼里的數字,把它變小移動的速度就會變慢了,再按下向上鍵試試,嗯,非常好,現在速度已經很合適了,
悟空走到了通道的拐彎處,我們想實現按下鍵盤上的右鍵實現讓悟空向右旋轉的功能,判斷右鍵按下了嗎的代碼和判斷上鍵被按下了嗎的代碼是類似的,我們只需要按下鼠標右鍵復制,然后將判斷條件里的“上移鍵”改為“右移鍵”就可以了,判斷條件我們已經設置好了,那么按下向右鍵是想讓悟空向右旋轉的,所以,我們需要把判斷結果里的移動10步代碼去掉,在動作模塊組里拖動“向右旋轉15度”的代碼放到我們判斷結果中,我們來試一下吧,嗯,旋轉的速度太快了,把旋轉15度,改為旋轉3度試試,嗯,現在悟空旋轉的速度很合適了,類似的,你一定也能寫出左鍵控制悟空向左旋轉的代碼了吧?

我們在這里直接復制一下,ok,現在悟空能夠左右自由旋轉了,我們現在要準備實現下一步的游戲規則了,如果碰到那個飛來飛去的妖怪,我們就讓悟空切換為死亡狀態,并停止游戲,
這個效果是如何實現的呢,聰明的你應該想到了吧,這里也需要加入一個判斷,
我們需要判斷悟空是否碰到了蝙蝠怪,然后在判斷的條件部分拖入偵測模塊組里的“碰到鼠標指針”代碼塊,將鼠標指針切換為蝙蝠怪
,
再從外觀模塊組里拖入切換造型代碼塊,并選擇悟空的死亡狀態,然后從控制模塊組里拖動停止全部代碼出來,放到切換狀態代碼的下邊,
好了,這段代碼的意思就是,如果碰到蝙蝠怪,悟空就死亡了,并且需要停止游戲的所有腳本,
這段代碼也是需要不斷重復偵測悟空是否碰到了蝙蝠怪,所以也需要嵌套進重復執行的腳本里,運行一下,嗯,這段代碼和我們預設的功能一樣,非常完美,OK,
這里需要對悟空的狀態和位置造型進行一下初始化,我們前面幾節課學習過初始化的操作了,這里老師直接把初始化的代碼加入進來,放到綠旗被點擊代碼的下方,
好,同樣的,當悟空搶回金箍棒的時候,是不是也要做和碰到蝙蝠同樣的判斷呢?
那么,我們來實現一下吧,從偵測模塊組里拖動碰到鼠標指針代碼塊,將鼠標指針切換為金箍棒,當碰到金箍棒的時候,悟空就會把金箍棒收起來,用程序語言我們可以用scratch的廣播的功能實現,大家是否還記得我們前面學過的唐詩繪本的制作呢,在那節課里我們學習了廣播消息的使用,在這里我們可以這樣設計,當悟空碰到金箍棒就廣播一條“金箍棒隱藏”的消息,

然后在角色區點擊金箍棒這個角色,在金箍棒的腳本界面里實現隱藏功能代碼,當接收到“金箍棒隱藏”消息的時候,我們從外觀模塊組里拖動隱藏代碼塊進來,這樣金箍棒就隱藏了,好了,到此為止,大功告成,我們來體驗一下自已的作品吧,我們終于幫忙悟空搶回了金箍棒,小朋友們趕緊保存一下,然后去和同學們分享你的作品吧。我們下節課見
- scratch課標
- 第一課
- scratch編程環境
- scratch介紹
- scratch編程環境各區域詳解
- 課堂實戰
- 第二課
- 知識點:讓角色動起來
- 課堂實戰一:小松鼠跳過河-設置角色名稱和大小
- 課堂實戰二:小松鼠跳過河-模擬重力加速度效果
- 第三課
- 知識點:程序的入口和出口
- 知識點:程序的三種執行結構
- 課堂實戰
- 第四課
- 知識點:角色造型概念
- 課堂實戰:唐詩繪本
- 第五課
- 知識點:角色特效展示&隨機數使用
- 課堂實戰
- 第六課
- 知識點:鍵盤方向鍵使用
- 第七課
- 知識點:偵測模塊之碰到顏色
- 課堂實戰:迷宮
- 條八課
- 知識點:克隆實現
- 課堂實戰:豌豆射手
- 第九課
- 知識點:變量應用
- 第十課
- 知識點:程序進階之自定義模塊
- 第十一課
- 知識點:精美的幾何世界之畫筆使用
- 課堂實戰進階:九九乘法表實現
- 第十二課
- 項目實戰:尋找蛋糕(一)
- 課堂實戰
- 咨訊
- 韓國將"編程"納入小學必修課程
- 家長認知
- STEAM教育理念應用的鑰匙-scratch少兒編程語言
- 習大大主持開幕的人工智能大會上講了啥
- 9.19 習大大主持開幕的人工智能大會講了啥