前幾篇文章了老馮叔叔已經講了Scratch編程入門的方方面面,詳見玩轉Scratch文章系列,想必大家都已經迫不及待地想一試身手!好,我們現在就開始進入實戰階" />

国产日韩欧美一区二区三区综合,日本黄色免费在线,国产精品麻豆欧美日韩ww,色综合狠狠操

極客小將

您現在的位置是:首頁 » scratch編程資訊

資訊內容

Scratch編程實戰 之 投籃游戲

極客小將2020-11-19-
Scratch編程實戰之投籃游戲



前幾篇文章了老馮叔叔已經講了Scratch編程入門的方方面面,詳見玩轉Scratch文章系列,想必大家都已經迫不及待地想一試身手!好,我們現在就開始進入實戰階

Scratch編程實戰之投籃游戲

源碼下載鏈接:https://www.jikexiaojiang.cn/270.html

前幾篇文章了老馮叔叔已經講了Scratch編程入門的方方面面,詳見玩轉Scratch文章系列,想必大家都已經迫不及待地想一試身手!好,我們現在就開始進入實戰階段。

投籃游戲

我們的第一個例子,是從小貓投籃球開始,效果如下面的視頻:

圖1.Scratch編程實戰一-小喵投籃視頻

任務目標

  1. 貓能夠在場地內移動投籃位置,并且能夠自由起跳

  2. 籃筐能夠在屏幕的右上角的位置,隨機上下左右移動,增加小貓投籃的難度

  3. 小貓能夠投籃,籃球從上向下穿過籃筐才被認作得分

  4. 有記分牌,能夠記錄小貓能夠得到多少分

任務分解

小喵部分

  1. 首先在事件中選擇 綠色旗標啟動 按鈕被點擊的事件

  2. 選擇循環事件,處理左右按鍵的控制,按 左箭頭 鍵小喵向左移動,按右箭頭 鍵向右移動

  3. 當按向上鍵小喵起跳后,控制小喵的落地速度,同時控制小喵不要落到地面以下;

注意事項:小喵向左移動時,默認是小喵會頭朝下的,這里需要選擇翻轉方式為左右翻轉  

整體代碼部分如下圖所示,這里需要設置一個 cat falling speed  的變量,用來記錄小喵在垂直方向的起落速度;

upload/article/images/2020-11-19/9ea2e4c48656498964e121118ef41d26.jpg圖2.Scratch編程實戰一-小喵左右移動

籃球部分

  1. 到 sprite 庫中選擇 things 分類,選擇一個籃球;

  2. 同樣,在時間中選擇 綠色旗標啟動 按鈕被點擊的事件;

  3. 籃球的初始狀態是隱藏的;

    當 空格 鍵被點擊時,將籃球的位置設置為小喵的位置,并將籃球設置為可見狀態;

    同時,給籃球一個初始的垂直方向上的速度24;

  4. 設置一個循環狀態,重復如下事件:

    當籃球沒有落地時,修改籃球的水平方向坐標+8,根據籃球的速度修改其垂直方向的坐標,籃球的垂直方向速度是不斷-2的;

  5. 當籃球落地以后,將籃球設置為隱藏狀態;

代碼部分如下圖所示,這里需要設置一個 ball falling speed  的變量,用來記錄籃球在垂直方向的起落速度;

upload/article/images/2020-11-19/2c98fa3a9a751df9cd6466d3e63bfb47.jpg圖3.Scratch編程實戰一-籃球部分

籃筐部分

  1. 用畫筆工具新建一個sprite,選擇vector矢量圖模式;

  2. 在偏中心的位置勾出一個橢圓的矢量圖,這個橢圓表示籃筐;

  3. 再用畫筆工具新建一個sprite,bit圖模式即可,在橢圓中心點對應的位置,點一個2*2像素的點,表示籃筐的中心(老馮叔叔故意點了一個有顏色的點);

  4. 橢圓籃筐部分只做一件事,在 綠色旗標啟動      后,籃筐一直重復一個循環,所做的事情就是每隔一秒在限定的右上角范圍內變換到一個隨機位置;

  5. 籃筐中心sprite也只做一件事,就是在 綠色旗標啟動 后,一直追隨籃筐的中心位置;

代碼部分如下圖所示:

upload/article/images/2020-11-19/45076d19b4df963b420b6a3e90cf0cda.jpg圖4.Scratch編程實戰一-籃筐部分
upload/article/images/2020-11-19/d5582ed7ead31bf5642af1420f3fd48d.jpg圖5.Scratch編程實戰一-籃筐中心
得分處理
以上每個部分都完成了之后,我們發現小喵能動了,籃球也能投了,籃筐也是隨機運動了,還剩一個任務,就是小喵投籃得分的處理:

  1. 首先,小喵的投籃要從籃筐從上向下穿過籃筐的中心,才能被認定為得分

  2. 其次,為了增加趣味性,我們可以在小喵得分后,讓籃筐發出 wonderful 的提示

  3. 記分牌上記錄小喵投進去的總個數

關鍵的問題來了,也是編程中常見的問題,如何在不同的對象之間進行通訊,比如:這個游戲中我們判斷得分的標識是  籃球觸碰到了籃筐的中心,在程序中,我們怎么讓籃筐知道這個消息呢,畢竟,我們的例子中,籃筐和籃筐中心是兩個不同的 sprite  ?
Scratch 提供了 broadcast 廣播功能,就是一個  sprite 可以廣播一個消息出去,而其他的 sprite 可以接收這個消息并加以處理。
 好了,看代碼吧!
 籃球部分的代碼修改如下:

upload/article/images/2020-11-19/70820e72e64a98fc097d37b2d816b334.jpg圖6.Scratch編程實戰一-籃球最終
籃筐部分的代碼修改如下:
upload/article/images/2020-11-19/8c67f07ef0163ba46abdd654ebb2dc33.jpg圖7.Scratch編程實戰一-籃筐最終

任務總結

好了,整個代碼部分就講解完了,你可以手動嘗試一下,自己親手做的游戲,玩起來還是非常有意思的。游戲雖然相對簡陋,但該有的核心部分已經全部包括在其中了。我們看到的大型游戲,也是由一個個  sprite 組成,他們之間也需要進行通訊處理,原理和我們這個籃球游戲基本一致,只是他們做的更加精細,游戲邏輯相對更多而已。

這個例子就到這里,后續請繼續關注公眾號,跟著老馮叔叔和老劉叔叔一起學習其他例子吧!

聲明:本文章由網友投稿作為教育分享用途,如有侵權原作者可通過郵件及時和我們聯系刪除

預約試聽課

已有385人預約都是免費的,你也試試吧...

主站蜘蛛池模板: 宕昌县| 无极县| 越西县| 大兴区| 木里| 闽清县| 神农架林区| 凤阳县| 松江区| 佛教| 延吉市| 平远县| 福建省| 长汀县| 金湖县| 玉溪市| 天等县| 斗六市| 当阳市| 清河县| 静安区| 辛集市| 尼勒克县| 乐东| 华坪县| 嘉定区| 福清市| 石棉县| 灵台县| 方城县| 洛川县| 寿光市| 临桂县| 运城市| 楚雄市| 宜兰市| 保亭| 克什克腾旗| 肃宁县| 临夏县| 佛冈县|