前幾天帶同學(xué)參加完寧波市知識問答比賽后,我想到一個(gè)小問題,我可不可以用Scratch制作一個(gè)選擇題形式的問答小游戲,以往做問答題都是通過鍵盤輸入ABCD或者1234來進(jìn)行輸入判斷,這次除了鍵盤輸入之外能不能用鼠標(biāo)來選擇答案,并根據(jù)鼠標(biāo)的選擇反饋結(jié)果。
在制作這個(gè)問答游戲前,我們按程序設(shè)計(jì)流程首先需要對這個(gè)游戲進(jìn)行功能及需求分析,功能上需要實(shí)現(xiàn)通過鼠標(biāo)來選擇答案,接下來確定可以用角色來充當(dāng)選項(xiàng),方便對鼠標(biāo)點(diǎn)擊做出相應(yīng)的反饋,要判斷選擇是否正確,正確和錯(cuò)誤都要做出對應(yīng)的反饋比如正確加分,錯(cuò)誤不加分。還要解決題庫問題,多道題目的問題選項(xiàng)究竟是由角色引出還是放入背景中通過切換背景完成題目的切換,這需要根據(jù)后續(xù)編程的難易程度選擇。分析確定這兩點(diǎn)后我們就可以動(dòng)手編寫程序了。
最終我們選擇了用背景造型保存題目,通過切換背景換題,打開Scratch的背景頁面,將所需要的問題和選項(xiàng)添加到背景造型中。背景依次是三道選擇題、游戲封面、正確標(biāo)志Correct、錯(cuò)誤標(biāo)志W(wǎng)rong,共6個(gè)造型,如果新增題目要放在游戲封面之前。
手動(dòng)增加四個(gè)選項(xiàng)按鈕角色,當(dāng)界面出現(xiàn)問題后,用戶可以點(diǎn)擊ABCD選項(xiàng)作答。正確加分,錯(cuò)誤不加分(如圖1)。
首先創(chuàng)建兩個(gè)廣播“開始答題”和“答題結(jié)束”用來控制選項(xiàng)角色的出現(xiàn)與消失。默認(rèn)情況下所有的選項(xiàng)都是隱藏消失不見,當(dāng)接收到“開始答題”廣播后顯示ABCD選項(xiàng),當(dāng)接收到“答題結(jié)束”廣播后隱藏ABCD選項(xiàng)。新增變量“選項(xiàng)”記錄鼠標(biāo)輸入的選項(xiàng)結(jié)果和變量“Score”用來統(tǒng)計(jì)最終得分(如圖2)。
新增列表“正確答案”,當(dāng)點(diǎn)擊運(yùn)行后,首先將正確答案選項(xiàng)添加到正確答案列表中,并且分?jǐn)?shù)初始值設(shè)為0(如圖3)。
當(dāng)接收到開始游戲后,根據(jù)題庫的順序依次進(jìn)行出題,也可以打亂出題的順序,隨機(jī)從題庫中出題,代碼需要稍作修改,除了將“答題順序”設(shè)為隨機(jī)數(shù)外,答題后“答題順序”+1也需要修改,本例中未做演示。
出題結(jié)束后,通過廣播“開始答題”的方式顯示出ABCD,當(dāng)用戶通過鼠標(biāo)點(diǎn)擊ABCD選項(xiàng)角色后,“選項(xiàng)”的值自動(dòng)設(shè)置為ABCD。這里可能大家會提出問題了,如何去判斷用戶已經(jīng)作答結(jié)束呢?我們可以通過“選項(xiàng)”的字符長度判斷,當(dāng)“選項(xiàng)”的字符長度大于0時(shí),說明用戶已經(jīng)答題完畢就可以進(jìn)行答案的判斷了。我們只需要將當(dāng)前“選項(xiàng)”和列表中對應(yīng)的“答題順序”項(xiàng)進(jìn)行比較就可以了,當(dāng)“選項(xiàng)”與列表中答案相符,答題正確,背景切換成Correct,“Score”加1分。否則答題錯(cuò)誤,切換成Wrong背景,不加分(如圖4)。
大家也可以自行設(shè)計(jì)一些其他小功能,比如倒計(jì)時(shí)或者附加題……只要開動(dòng)腦筋,發(fā)揮想象,相信你也可以完成得很出色!