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

極客小將

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

資訊內容

Scratch全國少兒編程競賽獲獎作品《瘋狂跑車》解析

極客小將2020-10-27-
Scratch全國少兒編程競賽 獲獎作品解析 《瘋狂跑車》 本文介紹的作品是全國青少年創意編程與智能設計大賽創意編程比賽一等獎獲得者童心愷同學的參賽作品。

Scratch全國少兒編程競賽



獲獎作品解析

《瘋狂跑車》

本文介紹的作品是全國青少年創意編程與智能設計大賽創意編程比賽一等獎獲得者童心愷同學的參賽作品。

upload/article/images/2020-10-27/853ec4b01d9e1840a32f9037e86e6e1f.jpg作品說明
upload/article/images/2020-10-27/ec46fa398a132dd2b13e485836cce911.jpg

這是一款將玩跑車與交通安全知識相結合的跑車游戲。通過這款游戲,玩家不僅可以訓練自己手腦協同反應能力,還能夠在游戲中學到各種《小學生交通安全知識》,通過寓教于樂方式加強知識的記憶,達到意想不到的學習效果。游戲應用了克隆、克隆體單獨控制、自定義積木塊、邏輯判斷、循環控制、隨機選擇等多種編程技術,增加了背景音樂和各種音效,各種技術手段相互嵌套使用,使得游戲的可玩性、趣味性和難易度都得到了很好的控制。

01
正文

做一名賽車手是很多男孩子的夢想,包括果凍老師小時候也是,那時候的四驅賽車是很多同學放學后相互比賽的玩具。大家一定看過《賽車總動員》這類的動畫電影,也一定玩過像《極品飛車》《QQ飛車》這樣的手機游戲,這些都是我們追求超越人體自身限制,實現速度夢想的載體。作為一名賽車的狂熱愛好者,童心愷同學今天為我們帶來了一款Scratch瘋狂跑車的游戲,這個作品擁有和其它賽車游戲一樣的追逐、躲避操作,但是還擁有不一樣的知識問答環節,將《小學生交通安全知識》與游戲結合在一起,童心愷同學是想告訴大家追求速度固然刺激,但是安全才是第一。

就像上面的作品說明中介紹的,游戲中應用了克隆、克隆體單獨控制、自定義積木塊、邏輯判斷、循環控制、隨機選擇等多種編程技術,增加了背景音樂和各種音效,各種技術手段相互嵌套使用。既然這個作品這么的厲害,那我們趕緊就來學習一下吧。

????點擊綠旗

點擊綠旗之后,舞臺區中首先映入眼簾的是游戲的開始界面。

upload/article/images/2020-10-27/5ddf481048849bfc1f2ce1015e419f6e.jpg

開始界面中包含有三個游戲元素:一個“游戲開始”按鈕,一個“游戲說明”按鈕,還有一張背景圖片。

在《視頻課1》這篇文章中,果凍老師給大家介紹了如何實現鼠標懸停按鈕變大的效果,而這里的兩個按鈕呢就使用到了文章中介紹的方法:

upload/article/images/2020-10-27/fc17ba619a601851d98285088611992a.jpg

當把鼠標放在按鈕上時,按鈕會變大,提示我們可以點擊它。于是,我們就先來點擊一下“游戲說明”按鈕,看看游戲是怎么操作的吧。

upload/article/images/2020-10-27/83ea4c33d15b24bb5c0dcacca694c760.jpg

點擊“游戲說明”按鈕后會發出顯示說明的廣播,接收這個廣播的當然就是說明的文字角色了。

upload/article/images/2020-10-27/543887821b1e5b9e4a261fe70fb30f05.jpg

接收到顯示說明的廣播后,說明角色的代碼非常簡單,把自己顯示出來就可以了。

upload/article/images/2020-10-27/7106d99063183aa3bb9916c84e5174a9.jpg

屏幕中的文字告訴我們,通過鍵盤上的上下左右按鍵控制跑車的方向,并躲避石頭或者其它車輛。每一局有3次生命值,如果跑車撞到石頭或者其它車輛都會減少1次生命值,3次生命值減少到0則游戲結束。游戲的過程中需要撿拾賽道上的金幣,一個金幣代表一分,游戲結束后會按照得分進行排名。游戲的賽道中還會隨機的出現紅包,撿到紅包會出現交通安全知識問題,答對問題后可以一次性獲得10個金幣,并且跑車的速度會減慢。游戲結束后輸入玩家的姓名,還可以存儲玩家的游戲成績。

好,了解游戲的玩法之后,我們就點擊右下角的返回按鈕,去開始比賽吧!

