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

極客小將

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

資訊內容

Scratch編程之飛機大戰

極客小將2020-10-22-
Part 1 開始scratch編程 首先,我們需要一個編寫Scratch的工作環境,可以選擇在線開發或者下載離線IDE工具 在線開發環境:https://scratch.mit.edu/projects/e

Part 1 開始scratch編程

首先,我們需要一個編寫Scratch的工作環境,可以選擇在線開發或者下載離線IDE工具

  • 在線開發環境:https://scratch.mit.edu/projects/editor/?tutorial=getStarted

  • 下載離線工具:https://scratch.mit.edu/download

下載離線工具時請選擇對應的操作系統版本

upload/article/images/2020-10-22/a7972f5a87029fcbf58997625dd12dac.jpg

選擇操作系統版本和下載

下載后正常安裝軟件即可。

打開在線開發環境或打開離線工具進入編程主界面

upload/article/images/2020-10-22/48242fb4a5ee5d81c6f51ce41662f401.jpg

開發界面介紹

試著做一個小功能

  1. 從左側的積木中找到“事件”中的“當旗子被點擊”,拖動到中央空白處

  2. 從左側的積木中找到“運動”中的“移動10步”,拖動到中央空白處,將數字10改成100

  3. 將兩個積木組合到一起,如下圖

upload/article/images/2020-10-22/16a6db14cd2467d2067d539b276fd1b7.jpg

組合兩個積木

點擊右上方的綠色旗子

upload/article/images/2020-10-22/15d6d4614268efe2458efe7c4c23e422.jpg

點擊旗子開始執行

屏幕中的小貓朝著面對的方向移動了100步

upload/article/images/2020-10-22/1b3067050e585fb85051e51b0ad997c7.jpg

小貓移動了100步

雖然很多積木你還不了解怎么用,但Scratch的基本操作你已經掌握了。隨著深入的學習,你可以了解更多的積木的用途,從而搭建出更復雜的程序。

Part 2 背景和角色

2.1 背景
2.1.1 選擇預設背景圖片

首先,我們需要為項目添加背景。游戲的故事背景,呃…是在宇宙中吧,那么我們可以自己選擇一張喜歡的宇宙背景或者是工具中預設的背景。此處我選擇了工具中預設的Stars背景 鼠標移動到右下角的選擇背景按鈕上,點擊“選擇一個背景”

upload/article/images/2020-10-22/a147a02d9051eb06ada007e454d06690.jpg

選擇預設背景

在打開的窗口中選擇喜歡的背景,此處我們選擇“Stars”

upload/article/images/2020-10-22/fb3ad34a4b508224f2cc935d18e6a6de.jpg

選擇了Stars背景

可以看到小貓所處的背景已經更改為Stars的效果

upload/article/images/2020-10-22/d1c66266e865aaca1c67997c73c2182f.jpg

背景更換效果

2.1.2 上傳自定義背景

點擊“上傳背景”,上傳自己喜歡的圖片作為背景

upload/article/images/2020-10-22/0c1f690c19939a63837dcfd61d945320.jpg

上傳背景

這是上傳背景的效果

upload/article/images/2020-10-22/94e0063797a9fa8014989d08c2dce01e.jpg

上傳背景效果

2.1.3 刪除不使用的背景

右下側“舞臺”可以管理所有已設置的背景。點擊當前背景(下圖中的“背景3”)

upload/article/images/2020-10-22/5c09cb6416b89d16dbf65a7fe69a9d2d.jpg

點擊舞臺背景

整個工具編程了背景設置界面。此時點擊下圖上方的選項卡可以在“代碼”,“背景”和“聲音”之間切換 左側紅框內是已經設置好的三個背景,分別是“預設的空白背景”,“Stars”和“上傳背景”。可以點擊左側背景小圖標上的x進行刪除。

upload/article/images/2020-10-22/20a7c33e52728084c738ef8c6a326bdc.jpg

界面變化

此處我們刪除背景1(預設的空白背景)和背景3(本地上傳的背景),只保留我們需要的Stars背景

