資訊內(nèi)容
Scratch全國(guó)少兒編程競(jìng)賽獲獎(jiǎng)作品《火車站廣播系統(tǒng)》解析
Scratch全國(guó)少兒編程競(jìng)賽
獲獎(jiǎng)作品解析

本文介紹的作品是全國(guó)青少年創(chuàng)意編程與智能設(shè)計(jì)大賽創(chuàng)意編程比賽一等獎(jiǎng)獲得者果源同學(xué)的參賽作品。
作品說明作品的設(shè)計(jì)目標(biāo):提醒工作人員對(duì)列車進(jìn)站做好準(zhǔn)備,提醒旅客及時(shí)上車以免延誤,為旅客提供準(zhǔn)確詳細(xì)的檢票信息。隨著國(guó)際開放融合,更多的外國(guó)游客來到中國(guó),聽不懂中國(guó)話,無法交流,直接影響他們的出行,所以為本系統(tǒng)加入了英語播報(bào)。
本系統(tǒng)模擬石家莊火車站的情況,對(duì)接車(工作人員專用,所以無英文廣播)、檢票、停止檢票環(huán)節(jié)進(jìn)行設(shè)計(jì),實(shí)現(xiàn)語音自動(dòng)播報(bào)。滿足工作人員及旅客的需求。
游戲中的變量以及作用
變量名稱 |
作用 |
---|---|
檢票車次 | 記錄需要檢票的車次信息 |
循環(huán) | 記錄當(dāng)前正在處理車次信息的第幾個(gè)字符 |
指導(dǎo) | 用于判斷使用指導(dǎo)列表是否打開 |
列表 |
|
檢票口 | 記錄檢票口1和檢票口2的信息 |
使用指導(dǎo) | 車站廣播系統(tǒng)的幫助信息 |

經(jīng)過這兩個(gè)多月的學(xué)習(xí),果凍老師帶領(lǐng)大家一起解析了五部Scratch全國(guó)競(jìng)賽的獲獎(jiǎng)作品,這些作品擁有不同的主題,不同的編碼技巧和不同游戲效果,但是,它們有一點(diǎn)是相同的,就是代碼“很龐大”,動(dòng)輒就要幾十個(gè)角色,一個(gè)角色就要上百行語句,果凍老師不得不分為上下篇來介紹。今天,我們要解析的這個(gè)作品有點(diǎn)與眾不同,它很“精簡(jiǎn)”,一共就五個(gè)角色加一個(gè)背景,所有角色的語句加起來不過一兩百行,可是,這也是一等獎(jiǎng)的獲獎(jiǎng)作品哦,沒有想到吧!那它獲獎(jiǎng)的原因到底是什么呢?別著急,我們一點(diǎn)一點(diǎn)來看。
首先,和往常一樣,還是從點(diǎn)擊綠旗開始。


點(diǎn)擊綠旗后,作品中所有的角色就一下子就全都上場(chǎng)了,不落下一個(gè)角色,它們都會(huì)響應(yīng)點(diǎn)擊綠旗的事件。
一共有四個(gè)按鈕,一個(gè)車站的圖片,一個(gè)背景。
其中,三個(gè)藍(lán)色按鈕的代碼非常簡(jiǎn)單,就是把按鈕定位在不同的位置上。
車站圖片顯示在所有按鈕的后面,背景的前面,并且設(shè)置了虛像特效讓圖片半透明,使得背景的顏色可以透過圖片看到。
黃色按鈕,除了設(shè)置定位,還有初始化變量、列表的語句。
背景的代碼也非常簡(jiǎn)單,僅僅是初始化循環(huán)這個(gè)變量,為后面的代碼做好準(zhǔn)備。
以上這些代碼設(shè)置對(duì)應(yīng)在屏幕上,效果是這樣的:


屏幕上一共有四個(gè)按鈕,分別是使用指導(dǎo)、接車、檢票、停止檢票。第一步,我們點(diǎn)擊左上角黃色的使用指導(dǎo)按鈕,看一看這個(gè)車站廣播系統(tǒng)應(yīng)該如何使用。
同學(xué)們一定知道在數(shù)學(xué)中有一類數(shù)字叫做整數(shù),比如1,2,3,4......這些數(shù)字都是整數(shù)。而整數(shù)又可以分為偶數(shù)和奇數(shù),能夠被2整除的數(shù)叫做偶數(shù),2,4,6,8......都是偶數(shù);不能被2整除的數(shù),或者說被2除余1的數(shù)則叫做奇數(shù),1,3,5,7......這些數(shù)字都是奇數(shù)。一個(gè)整數(shù)它要么是偶數(shù)要么是奇數(shù),只有這兩種狀態(tài),并且按照順序數(shù)數(shù)的話,剛好是一個(gè)奇數(shù)一個(gè)偶數(shù)這樣岔開的。而一個(gè)開關(guān)按鈕也只有兩種狀態(tài):開和關(guān),于是,我們可以將整數(shù)的狀態(tài)與開關(guān)按鈕的狀態(tài)對(duì)應(yīng)起來,偶數(shù)對(duì)應(yīng)開,奇數(shù)對(duì)應(yīng)關(guān),這樣,我們就可以通過數(shù)字來控制列表的打開關(guān)閉了,就像上面的代碼中展示的一樣。


使用指導(dǎo)告訴我們,下面的三個(gè)按鈕對(duì)應(yīng)三個(gè)語音廣播的功能,點(diǎn)擊第一個(gè)按鈕并輸入火車車次信息,語音廣播就會(huì)進(jìn)行接車播報(bào)。
點(diǎn)擊第一個(gè)按鈕之后,會(huì)發(fā)出接車的廣播(這里的廣播是Scratch的指令,不要和上面的語音廣播混淆了哦),接收這個(gè)接車廣播的角色是背景:
背景接收到接車命令后,會(huì)使用詢問語句讓用戶輸入接車的車次信息,比如我們輸入G234,然后回車,這時(shí),代碼就會(huì)將輸入的內(nèi)容保存在回答這個(gè)語句中。
接著,回答語句作為輸入項(xiàng)被傳送到接車這個(gè)自制積木中。
接車這個(gè)自制積木才是火車站廣播系統(tǒng)的核心代碼,它是系統(tǒng)語音的后臺(tái)拼接控制模塊。
首先,我們一起看一下這個(gè)核心模塊中最重要的資源:聲音。點(diǎn)擊軟件左上角的聲音選項(xiàng)卡后,會(huì)發(fā)現(xiàn)這里已經(jīng)上傳了很多很多的聲音文件。
這些聲音文件就是實(shí)現(xiàn)廣播系統(tǒng)必不可少的資源,我們將一句話拆分成單個(gè)的詞或者字,比如:“注意、高、2、3、4、次列車即將到達(dá)本站、請(qǐng)做好準(zhǔn)備”。我們就將這些詞或者字錄制成聲音并上傳到Scratch軟件中,然后再通過拼接組合成不同的句子。果凍老師將接機(jī)的聲音文件分成了四組:詞語“注意”是一組,字母“G、Z、D、K”是一組,數(shù)字“0-9”是一組,詞語“準(zhǔn)備、接車”是一組。
例如,輸入G234之后,先取出“準(zhǔn)備”的聲音,然后從第二組中取出字母“G”的聲音,再?gòu)牡谌M中分別取出數(shù)字“2”的聲音、數(shù)字“3”的聲音和數(shù)字“4”的聲音,最后取出“準(zhǔn)備接車”的聲音,將以上取出的聲音再按順序拼接起來,就組成了“注意,高234次列車即將到達(dá)本站,請(qǐng)做好準(zhǔn)備”完整的接車廣播聲音。
接車的代碼中使用到了循環(huán)這個(gè)變量,它是一個(gè)數(shù)字型的輔助變量,作用是記錄當(dāng)前正在獲取第幾位數(shù)字,協(xié)助將車次中的數(shù)字一個(gè)一個(gè)取出來。循環(huán)變量從0開始,每重復(fù)執(zhí)行一次它的值就會(huì)增加1。
上面的代碼看似很長(zhǎng),其實(shí)不難,就是通過播放聲音語句和循環(huán)這個(gè)變量,從聲音庫(kù)中取出車次信息對(duì)應(yīng)的聲音文件,并一個(gè)字個(gè)一字的讀出來,這樣連起來就是接車按鈕的廣播內(nèi)容了。


