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

極客小將

您現(xiàn)在的位置是:首頁 » scratch編程資訊

資訊內(nèi)容

Scratch全國少兒編程競賽獲獎(jiǎng)作品《穿越時(shí)空的大戰(zhàn)》解析下篇

極客小將2020-11-21-
Scratch全國少兒編程競賽 獲獎(jiǎng)作品解析 《穿越時(shí)空的大戰(zhàn)》 本文介紹的作品是全國青少年創(chuàng)意編程與智能設(shè)計(jì)大賽創(chuàng)意編程比賽一等獎(jiǎng)獲得者齊嘉懿同學(xué)的參賽作品。 作品說明 游戲主人公在名偵探柯南的幫助下,體驗(yàn)了最新的科技發(fā)明——AI機(jī)器人和

Scratch全國少兒編程競賽

獲獎(jiǎng)作品解析
《穿越時(shí)空的大戰(zhàn)》

本文介紹的作品是全國青少年創(chuàng)意編程與智能設(shè)計(jì)大賽創(chuàng)意編程比賽一等獎(jiǎng)獲得者齊嘉懿同學(xué)的參賽作品。

作品說明

游戲主人公在名偵探柯南的幫助下,體驗(yàn)了最新的科技發(fā)明——AI機(jī)器人和時(shí)光機(jī)。乘坐時(shí)光機(jī)回到過去之后,在AI監(jiān)測系統(tǒng)的幫助下,還原出了事實(shí)的真相,并成功帶領(lǐng)自家花園里的植物利用高科技裝備戰(zhàn)勝僵尸,保衛(wèi)家園的故事。
游戲中運(yùn)用到了變量、循環(huán)嵌套、克隆體、列表、字符串連接等功能,并用到了多種算法,包括遍歷算法、排序算法、求和、求平均值和最值等算法。
另外,游戲中還有很多原創(chuàng)的角色,如太陽花,AI防御網(wǎng)等。

正文upload/article/images/2020-11-21/e9ef530749b7f381cb1ec8128b7e926b.jpg

在上一篇文章中,我們完成了名偵探柯南發(fā)出的能量收集的任務(wù),開啟了時(shí)光機(jī),接下來我們就要穿越時(shí)空回到過去,參與一場僵尸反入侵的戰(zhàn)斗,保衛(wèi)媽媽的臥室。大戰(zhàn)即將開始,你準(zhǔn)備好了嗎,快點(diǎn)乘上時(shí)光機(jī)吧!

upload/article/images/2020-11-21/20a7e1eaa158b8de5ea3f85f54e16ef2.jpg

點(diǎn)擊“乘坐時(shí)光機(jī)”按鈕之后,游戲立即切換到時(shí)光機(jī)的場景,我們的游戲主角乘坐時(shí)光機(jī)正在穿越時(shí)空。咦,這段臺(tái)詞怎么這么熟悉?

upload/article/images/2020-11-21/479f789d9be7caefb1887d62edb64344.jpg

時(shí)光機(jī)著陸之后,入侵者立刻來襲。唉?這不就是植物大戰(zhàn)僵尸嗎!哈哈,相信同學(xué)們一定都玩過這個(gè)游戲,這里原來就是簡化版的植物大戰(zhàn)僵尸呀。大家都會(huì)玩這個(gè)游戲,但是可不一定知道如何用Scratch來制作出這個(gè)游戲。那接下來,果凍老師就和大家一起看看這個(gè)游戲是如何實(shí)現(xiàn)的吧。

當(dāng)背景換成草坪

植物大戰(zhàn)僵尸的游戲背景是一片草坪,所以僵尸呀、土豆呀、太陽呀都會(huì)響應(yīng)背景換成草坪這個(gè)事件。

upload/article/images/2020-11-21/899609bcd2d831fa700c2fcbb8e2da85.jpg

不用老師介紹,大家肯定知道這些都是植物大戰(zhàn)僵尸游戲中的角色。首先我們來看游戲中最重要的角色:僵尸。它們一個(gè)接一個(gè)的從屏幕右側(cè)出現(xiàn)并向左移動(dòng),最終的目的就是進(jìn)入并搞亂媽媽的房間。

upload/article/images/2020-11-21/6276377fa8302110ffe032c1fad33931.jpg

游戲開始后,每隔3秒克隆一個(gè)普通僵尸,一共克隆出10個(gè)。