upload/article/images/2020-10-22/95f3ce9bfd6ff317fbdffe45924e1943.jpg

刪除多余的背景

現在我們完成了背景的設置

2.2 角色
2.2.1 刪除預設角色

此時點擊右下方工作區的小貓(角色1),點擊x刪除小貓角色

upload/article/images/2020-10-22/43bdd1e1f11fba4b46a559398e0f6d1c.jpg

刪除預設的小貓角色

2.2.2 添加預設角色

點擊右下方的角色按鈕可以添加系統中的預設角色

upload/article/images/2020-10-22/c4657e1227c33966ade6dbedecb8ede8.jpg

upload/article/images/2020-10-22/e551af5ef8575103ab73a1e83fbf79d8.jpg

選擇角色選擇喜歡角色

我們此時不需要使用預設角色,可以點擊左上的“返回”回到編程頁面

2.2.3 上傳角色

點擊“上傳角色”從本地計算機中上傳繪制好的角色圖片。本小節結尾處有資源鏈接

upload/article/images/2020-10-22/b48bb8c36eb5201ccf65ddb92d1a7142.jpg

上傳角色

我們上傳了資源“craft_player.png”,效果如下。

upload/article/images/2020-10-22/f186f396322883a847d0c6c44389cf22.jpg

新的角色

可以看到資源在整個背景下非常大,方向是朝向右側。通過調整上圖紅框的“大小”和“方向”來更改飛機的顯示大小和朝向。使用鼠標拖動屏幕的飛機可以更改飛機的位置

upload/article/images/2020-10-22/3f04f2983134432491f788d2a0248cfd.jpg

調整后的效果

最后我們依次上傳其他角色并調整大小和方向

upload/article/images/2020-10-22/146c35529e3f9c32326175f00a62f067.jpg

上傳所有角色并調整

背景和角色我們設置完成

角色圖片資源請訪問百度網盤 鏈接: https://pan.baidu.com/s/1YDEM-yr4wqriEuoOY9BwRw 提取碼: fmw9

Part 3 坐標,事件及運動

本小節主要是添加家控制的飛機角色(craft_player)的相關動作和時間 選中角色craft_player,我們需要將它控制在屏幕底部,并且可以在按下←鍵和→鍵時可以在底部左右移動

坐標

首先,我們需要確定整個屏幕的坐標,scratch設置屏幕中心為坐標原點(0,0),x軸正向為右,y軸正向為上,具體見下圖。

upload/article/images/2020-10-22/ac27eb0cbd80948066f7fc239cbd94f6.jpg

坐標系

如果我們想讓craft_player在屏幕底部,通過設置合適的坐標即可

https://cdn.china-scratch.com/timg/200413/1236032946-21.jpg

設置craft_player在屏幕下方中間

初始事件

在craft_player的代碼選項卡中添加“事件”積木

https://cdn.china-scratch.com/timg/200413/1236034K9-22.jpg

初始事件積木

我們希望當游戲開始時,craft_player能在屏幕的底部中央,剛才已經得出坐標應該是(0,-150) 所以我們希望當初始事件執行時,我們的飛機在那里,通過在運動中找到如下兩個積木,這兩個積木的主要作用是設置craft_player的坐標位置。

https://cdn.china-scratch.com/timg/200413/12360311Y-23.jpg

設置坐標位置積木

我們此時將craft_player的x坐標設置為0,y坐標設置為-150,并與初始事件積木組合到一起

https://cdn.china-scratch.com/timg/200413/1236052R0-24.jpg

積木組合

這個“事件”積木表示當按下鍵盤上的某個按鍵時發生的事件

https://cdn.china-scratch.com/timg/200413/123605D04-25.jpg

按鍵積木

此處我們將其改為按下←鍵觸發

https://cdn.china-scratch.com/timg/200413/1236056129-26.jpg

按下←鍵觸發事件

找到“動作”中”將x坐標增加”的積木

https://cdn.china-scratch.com/timg/200413/1236056232-27.jpg

增加x坐標積木