? ? ?倒計時

在《極品飛車》這類手機游戲中,每一局比賽開始前都有一個3,2,1的倒計時過程,這個過程也是模擬現實中賽車比賽的,它讓所有參賽車手做好心里準備,系好安全帶,油門踩到底,準備出發!同樣,這里也不能少了這個流程,當我們點擊“游戲開始”的按鈕之后,代碼就會發出倒計時的廣播。

upload/article/images/2020-10-27/f0b007fee4eebb0eec204221b0b1255b.jpg

按下鼠標判斷的語句,也就是點擊按鈕的代碼中,有一條將y坐標設為-130的語句,這條語句的作用是將原本顯示在屏幕中間位置的“游戲開始”按鈕移動到屏幕下方,這樣是為了設置競賽時游戲暫停后開始按鈕顯示的位置。

接著,設置屏幕上顯示出生命值、金幣數、速度值這三個變量的值,這是游戲中最重要的三個變量,就如同賽車的儀表盤一樣,它們顯示出了游戲中最關鍵的三個指標值。

然后,代碼中發出了倒計時的廣播并且等待接收這個廣播的角色執行完。接收廣播的一定就是倒計時角色了。

upload/article/images/2020-10-27/641d2fc455a947a8573149ec847728a8.jpg

不知道同學們是否還記得在《喜迎奧運會》這個作品中,滑雪的游戲前也有一個3,2,1的倒計時,可見,和體育競賽相關的作品都少不了倒計時的過程。《喜迎奧運會》中的倒計時是通過切換角色的造型來實現的,而這里也是一樣的,3,2,1每個數字都對應有一個造型,我們在代碼中只要按順序切換下一個造型就可以了。

upload/article/images/2020-10-27/be32c60ca4ebd54e12e47acc6cb95009.jpg

重復執行一共會執行3次,每次切換角色的造型為下一個,同時游戲中還會同步發出倒計時的音效,在角色的聲音選項卡中分別導入了名字為1,2,3,Go的聲音文件,代碼中我們需要使用播放聲音語句結合-倒計時這個變量,使得聲音與造型在游戲中同步切換與播放。

倒計時的代碼運行完后,會將是否移動和isPlayLive?這兩個變量的值設置為1,是否移動這個變量非常重要,它是觸發比賽開始的關鍵元素。代碼中接著會發出ok的廣播,從這里開始,游戲就進入真正的比賽環節了,我們需要操控賽車躲避障礙并完成答題任務。

https://cdn.china-scratch.com/timg/200117/105T45626-10.gif


開始比賽


從上面的截圖中可以看到,比賽開始之后,屏幕中出現了很多的游戲元素,其中有地線、紅包、石頭、金幣、路邊的裝飾,還有玩家控制的賽車以及隨時出現的其它賽車。

upload/article/images/2020-10-27/0521f607f1064d71b40492b9d6335fdc.jpg

游戲的背景是這樣的:

upload/article/images/2020-10-27/c17fc15abeeb9c44b3675faae2949993.jpg

而上面的這些角色組合起來就在背景上實現了競速、躲避、得分、問答的這些游戲功能。下面果凍老師和大家一起來看看它們的代碼吧。

首先是地線這個角色,它的造型呢就是一條白色的豎線。

upload/article/images/2020-10-27/7fdb4d38427ce2afcea0bed18f7e5553.jpg

而游戲中可以看到,道路中間白色實線的兩側分別都有一條白色的虛線,而且這兩條虛線還會不停的向下移動,那一個單獨的地線角色是如何實線兩條虛線的樣式呢?不用老師再介紹了吧,這一定使用了克隆大法。

upload/article/images/2020-10-27/5b6deadbfcbf59459773fc4a551bc621.jpg

前面說過是否移動這個變量非常重要,當倒計時完成后就會將它的值設置為1,所以說我們可以通過這個變量來判斷比賽是否開始。如果比賽開始了,我們就每隔一段時間克隆一次地線角色,而這個間隔時間并不是固定的,游戲開始時,速度值這個變量的值被初始化成5,所以一開始每間隔1÷5=0.2秒克隆一段豎線,隨著跑車速度不斷的變快,速度值變量的值也會增加,而克隆的間隔時間就會變得越來越短,反映到屏幕上我們看到的道路虛線就會向下移動的越來越快。

克隆的過程寫成了一個自制積木,由于道路兩邊分別有兩條虛線,所以自制積木中要克隆兩次:

upload/article/images/2020-10-27/5bbc5e4c00c8fd0a6a94da956b2fd209.jpg