僵尸一波一波的很可怕,我們必須抓緊時(shí)間消滅它們,在僵尸行走的過程中,我們有兩種方法可以消滅它們,第一種方法就是使用堅(jiān)果:

upload/article/images/2020-11-21/421ade444cf941058342a5e65146ed40.jpg

代碼中設(shè)置了移到x:238,所以僵尸會(huì)固定的出現(xiàn)在屏幕的右側(cè),但是y坐標(biāo)設(shè)置為-121和107之間的隨機(jī)數(shù),所以僵尸在縱向上是隨機(jī)出現(xiàn)的,它會(huì)朝屏幕左側(cè)一直行走,每一次行走的步數(shù)也是在5步到10步之間隨機(jī)的,所以僵尸的速度有快有慢,行走的過程中如果被堅(jiān)果砸到,那么僵尸數(shù)量這個(gè)變量的值就會(huì)減1,代表這個(gè)僵尸被消滅掉了。

如果僵尸走到屏幕最左邊了還沒有碰到堅(jiān)果,那么清除車就會(huì)出動(dòng)推走僵尸,這是消滅僵尸的另一種方法,但是每一行只有一個(gè)清除車,出動(dòng)一次就會(huì)少一個(gè)。

upload/article/images/2020-11-21/6da7bf12302be9a934e9dbf89ea07084.jpg

我們知道了使用堅(jiān)果可以消滅僵尸,那堅(jiān)果是如何產(chǎn)生的呢?這就涉及到了其中的這幾個(gè)角色:

upload/article/images/2020-11-21/844b97f35f25cf345c6f53b8c164d2e9.jpg

太陽花每隔一段時(shí)間會(huì)產(chǎn)生小太陽,收集小太陽到陽光銀行(SunBank)中,通過陽光銀行可以購買堅(jiān)果卡片,點(diǎn)擊堅(jiān)果卡片就會(huì)變成堅(jiān)果。這是正常產(chǎn)生堅(jiān)果的邏輯,但是由于我們參加的并不是游戲制作比賽,所以簡化版的游戲中收集太陽花和購買堅(jiān)果卡片都是電腦自動(dòng)運(yùn)行的。

那需要我們寫代碼實(shí)現(xiàn)的就是產(chǎn)生小太陽和卡片變堅(jiān)果的這兩個(gè)過程了。

首先來看產(chǎn)生小太陽的代碼。

upload/article/images/2020-11-21/0aa876b17a060020f12b052b5c3b0d96.jpg

游戲開始后,每隔1至2秒就會(huì)產(chǎn)生一朵小太陽,并且這朵小太陽從太陽花的位置向上飛到陽光銀行的位置。

upload/article/images/2020-11-21/8969fb259eb9ba884b4b02aaa2d6c90c.jpg

小太陽通過滑行語句飛向陽光銀行,然后增加了sun變量的值,最后消失。

卡片變堅(jiān)果的代碼就稍稍有點(diǎn)復(fù)雜了,代碼中需要完成鼠標(biāo)點(diǎn)擊的判斷以及土豆?jié)L動(dòng)撞擊消滅僵尸的效果。

游戲開始后,每間隔3秒鐘會(huì)自動(dòng)克隆出一張堅(jiān)果卡片:

upload/article/images/2020-11-21/2536ad53f58b13d4e9302978cafb51f8.jpg

堅(jiān)果卡片會(huì)沿著頂部的卡片框一直向右滑動(dòng),直到移動(dòng)到右邊框或者碰到其它的卡片才停止下來。

upload/article/images/2020-11-21/7344c8498751c812b5d3ceeb164810e5.jpg

在重復(fù)執(zhí)行的語句里面有一條等待的語句,這條等待語句的條件是角色X坐標(biāo)>60(移動(dòng)到方框的最右邊)或者碰到灰色(碰到其它卡片)不成立,也就是說如果條件不成立,就會(huì)一直運(yùn)行重復(fù)執(zhí)行語句,卡片會(huì)一直向右移動(dòng)。而當(dāng)?shù)却Z句的條件成立時(shí),代碼就會(huì)運(yùn)行到等待語句這里停止不再執(zhí)行重復(fù)語句,也就是說卡片會(huì)停下不再移動(dòng)了。

如果我們繼續(xù)用鼠標(biāo)點(diǎn)擊堅(jiān)果卡片的話,就會(huì)觸發(fā)克隆堅(jiān)果的命令:

upload/article/images/2020-11-21/ef88828d71feff60255dbadf5b8bf1c0.jpg

克隆的代碼很簡單,僅僅將堅(jiān)果顯示出來。

upload/article/images/2020-11-21/d1bb969df40b81b706e2485fee86fce9.jpg

而真正的處理邏輯代碼是寫在wall-nut這個(gè)廣播中的。

upload/article/images/2020-11-21/58757ac064a7b9f43d1080d298d93577.jpg

wall-nut廣播是點(diǎn)擊堅(jiān)果卡片后發(fā)出的,鼠標(biāo)松開后,首先堅(jiān)果初始化顯示第一個(gè)造型,并且在點(diǎn)擊鼠標(biāo)前一直跟隨著鼠標(biāo)的位置移動(dòng)。在重復(fù)執(zhí)行語句中拖入移到鼠標(biāo)指針語句就可以實(shí)現(xiàn)角色跟隨鼠標(biāo)的效果。

當(dāng)我們再次點(diǎn)擊鼠標(biāo)后,堅(jiān)果通過移到XY語句在鼠標(biāo)指針的位置處放下,但是這里沒有完全按照鼠標(biāo)指針的位置放置,堅(jiān)果的X坐標(biāo)通過了一個(gè)四舍五入和乘除的運(yùn)算語句稍稍前移了一下,這樣堅(jiān)果的初始位置會(huì)更加的合理。

接下來,在代碼中嵌套了兩個(gè)如果那么語句,第一個(gè)如果那么語句判斷堅(jiān)果的位置不能放在舞臺(tái)的邊緣,第二個(gè)如果那么語句判斷堅(jiān)果的位置必須是在紅線的左邊,如果這兩個(gè)條件不滿足的話,就不會(huì)執(zhí)行它們里面的語句。

它們里面放置了一個(gè)重復(fù)執(zhí)行語句,這個(gè)重復(fù)執(zhí)行語句的作用就是讓堅(jiān)果不停的向右滾動(dòng),直到舞臺(tái)右側(cè)。向右移動(dòng)通過移動(dòng)5步語句實(shí)現(xiàn),滾動(dòng)的效果通過不斷切換下一個(gè)造型實(shí)現(xiàn),要注意的是,如果堅(jiān)果變到了最后一個(gè)造型的話,我們需要手動(dòng)再將它切換到第一個(gè)造型,這樣堅(jiān)果的滾動(dòng)效果才會(huì)是循環(huán)不停的。在舞臺(tái)的最右側(cè)有一個(gè)黃色的豎線角色,重復(fù)執(zhí)行語句的條件就是判斷堅(jiān)果是否碰到了這條黃色豎線,如果碰到了就結(jié)束重復(fù)執(zhí)行語句,繼續(xù)執(zhí)行后面的隱藏語句,將堅(jiān)果隱藏掉。

堅(jiān)果滾動(dòng)過程中碰到僵尸的代碼邏輯我們在僵尸角色中已經(jīng)介紹過了。

好了,以上就是產(chǎn)生太陽、收集堅(jiān)果卡片、使用堅(jiān)果消滅僵尸的整個(gè)過程,經(jīng)過老師的介紹,游戲的過程是不是就很清晰了?相信同學(xué)們對代碼都已經(jīng)搞明白了,如果還有不懂的地方可以再返回去多看看幾遍。

https://cdn.china-scratch.com/timg/191122/143SH4P-15.gif

游戲中一共會(huì)出現(xiàn)20個(gè)僵尸,當(dāng)我們把這些僵尸都消滅完后,游戲的難度會(huì)提升,接著出現(xiàn)好多的僵尸坦克,這些坦克的速度可比僵尸快多了,堅(jiān)果對于坦克來說無疑是雞蛋碰石頭,毫無作用,所以我們推出威力巨大的椰子大炮,發(fā)射椰子炮彈來消滅坦克。

坦克來啦

upload/article/images/2020-11-21/e3c0d2f2b698c933d9a110fa32d75a3c.jpg

以上就是坦克大戰(zhàn)所涉及到的角色,其中僵尸坦克角色與上面僵尸的代碼非常類似,而椰子炮-炮架子角色的代碼則非常簡單,就不在這講解它們了。而剩下的兩個(gè)角色炮筒和炮彈老師則要說一說。