將它與按下←鍵的積木組合到一起,并調整數值,當按下←鍵時,x坐標是一直減少的,所以將積木中的數值設為-10。

https://cdn.china-scratch.com/timg/200413/1236056337-28.jpg

組合積木

此時點擊綠旗子開始,按下←鍵會發現craft_player可以一直向左 同理,按下→鍵的功能類似,只不過是需要增加x坐標

https://cdn.china-scratch.com/timg/200413/1236056012-29.jpg

組合積木

整體代碼,此處無法上傳動圖顯示效果,可以點擊←鍵和→鍵控制飛機在底部移動。

https://cdn.china-scratch.com/timg/200413/12360C4E-30.jpg

完工效果

Part 4 循環控制和顯示隱藏

接下來我們進行craft_player發射單個子彈的操作 首先選擇角色“bullet_player”

https://cdn.china-scratch.com/timg/200413/1236061016-31.jpg

選擇bullet_player角色

在中間空白處開始編程,當游戲開始時讓子彈在craft_player角色的機頭位置出現。選擇初始事件積木

https://cdn.china-scratch.com/timg/200413/12360C200-32.jpg

初始事件積木

選擇“運動”分類中的“移到隨機位置”積木

https://cdn.china-scratch.com/timg/200413/12360B2a-33.jpg

移動位置積木

選擇為“移到craft_player”位置

https://cdn.china-scratch.com/timg/200413/12360C493-34.jpg

移動位置積木

將兩塊積木組合至一起

https://cdn.china-scratch.com/timg/200413/12360633K-35.jpg

積木組合

點擊綠旗子開始后,顯示效果如下

https://cdn.china-scratch.com/timg/200413/12360J962-36.jpg

顯示效果

bullet_player(子彈)與craft_player(飛機)位置重疊,我們需要調整bullet_player的坐標,使其向上移動,根據上一小節坐標的描述和實際情況我們調整如下

https://cdn.china-scratch.com/timg/200413/12360G008-37.jpg

調整子彈在玩家y坐標上方30的位置

這樣子彈就在飛機的上方出現

https://cdn.china-scratch.com/timg/200413/12360J4L-38.jpg

實際效果

接下來讓子彈動起來,子彈每隔一小段時間應該繼續向上移動。此處我們使用“重復執行”控制,讓子彈不斷的去調整自己的y坐標,直至屏幕頂部。

https://cdn.china-scratch.com/timg/200413/12360V162-39.jpg

重復執行調整子彈y坐標

實際效果(無法以動圖方式演示),注意下圖紅框內子彈已發射至屏幕頂部

https://cdn.china-scratch.com/timg/200413/12360Q425-40.jpg

子彈發射至頂部

此處可以選擇有條件的重復執行,當子彈坐標高于180時隱藏子彈 首先找到“運算”中的“大于”比較

https://cdn.china-scratch.com/timg/200413/1236094V3-41.jpg

大于比較

在“運動”中找到“y坐標”

https://cdn.china-scratch.com/timg/200413/12360964D-42.jpg

y坐標

組合積木并調整為“y坐標>180”

https://cdn.china-scratch.com/timg/200413/12361042D-43.jpg

組合積木調整比較內容

在“控制”中找到“重復執行直到”積木

https://cdn.china-scratch.com/timg/200413/12361025T-44.jpg

有條件重復執行

組合“重復執行”和“y坐標>180”積木

https://cdn.china-scratch.com/timg/200413/123610DL-45.jpg

組合積木

替換之前的無條件重復的積木,最終積木組成如下

https://cdn.china-scratch.com/timg/200413/1236104b0-46.jpg

組合積木

在,事件開始時添加“外觀”中的“顯示”,在結尾添加“外觀”中的“隱藏”

https://cdn.china-scratch.com/timg/200413/123610GK-47.jpg

完整實現

現在我們完成了單個子彈發射的功能

Part 5 克隆體

上一小節我們講了如何發射一顆bullet_player(子彈),本小節我們利用克隆功能完成子彈的自動發射功能 首先點擊craft_player角色,查看代碼。找到“控制”中的“克隆”積木。這個積木的作用是復制某個角色。