這時候,在道路的最上方左右兩側就會各出現一個白色的豎線。

upload/article/images/2020-10-27/68f8f665e1ec19f854ceff046e6c7f37.jpg

雖然代碼一直在重復執行,但是克隆出的豎線都顯示在同一個位置上了,所以接下來我們要讓這些豎線向下移動,模擬出道路虛線在移動的效果。

upload/article/images/2020-10-27/129990b4c3724e1ec7d0ba5c8fed6fbe.jpg

這些豎線向下移動的速度也是在變化的,隨著跑車的速度不斷加快,豎線的移動也相應的加快,這樣游戲整體的速度變化效果才能是一致的。

https://cdn.china-scratch.com/timg/200117/105U361Y-18.gif

OK,地線角色從一個白色的豎線克隆變成兩條不斷移動的虛線的過程果凍老師就介紹完了,后面的角色就不會像地線角色這樣說的這么詳細了,因為它們和地線角色一樣,都是克隆出很多替身,然后在道路上不停的向下移動,所以代碼基本上都是類似的,而老師只會講解那些不同的地方。

第二個角色,紅包。紅包與地線角色一樣,也是每隔一段時間克隆一次自己,不同的是克隆的間隔時間是隨機的,而且紅包的顯示位置也是隨機的。

同學們都知道,紅包角色最重要的功能就是,當賽車碰到紅包時,游戲中會出現交通安全知識問題,答對問題就會一次性獲得10個金幣的獎勵。既然要答題,那就必須提前準備好一套題庫,那這套題庫放在哪里呢?有同學立馬想到了,對!就是列表,Scratch中能夠能夠保存數據的元素有兩個,一個是變量,一個是列表,變量適合保存單個并且簡單的數據,而多項數據,類似于一道一道題目的數據保存在列表中是最適合不過了。

有題目,那對應的必須有答案,所以,我們分別創建了名字為題目與答案的兩個列表,這兩個列表是屬于紅包角色的私有列表,然后按順序一一對應的將文字內容輸入進去就可以了。

upload/article/images/2020-10-27/d1508bc1f2e258436f09ccad2b6b6127.jpg

童心愷同學在題庫中預存了86道交通安全知識問題,同學們有沒有感受到一絲絲的恐懼啊,這可比學校期末考試的試題數量還要多啊!可是,交通安全可不是開玩笑的,亂闖紅燈、不按規定行車那是會威脅到每個人的生命安全的,所以題目再多我們都必須全答對,大家說對不對?

好了,題庫已經有了,那接下來在代碼中每次賽車撿到一個紅包,就隨機的從題庫中抽取一道試題。

upload/article/images/2020-10-27/512c9df3f216e8c6aaa4212e1c498d1a.jpg

這段代碼很長,果凍老師給每一行都添加了說明注釋,方便大家理解。

代碼中涉及到了幾個變量。第一個-id變量用于區分問題答對的前后,因為問題答對前與答對后角色的造型是不一樣的,一個會顯示為紅包的造型,一個會顯示為金幣的造型。

第二個是否移動變量,這個變量在之前介紹過,它用于判斷游戲是否開始,當值為1時,賽車就會一直進行著比賽,當值為2時,比賽會暫停,因為當玩家答題的時候是不需要比賽運行的。

第三個是隨機變量,它保存了數字1和題目的項目數(即86)之間的一個隨機數,這個隨機數后面會在題庫中取出相應的題目和對應的答案。

第四個變量是回答,它用于保存玩家輸入的文字,并且用于判斷回答是否正確。代碼中還有一個叫答案的變量,它保存的就是題目的正確答案,當玩家回答錯誤時,使用這個變量可以顯示出正確答案。

第六個變量,速度值,在地線角色中也使用到了這個變量。這里每當我們答對一次問題,速度值都會減去1,這樣游戲的難度就會減小,但是速度值最小不能小于5。而我們答錯問題的時候,速度值就會增加1,相應的游戲難度也會增加,但速度值最大不會大于15,否則,玩家就反應不過來了。

第七個變量計時,這個變量主要用于游戲時間的計算,每過一秒它的值就增加1,當計時變量的值增加到10時,就會將速度值變量加1,并且計時變量重置為0,換句話說游戲每過10秒,速度值就會增加1,游戲難度就會增加一級。但是如果我們答對了問題,除了速度值減1外,計時變量也會重置為0,這無疑使得游戲的難度大大降低了。

好,理解了這七個變量的含義后,基本上紅包角色的邏輯就搞清楚了。