在堅(jiān)果卡片的代碼中,我們知道要讓一個(gè)角色隨著鼠標(biāo)移動(dòng)可以在重復(fù)執(zhí)行語句中加入一個(gè)移到鼠標(biāo)指針的語句。如果角色不是隨著鼠標(biāo)移動(dòng)而是要它固定在某個(gè)位置只是面向鼠標(biāo)指針的位置轉(zhuǎn)動(dòng)該怎么做呢?有同學(xué)想到了,就是把移到鼠標(biāo)指針語句換成面向鼠標(biāo)指針語句:

upload/article/images/2020-11-21/c2f146bd918efd7edf8826b9967d1c95.jpg

這樣,炮筒就會(huì)固定在舞臺(tái)區(qū)的左側(cè),并且隨著鼠標(biāo)指針的位置轉(zhuǎn)動(dòng),隨時(shí)準(zhǔn)備著朝向鼠標(biāo)的位置發(fā)射炮彈。

https://cdn.china-scratch.com/timg/191122/143ST425-18.gif

哇,坦克來的好快啊!我們必須趕緊消滅它們!

upload/article/images/2020-11-21/448d981a852c4e85fa5e33fb15e08419.jpg

點(diǎn)擊鼠標(biāo)之后,代碼會(huì)克隆出一顆炮彈,然后這顆炮彈會(huì)從炮筒的位置向鼠標(biāo)指針的位置發(fā)射出去,如果炮彈在運(yùn)行的過程中碰到了坦克就會(huì)將坦克消滅掉,最后它觸碰到舞臺(tái)的邊緣后被刪除,這顆炮彈的使命就完成了。

upload/article/images/2020-11-21/3c0905b1d9813726bcde6ec7b88646ad.jpg

二十幾輛僵尸坦克來勢洶洶,看似威猛,但是在我們的一頓操作之下也都被消滅掉了。

巨人僵尸出現(xiàn)

可是,游戲并沒有結(jié)束,屏幕右側(cè)又走出來一個(gè)巨人僵尸,什么!居然還有終極Boss,這是要挑戰(zhàn)我們的手速嗎?可是,無論我們點(diǎn)擊鼠標(biāo)、鍵盤如何操作都沒有反應(yīng),只能眼睜睜的看著這個(gè)巨人僵尸走過來一顆一顆的吞噬掉我們的堅(jiān)果。

https://cdn.china-scratch.com/timg/191122/143S96361-21.jpg

巨人僵尸一步步的向房間靠近,遇到堅(jiān)果(每個(gè)堅(jiān)果的右側(cè)都有一個(gè)藍(lán)色的小點(diǎn))就將它吃掉,我們只能在一旁看著悲劇發(fā)生,束手無策,這可怎么辦呀?

突然,游戲主角想到,在他乘坐時(shí)光機(jī)的時(shí)候,名偵探柯南同時(shí)為他帶來了一件巨型的防御武器,名字好像叫做AI防御網(wǎng),面對這個(gè)無法控制的巨人僵尸,是時(shí)候請出這個(gè)終極武器了!

https://cdn.china-scratch.com/timg/191122/143S935A-22.jpg

這個(gè)防御網(wǎng)呢,實(shí)際上是一個(gè)五邊形多層網(wǎng)狀結(jié)構(gòu)圖案,是通過Scratch軟件的畫筆擴(kuò)展模塊繪制出來的,圖案的樣子是這樣:

https://cdn.china-scratch.com/timg/191122/143Sa615-23.jpg

它由五個(gè)五邊形組成了一個(gè)花瓣的圖案,然后由內(nèi)向外一層一層堆疊起來。那如何使用代碼來畫出這樣的圖案呢,下面我們就一步一步來實(shí)現(xiàn)它。

第一步,定義好邊數(shù)、層數(shù)、角度這三個(gè)變量的值。

https://cdn.china-scratch.com/timg/191122/143Sa404-24.jpg

邊數(shù)設(shè)置我們要畫的圖案是幾邊形,每一層幾個(gè)圖案,很明顯我們的圖案是五邊形,每一層都有五個(gè)。

層數(shù)設(shè)置圖案一共重復(fù)繪制幾次,這里重復(fù)6次,也就是說有6層。

角度設(shè)置畫筆在畫第一筆時(shí)所面向的方向。