https://cdn.china-scratch.com/timg/200413/12361161c-48.jpg

克隆積木

子彈是一直發射的,所以我們找到“控制”中的“重復執行”積木,并將兩者結合,調整“克隆”積木為“克隆bullet_player”,如下圖

https://cdn.china-scratch.com/timg/200413/1236125222-49.jpg

組合積木

將這部分積木與原有的積木組合

https://cdn.china-scratch.com/timg/200413/123612K40-50.jpg

組合積木

點擊綠旗子執行的效果如下

https://cdn.china-scratch.com/timg/200413/123612O04-51.jpg

執行效果

可見子彈生成的間隔太短,所以很密集。調整“重復執行”中的代碼,讓子彈的生成有一定的間隔,找到“控制”中的“等待x秒”積木,調整數值,組合積木如下

https://cdn.china-scratch.com/timg/200413/1236126432-52.jpg

https://cdn.china-scratch.com/timg/200413/1236134400-53.jpg

組合積木執行效果

但現在有個問題,移動飛機后,發現子彈沒有移動

https://cdn.china-scratch.com/timg/200413/1236131J4-54.jpg

執行效果

原因在于bullet_player中的代碼,是當“綠旗子”觸發時,才執行一系列操作,飛機移動時,克隆的子彈并沒有隨著飛機移動。

https://cdn.china-scratch.com/timg/200413/1236133S0-55.jpg

原積木組合

原因找到了,主要是觸發的事件不正確,在craft_player(飛機)角色中我們不斷的克隆了bullet_player(子彈),所以子彈中應該以“當作為克隆體啟動”事件觸發,我們將觸發“事件”由“初始事件”改為“當作為克隆體啟動”。同時當子彈隱藏時,將克隆體(自身)刪掉 如下圖

https://cdn.china-scratch.com/timg/200413/123613Cb-56.jpg

新積木組合

可以看到執行效果,子彈可以隨著飛機移動生成了

https://cdn.china-scratch.com/timg/200413/123613O20-57.jpg

執行效果

Part 6 廣播

接下來,這個小節我們介紹如何生成敵機 利用之前所學的知識,我們可以很容易的生成敵機 選擇craft_enemy(敵機)角色,先點擊“隱藏”,將角色本體隱藏。

https://cdn.china-scratch.com/timg/200413/123614D08-58.jpg

隱藏敵機本體

同理,bullet_enemy也可以以此方式隱藏

在craft_enemy(敵機)的編程區域完成積木組合,當“初始事件”開始后,“重復執行”,每隔3秒“克隆自己” 積木組合如下:

https://cdn.china-scratch.com/timg/200413/1236144507-59.jpg

積木組合

接下來,當敵機作為克隆體出現時,我們需要控制它在隨機位置的頂部出現,出現后每隔一段時間向下飛行一段距離,直至到達底部,完整積木組合如下

完整地積木組合

上述積木組合用之前小節所學的知識完全可以自行實現。

Part 7 變量

如果按照之前的發射玩家子彈的方式編寫,是不可行的,因為玩家控制的飛機(craft_player)在整個屏幕中只有一個,而敵機(craft_enemy)是克隆體,在屏幕中可能同時出現多個。解決辦法是我們通過敵機克隆體發射子彈時向一個公共變量賦值,敵機子彈(bullet_enemy)的克隆體通過訪問公共變量進行初始化 首先我們在“變量”中“建立一個變量”,名字是ex

新建變量

這個時候可以看到下面有兩個選項

  • 適用于所有角色:這個變量存儲的數字可以在不同角色間訪問,用于傳遞數據。

  • 適用于當前角色:這個變量只限當前角色,不能在角色間共享。可以理解為它們分別是“全局變量”和“局部變量” 同時我們也建立“全局變量”ey,這樣通過兩個“全局變量”ex和ey將敵機(craft_enemy)發射子彈瞬間的坐標記錄,讓敵機子彈克隆體(bullet_enemy)去訪問坐標完成自己初始化的操作 建立變量ex和ey