接著,我們來看第二個(gè)按鈕:檢票。檢票的意思呢就是火車出發(fā)的時(shí)間即將到了,需要檢查上車旅客的車票是否和火車的車次一致。這里需要我們輸入三個(gè)信息:火車車次、檢票口1、檢票口2。
與接車不同的是,檢票的代碼中需要將輸入的三個(gè)信息先存入變量或者列表中,然后再將這三個(gè)存有車次、檢票口1、檢票口2的變量或列表值傳遞給檢票的自制積木中。
檢票積木的代碼邏輯與接車是非常類似的,也是通過循環(huán)變量一個(gè)一個(gè)讀出車次信息,并且根據(jù)檢票口的數(shù)字讀出不同的內(nèi)容,要注意的是檢票積木的代碼有兩個(gè)重復(fù)執(zhí)行,分別是用中文和英文廣播相同的信息。


第三個(gè)按鈕,也是最后一個(gè)按鈕,停止檢票,火車馬上就要出發(fā)了,檢票窗口即將關(guān)閉,語音廣播督促還沒有上車的旅客趕緊檢票上車。
停止檢票這個(gè)自制積木的代碼邏輯與接車的邏輯基本上是一模一樣的,老師就不貼在這里了,大家自己看源代碼哦。
好了,火車站廣播系統(tǒng)的解析到這里就結(jié)束了,是不是有點(diǎn)快呀?但是這個(gè)作品它真的就只有這些內(nèi)容。:)


經(jīng)過前面五個(gè)作品的學(xué)習(xí),同學(xué)們應(yīng)該都會(huì)認(rèn)為競(jìng)賽獲獎(jiǎng)的作品必須是代碼復(fù)雜龐大、編程技術(shù)高超的。但是,果源同學(xué)的作品《火車站廣播系統(tǒng)》并沒有這些特點(diǎn),相反它簡(jiǎn)單易懂,使用的編碼邏輯在之前的作品中都見到過,可它同樣得到了評(píng)委們的認(rèn)可,并且獲得了一等獎(jiǎng)。果凍老師認(rèn)為這其中的原因主要在于這個(gè)作品的實(shí)用性,我們學(xué)習(xí)編程的目的并不是為了制作游戲,而是為了解決生活工作中各種各樣重復(fù)的麻煩的問題,讓它們變得自動(dòng)化、智能化,甚至為了未來人工智能的世界提前做好準(zhǔn)備,國(guó)家設(shè)立少兒編程競(jìng)賽的初衷應(yīng)該也是這樣的。果源同學(xué)的廣播系統(tǒng)雖然簡(jiǎn)單,但是相比其它作品它更加的接近比賽選拔的目的,它的命題更具有優(yōu)勢(shì)。果凍老師相信這個(gè)廣播系統(tǒng)再進(jìn)行一些完善都可以實(shí)際應(yīng)用到一些車站中,大家可以想象到之前廣播站的阿姨們每天要廣播好多好多的信息,有了這個(gè)系統(tǒng)之后就可以實(shí)現(xiàn)常規(guī)信息的電腦自動(dòng)化,她們的工作一下子就會(huì)輕松不少,這就是這個(gè)作品的意義。
聲明:本文章由網(wǎng)友投稿作為教育分享用途,如有侵權(quán)原作者可通過郵件及時(shí)和我們聯(lián)系刪除

- 上一篇
Scratch離線編輯器的安裝
????在學(xué)習(xí)Scratch之前,我們先來了解一下Scratch編輯器的安裝吧。 ??? 1、訪問Scratch官方網(wǎng)站:https://scratch.mit.edu/
- 下一篇
scratch猜數(shù)字新玩法
hello,各位好朋友,大白又來了,今天呢,大白繼續(xù)分享一些有意思的scratch小程序,上周末有個(gè)朋友問了大白一個(gè)問題:前兩天有人問了他一道題:關(guān)于猜數(shù)字的,大白一聽猜數(shù)字想當(dāng)然想到了比大小,說大了小了的,結(jié)果朋友發(fā)了這個(gè)給我,說我想的太easy了,好吧,聽他說完,是這樣的,隨機(jī)生成一個(gè)四位數(shù),然