當我們答對問題之后,屏幕中會克隆出10枚金幣,并且自動增加到金幣數這個變量之中。

https://cdn.china-scratch.com/timg/200117/105U64K5-21.jpg

十枚金幣依次從賽車的位置滑行到屏幕左上角金幣數變量顯示的位置,并將變量的值增加10,同時游戲后臺會播放收獲到金幣的聲音,大家玩游戲的時候應該最愛聽到這種聲音了吧,是不是?哈哈!

到這里,第二個紅包角色的代碼就分析完了,一個紅包就能一次獲得10枚金幣,還能減緩賽車速度,這簡直就是開掛的獎勵啊!還猶豫什么,這個紅包是必撿的啊。

https://cdn.china-scratch.com/timg/200117/105UK501-22.gif

第三個角色,石頭,它是游戲中的障礙物,碰到它就會使生命值減1,所以大家要離這個東西遠一點。同樣的,石頭每間隔一段時間出現,出現的時間也是隨機的。

石頭角色一共有三種造型:

https://cdn.china-scratch.com/timg/200117/105Z63G3-23.jpg

這三個造型看起來區別不大嘛!它們會在游戲中隨機的出現。

https://cdn.china-scratch.com/timg/200117/105Z61923-24.jpg

如果賽車碰到了石頭,生命值就會減少1次:

https://cdn.china-scratch.com/timg/200117/105ZA949-25.jpg

代碼中有一個無敵?的變量,這是不是說明賽車可以開啟無敵模式?哇,太棒了,這才是神級開掛啊!但是別著急,無敵模式我們后面再看,這里如果沒有開啟無敵,那游戲就會暫停并且將生命值變量減去1,接著會發出啟動特效的廣播。

接收啟動特效廣播的角色是爆炸特效:

https://cdn.china-scratch.com/timg/200117/105ZH4S-26.jpg

它會模擬出賽車碰撞燃燒爆炸的效果:

https://cdn.china-scratch.com/timg/200117/105ZH438-27.jpg

角色一共有6個造型,在代碼中將這些造型按順序顯示一篇就形成了爆炸的效果。

同時,還會判斷是否還有生命值,如果還有命,那么就會將是否移動變量設置為1,游戲繼續進行。

https://cdn.china-scratch.com/timg/200117/105ZW0a-28.gif

第四、第五個角色分別是錢和路邊裝飾,這兩個角色就沒有什么特別的要介紹了,賽車撿到錢,也就是金幣會增加金幣數,而路邊裝飾就是賽道兩邊裝飾性的房子和樹木,它們只是隨著賽道一起移動罷了。

第六個角色,車2,也就是賽道上的其它跑車,是另一種障礙物,碰到它們同樣會減少游戲的生命值,不同的是,石頭在賽道上是固定不動的,可是這些跑車與玩家控制的賽車一樣是在運動中的,所以它們更加的危險。而且,這些跑車還會從上下兩個方向隨機的駛出來,上面出現的車還好躲,但是下面出現的就太考驗我們的反應能力了,這無疑會增加游戲的難度。

https://cdn.china-scratch.com/timg/200117/105915K30-29.jpg

從代碼中能夠看到,上下兩個方向的跑車是隨機出現的,通過面向XX方向語句可以調整車頭的方向,四個造型對應不同的四種顏色款式的跑車,它們也會在游戲中隨機出現。接著使用重復執行直到語句配合將y坐標增加XX語句使跑車一直的移動,你發現了嗎?朝下移動的跑車是比朝上移動的跑車速度快一點點的。

到這里,開始比賽的廣播發出后,游戲中所涉及到的角色就介紹的差不多了,最后還有一個,那就是玩家操控的賽車角色了,我們需要控制它躲避石頭,躲避其它跑車,撿拾金幣,撿拾紅包并回答問題。

玩家操控賽車的代碼:

https://cdn.china-scratch.com/timg/200117/1059155557-30.jpg

果凍老師玩著玩著突然發現一個問題,這是一個沒有終點的游戲!只要不碰到石頭或者其它跑車,比賽就不會停止而一直進行下去,童心愷同學這是在考驗老師的耐力呀!

還有一點老師要提醒一下,游戲并不能手動開啟無敵模式,無敵的狀態只有在賽車剛剛啟動不斷閃爍的時候是開啟的,經過短暫的幾秒后,賽車就恢復了正常的狀態。想要開掛作弊的同學還是不要妄想了,乖乖正常的游戲吧,除非。。。你自己寫一個無敵模式!

當賽車碰到石頭或者其它賽車三次之后,生命值變量就減為了0,這時候代碼會發出game over的廣播。

