資訊內容
Scratch全國少兒編程競賽獲獎作品《火車站廣播系統》解析
Scratch全國少兒編程競賽
獲獎作品解析

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

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


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


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


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


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


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


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