在繪制的過程中還涉及到一個(gè)變量,叫做邊長,它設(shè)置五邊形每個(gè)邊的長度,并且每繪制一層這個(gè)邊長的值就會(huì)增大,這樣五邊形一層就比一層的大。

第二步,使用畫筆畫出一個(gè)五邊形。

https://cdn.china-scratch.com/timg/191122/143S95192-25.jpg

代碼中,有一個(gè)重復(fù)執(zhí)行語句,它里面的移動(dòng)邊長步語句可以畫出一條線,畫完后畫筆向左旋轉(zhuǎn)360÷5=72度,這樣重復(fù)執(zhí)行5次,就完成了一個(gè)五邊形的繪制。

https://cdn.china-scratch.com/timg/191122/143S922V-26.jpg

第三步,在這個(gè)重復(fù)執(zhí)行的外面再套一層重復(fù)執(zhí)行,每畫完一個(gè)五邊形畫筆同樣左轉(zhuǎn)72度。

https://cdn.china-scratch.com/timg/191122/143T05D0-27.jpg

這樣,五個(gè)五邊形就組成了一個(gè)類似花瓣的圖案。

https://cdn.china-scratch.com/timg/191122/143T052J-28.jpg

第四步,在兩層重復(fù)執(zhí)行的外面再嵌套一層重復(fù)執(zhí)行,這次重復(fù)的次數(shù)是變量層數(shù)的值,也就是說我們要畫出6層的花瓣圖案。

https://cdn.china-scratch.com/timg/191122/143T01T9-29.jpg

每一層五邊形的顏色與邊長一樣也是變化的,這樣,強(qiáng)大的AI防御網(wǎng)最終就繪制完成了,代碼最后廣播巨人僵尸死去,可怕的終極Boss終于被我們收拾掉了,激烈的反入侵戰(zhàn)斗也停止了,我們完成了名偵探柯南賦予的任務(wù),成功的保衛(wèi)住了媽媽的房間!

https://cdn.china-scratch.com/timg/191122/143T01036-30.gif

總結(jié)

在這篇文章中,我們學(xué)習(xí)了《穿越時(shí)空的大戰(zhàn)》這部作品的后半部分,這部分內(nèi)容雖然不像上半部分內(nèi)容那樣有各種各樣讓人驚訝的編程技術(shù)和效果,但是它為我們展示了一個(gè)完整的植物大戰(zhàn)僵尸游戲的開發(fā)過程,這個(gè)過程中使用了很多的判斷語句,很多的重復(fù)執(zhí)行語句,還有各種的廣播、變量這些角色連接的方式,通過這個(gè)過程充分展現(xiàn)了參賽者的邏輯思維能力。何時(shí)僵尸應(yīng)該上場,何時(shí)坦克應(yīng)該出現(xiàn),如何使用堅(jiān)果消滅僵尸,如何繪制防御網(wǎng)的圖案,同學(xué)們不要小看這些內(nèi)容,如果說上篇文章是編程特技的展示,那這篇文章才是編程基本功的體現(xiàn),這些基本功看似平淡無奇,卻不是一天兩天能練成的,千里之行始于足下,沒有扎實(shí)的基本功就無法走的更遠(yuǎn),要想獲得全國比賽的一等獎(jiǎng),努力學(xué)好這篇文章的內(nèi)容才是最應(yīng)該的,加油吧,同學(xué)們!

聲明:本文章由網(wǎng)友投稿作為教育分享用途,如有侵權(quán)原作者可通過郵件及時(shí)和我們聯(lián)系刪除

預(yù)約試聽課

已有385人預(yù)約都是免費(fèi)的,你也試試吧...

主站蜘蛛池模板: 襄汾县| 台南县| 桓仁| 台安县| 太湖县| 钟祥市| 都昌县| 辽阳市| 昭平县| 平乐县| 霍邱县| 永靖县| 巴彦淖尔市| 锦屏县| 涟源市| 寿阳县| 泌阳县| 蒙自县| 鸡泽县| 宜黄县| 永康市| 汨罗市| 崇阳县| 昌黎县| 榆社县| 萨迦县| 兴宁市| 定州市| 江津市| 林甸县| 石河子市| 临猗县| 青岛市| 郴州市| 永春县| 阳新县| 鄢陵县| 阳山县| 策勒县| 高雄县| 石嘴山市|