GAME OVER

游戲結束后,屏幕上首先會出現GAME OVER的提示。

https://cdn.china-scratch.com/timg/200117/1059152102-31.jpg

同時,F1世界冠軍得主,傳奇車手費爾南多·阿隆索會出現并告訴小朋友們,要想成為一名合格的賽車手,安全知識的學習是必須過關的哦。

https://cdn.china-scratch.com/timg/200117/1059161456-32.jpg

傳奇車手提示我們接下來輸入我們自己的姓名,并按下空格鍵,進入整個游戲的最后一步。

https://cdn.china-scratch.com/timg/200117/10591BF6-33.gif

https://cdn.china-scratch.com/timg/200117/1059193112-34.jpg排行榜https://cdn.china-scratch.com/timg/200117/1059193V4-35.jpg

游戲的最后一頁其實是一張排行榜,記錄我們每次游戲獲得的金幣數,并進行排序。這一段代碼還稍稍有點復雜,果凍老師就拿出來再講一下。

當接收到game over1的廣播后,首先會讓玩家輸入姓名:

https://cdn.china-scratch.com/timg/200117/10591a5F-36.jpg

記錄信息這個自制積木就是記錄本局獲得的金幣數,并顯示出排行榜列表:

https://cdn.china-scratch.com/timg/200117/1059192515-37.jpg

實現排行榜列表并不是想象中那么簡單,要將每一局獲得的金幣數插入正確的位置,需要判斷不同的列表狀態。第一種狀態,排行榜列表是空的,也就是第一次完成游戲后,這種情況很簡單,將用戶名和本次獲得金幣數直接插入列表就行了。第二種列表狀態,排行榜不是空的,但是本局的金幣數小于排行榜最后一名的分數,那我們直接將金幣數添加到排行榜的最后一行就可以。第三種列表狀態,排行榜不是空的并且本局的金幣數需要插入到列表的中間,這種情況稍稍有點復雜,我們需要將排行榜進行循環,將金幣數與每一行的分數進行對比,如果大于了某一行的分數值,那就將這個金幣數插入到這一行的上方。

第二種列表狀態需要取得最后一名的分數,第三種列表狀態則需要循環取得每一行的分數。取得分數的過程則是通過“獲得冒號后的數字”這個自制積木實現的。

https://cdn.china-scratch.com/timg/200117/1059206321-38.jpg

排行榜中每一行的數據都形如“張三:45”這樣,要獲取每一行中的分數,就需要先知道冒號的位置,然后再將冒號后面的數字取出來,并保存在retVal變量中。代碼中有兩個重復執行,第一個重復執行就是找出冒號的位置,然后在第二個重復執行中把冒號后面的數字保存在變量中。其中,有一個j變量很重要,兩個重復執行中都用到了它,這個變量是一個數字變量,每次循環它的值都會增加1,主要的作用呢就是通過它來取出數據中的每一個字符。

排行榜作為最后一個界面,當它顯示出來時整個游戲也就結束了。

https://cdn.china-scratch.com/timg/200117/105921GD-39.jpg

? ? ?

總結

《瘋狂跑車》這個游戲作品的代碼到這里就學習完了,其中,比較核心的編程技術就是克隆,無論是賽道上的地線,還是能夠增加得分的金幣、紅包,又或是阻礙賽車行駛的石頭和其它跑車,都是通過克隆技術實現的。然后再配合上隨機數語句,就可以源源不斷的產生各種不同造型的石頭與跑車。游戲的最后還實現了一個排行榜的功能,排行榜實際上就是數學中比較簡單的一種排序算法,通過重復執行遍歷整個列表,將金幣數與列表中的分數進行對比,最后將金幣數插入合適的位置。同學們別忘了,老師在文章里還給你留了一個小任務,就是給游戲添加上無敵模式,你有沒有思路了呢?好好的想一想,如果想好了就趕快去實現吧。



預約試聽課

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

主站蜘蛛池模板: 肇州县| 东丰县| 东丽区| 宕昌县| 长沙市| 德昌县| 普兰县| 新巴尔虎右旗| 南和县| 太原市| 中江县| 大竹县| 新乡县| 怀仁县| 盐津县| 黑山县| 海口市| 娱乐| 寿光市| 甘孜县| 阿拉善盟| 江安县| 行唐县| 北票市| 调兵山市| 德江县| 南川市| 水富县| 英山县| 常宁市| 文登市| 桂平市| 牡丹江市| 错那县| 呼和浩特市| 盐津县| 磐石市| 泰安市| 桃江县| 揭东县| 剑河县|