今天我們将完成一個擋闆彈球遊戲。
00 軟件分析 需求說明:
編寫一個遊戲程序,從屏幕上方落下彈力球,碰到舞台左右牆壁時,或擋闆時,球按照現實世界的物理規則彈跳。落到舞台底部地面時,遊戲結束。擋闆随着鼠标的移動而左右移動,玩家控制鼠标移動以便不讓球落到地面上。記錄擋闆接住球的次數,和玩家的遊戲時間。
需求分析:
需要至少兩個角色,球和擋闆;鼠标控制擋闆左右移動,但在上下方向固定不動;球以随機的角度向下方移動,角度值、速度值待定;球碰到牆壁、擋闆就反彈;球碰到舞台底部,程序終止球碰到擋闆,得分加1程序開始後,開始計時,程序終止時,停止計時01 添加角色 按照上面的分析,添加球和擋闆兩個角色。
1、如圖點擊添加角色圖标,選中【選擇一個角色】
2、然後在角色庫中選中“Ball”。重複該操作,再從角色庫中選中“Paddle”,作為擋闆。當然,你也可以選中自己喜歡的角色。
3、删除不需要的默認角色1。
02 調整角色的大小 将角色調整到合适的大小。我将球調整到70,擋闆調整到80。
03 更換舞台背景 按照你自己的喜好,将默認的舞台背景替換成合适的背景圖。
簡單起見,我使用默認的白色背景圖。
04 創建變量 提前建立兩個變量,接球個數和遊戲用時,方便後續使用。
05 給擋闆編程 擋闆的邏輯比較簡單,需求列表中“跟随鼠标左右移動”适合放在擋闆角色中實現,但是,擋闆接住球得分之類,初步分析可能放在球角色的代碼中更合适一些。
06 給球編碼 球角色的編碼要複雜一些,主要包括以下内容:
1、通過“計時器”完成遊戲用時的邏輯;
2、程序開始執行後,初始化變量,将變量設置為0;
3、設置球運動的起始位置和起始角度,我們将球的位置設置在舞台頂部中央,或者,你也可以将球放置在舞台頂部的任意位置(思考下如何修改代碼)。球的起始運行角度限定在一個範圍内,随機取值;
4、将球運動的邏輯放在一個“無限循環”之内,每次移動5步。可以通過修改這個值,改變遊戲的難度;
5、[碰到邊緣就反彈],這個積木很重要,正是它才使得球碰到舞台的左右和上面邊緣時可以自動的轉移方向;
6、不停的監控球是否碰到擋闆,如果碰到,則給得分加、播放一個碰撞音效。
7、更重要的是往上方反彈,起初我考慮應該參考真實的物理原理來設置球反彈的角度(回彈角度等于下落),可是這樣做了後才發現,球的運行軌迹變得很機械,所以,最終改成了現在這樣的在一個範圍内取随機的反彈角度。
點擊查看大圖
上面的編碼還有幾個值得注意的地方:
1、同一個角色中可以使用多個(當被點擊] 積木,這樣可以實現兩段邏輯被同時執行;
2、上面用到兩個“偵測類”積木,得到 (鼠标的x坐标) 和判斷擋闆是否 碰到 Ball ? 角色。經常查看偵測類積木,也許就會發現你很有用的功能。
另外,在剛才的編碼過程中,發現一個Scratch 3.0新增的小技巧,在這裡特别拿出來和大家分享。
添加 [面向___方向] 積木,當鼠标進入輸入框後,輸入框下方會出現一個類似于時鐘的圓盤,它實時顯示輸入框中方向值在界面上的實際指向,同時可以通過這個圓盤上的指針設置輸入框的值。這種操作真實太直觀了!!
更多關于“方向”的知識可以查看曆史文章《Scratch運動積木》的第2部分。
07 補全遊戲失敗的邏輯 上面球角色的代碼還缺失球落到舞台底部的邏輯,這時遊戲失敗并終止。
檢查球是否落在舞台底部,有若幹種方法,比如:
判斷球的y坐标值是否小于某個範圍,比如球y坐标-175;在舞台底部放置一個角色,角色的造型是一根長橫線,檢查球是否碰到該角色;在舞台背景圖底部畫一根彩色線,檢查角色是否碰到該顔色,這就要求線的顔色在舞台和其他角色上都沒有出現過; 我為大家演示第1種方法的代碼,後兩種可以作為課後練習。
上圖設置“y坐标-150”的原因是:橫版固定在-150位置。所以,低于它時,表明球已經接不住了,也就是失敗了。這時候 [停止 全部腳本 ] ,就會停止兩個變量“接球個數和遊戲用時”的計數,球的移動,以及擋闆随鼠标移動。
08 完工!運行程序 至此,我們完成了“需求說明”中的全部内容。
點擊舞台左上角的小旗子運行程序,看看效果吧。
附加練習修改程序終止的邏輯,使用文中提到的另兩種方式判斷球落地文中用鼠标控制擋闆移動,改成鼠标方向鍵或鍵盤上某兩個特定按鍵控制擋闆移動将點擊小綠旗開始程序,改成點擊鍵盤空格開始程序 tag:#Scratch編程、#少兒編程、#兒童編程、#趣味編程、#青少年編程、#軟件編程
,
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!