在敵機的移動邏輯中添加生成子彈的積木,敵機(craft_enemy)角色修改后的全部內容如下

敵機角色craft_enemy完整積木

設置敵機子彈(bullet_enemy)角色的全部內容如下

敵機子彈bullet_enemy完整積木

實際運行結果如下,可以看到敵機的子彈非常密集

運行效果

這是主要由于移動和生成子彈的間隔都是0.05秒

問題原因

解決這個的辦法是,我們可以利用一個計數器變量,再“重復執行”中進行累加,即每隔0.05秒計數+1,當到達20的倍數時,我們再執行克隆子彈的操作,0.05×20 = 1秒,也就是說子彈可以每隔1秒才發射一次,但移動還是每隔0.05秒進行移動簡歷一個“局部變量”用于計數器,名字是count

計數器變量

調整敵機(craft_enemy)角色的積木如下

調整后的敵機角色積木組成

運行效果

敵機發射子彈的時間間隔變長

至此,敵機的生成和子彈發射全部完成

Part 8 偵測和邏輯組合

我們希望當子彈碰到敵機時,敵機毀滅。這個時候我們需要檢測當我們子彈在飛行時,是否碰到了敵機。此時我們需要在bullet_player(子彈)的飛行過程中進行檢測 此時我們可以認為某個子彈在以下兩種情況下會消失

  • 沒有碰到敵機,飛出邊界。這部分功能我們已經實現了

  • 碰到敵機,敵機毀滅,子彈消失。兩者滿足其一即可,此時我們需要進行邏輯判斷

與,或和非是編程中最重要的三個個邏輯

  • 與:( 條件A 與 條件B )表示兩個條件必須同時滿足

  • 或:( 條件A 或 條件B )表示兩個條件滿足其一即可

  • 非:( 非條件A)表示與條件A相反

體現在積木中是“運算”中的如下三個積木

與,或和非

此時,子彈(bullet_player)角色在飛行中的重復執行條件需要進行更改 原來的積木組合如下

原有積木組合

此時需要多加一個“或”條件,更改如下

添加”或”條件

另一個條件是子彈(bullet_player)角色碰到了敵機(craft_enemy)角色。在“偵測”積木分類中可以找到“碰到xxx”積木

碰撞檢測積木

選擇后組裝積木得到積木組合如下

bullet_player組合

運行效果

子彈碰到敵機不會穿過

同理,將敵機子彈(bullet_enemy)角色修改當碰到飛機(craft_player)時也消失

敵機子彈(bullet_enemy)完整積木組合

Part 9 外觀控制

當敵機(craft_enemy)被子彈擊中時,應該觸發銷毀效果。我們首先需要做的是,為敵機設置一個局部變量表示生命值(health),當敵機被子彈擊中后減少它的生命值,直至生命值為0停止繼續飛行并銷毀敵機 利用之前小節提到的變量聲明使用,碰撞檢測和邏輯條件組合,修改敵機(craft_enemy)的積木如下

敵機craft_enemy的代碼

上傳敵機毀滅的造型

造型窗口

選擇資源文件上傳

image.png

添加代碼當敵機生命值為0時,產生旋渦特效并切換為毀滅狀態。每個0.02秒敵機模型旋轉15,執行4次后切換為毀滅狀態,停留0.3秒后消失

切換特效

完整敵機代碼如下


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

預約試聽課

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

主站蜘蛛池模板: 赤峰市| 荆州市| 新蔡县| 雷波县| 石门县| 米林县| 北海市| 新津县| 江城| 墨玉县| 谢通门县| 海口市| 招远市| 青龙| 四会市| 响水县| 安化县| 新营市| 瑞昌市| 宜黄县| 奇台县| 通化县| 昌乐县| 上虞市| 昌平区| 合肥市| 黑河市| 五峰| 吉木萨尔县| 调兵山市| 临海市| 武安市| 安西县| 岳阳市| 澳门| 盖州市| 尚志市| 龙陵县| 德令哈市| 应城市| 桃园县|