王星晨
(常州信息職業(yè)技術(shù)學(xué)院電子工程學(xué)院,江蘇常州,213164)
成語是中華民族歷史文化的結(jié)晶,成語接龍也是老少皆宜的民間文化娛樂活動。目前針對小學(xué)低年級兒童的成語教授方法一般都是讀、寫,對于當(dāng)代捧著電子設(shè)備長大并且普遍喜愛電子游戲的孩子來說,這樣的成語學(xué)習(xí)方法既沒有趣味性也沒有對抗性。通過調(diào)研,我們發(fā)現(xiàn),目前市場上還沒有一款用手機(jī)游戲?qū)崿F(xiàn)成語接龍游戲的雙人對抗賽,因此找準(zhǔn)了這一切入點(diǎn)進(jìn)行創(chuàng)新設(shè)計,本文提出了基于Arduino和APPInventor2進(jìn)行設(shè)計與實(shí)現(xiàn),完成了一款供小學(xué)生及留學(xué)生的寓教于樂的“成語接龍”APP游戲。
系統(tǒng)總體設(shè)計我們選用APP Inventor2進(jìn)行APP開發(fā),這是一款采用拖拽操作的可視化編程語言基礎(chǔ)的開發(fā)工具,摒棄了復(fù)雜的程序代碼,使樂高積木式堆疊法來完成設(shè)計制作,大大的降低了開發(fā)的難度,提高了開發(fā)效率。
系統(tǒng)開發(fā)的是“成語接龍”APP,游戲規(guī)則為采用成語字頭與字尾相連不斷延伸的方法進(jìn)行接龍,當(dāng)有一方未在規(guī)定的時間內(nèi)答題,就算失敗。為了增加游戲的趣味性,游戲分為“單人挑戰(zhàn)”和“雙人對戰(zhàn)”版。
設(shè)計流程:打開APP,系統(tǒng)主界面(圖1)有兩個按鈕:“單人挑戰(zhàn)”和“雙人對戰(zhàn)”。點(diǎn)擊進(jìn)入單人挑戰(zhàn)界面,此界面為單人模式,由系統(tǒng)給出首個成語,自己單獨(dú)完成成語接龍游戲,游戲時可有提示。點(diǎn)擊進(jìn)入雙人對戰(zhàn)界面,進(jìn)入此界面后,需要選擇自己為服務(wù)器或客戶機(jī)端,服務(wù)器端需開啟服務(wù)器,客戶端需對服務(wù)器進(jìn)行連接,這樣服務(wù)器端與客戶機(jī)端才能相連,最終完成藍(lán)牙雙人對戰(zhàn)。下面,以“單人挑戰(zhàn)”為例,介紹功能設(shè)計實(shí)現(xiàn)。
“單人挑戰(zhàn)”成語接龍游戲界面如圖2所示,主要組件參數(shù)設(shè)計如表1所示。
圖2 “單人挑戰(zhàn)”成語接龍界面
表1 “單人挑戰(zhàn)”組件設(shè)計表
因?yàn)楸居螒蚴浅烧Z接龍游戲,因此在本程序中就要創(chuàng)建一個成語庫,以便在程序運(yùn)行時能夠?qū)ο鄳?yīng)的成語進(jìn)行查找。首先我們需要加載一個成語詞典庫,成語詞典文件為csv文件格式,其中內(nèi)含30804個漢語成語詞典,每一個成語為單獨(dú)的一行,以便之后在APPInventor 2中創(chuàng)建列表,另外,還需要創(chuàng)建一個與成語列表相對應(yīng)的成語解釋字段,也是相同的csv文件。在處理成語詞典庫的過程中,由于通過Excel另存為的csv格式文件編碼為ANSI,這種ANSI編碼在App Inventor 2中打開會出現(xiàn)亂碼,因此我們需要通過記事本打開,通過另存為把編碼修改為UTF-8,如圖3所示。
圖3 文件編碼修改
在邏輯代碼編輯中,需要先初始化一個名為成語列表的全局變量,首先將它的值設(shè)置為空列表,當(dāng)每次游戲所處界面被打開,程序就會調(diào)用文件管理庫用來讀取之前存儲的csv文件,作為數(shù)據(jù)庫來調(diào)用,當(dāng)文件管理庫獲取到文本,用APPInventor 2,將文件管理庫中的內(nèi)容轉(zhuǎn)為csv列表字符串,在APPInventor 2中,一個CSV文件實(shí)際上是被轉(zhuǎn)換為一個二維列表。每一行先轉(zhuǎn)換為一個列表,該行的每一列成為列表中的一個列表項(xiàng),然后把每一行作為一個列表項(xiàng)形成一個列表。成語解釋表與此是相同道理。
在整個設(shè)計中,我們首先需要檢查用戶輸入的文字是否為成語,因此就需要在成語詞典中檢索。首先在APPInventor 2中定義一個“檢查是不是成語”的過程,過程中使用了“如果,則,否則”的邏輯關(guān)系。如果在成語列表中檢查到用戶輸入的成語,則為真,否則為假。由于“成語列表”是個二維列表,每個列表項(xiàng)也是一個列表,雖然這個列表只有一個列表項(xiàng)。所以需要構(gòu)造一個參數(shù)“詞語”作為唯一列表的列表,然后再去檢查。
下面就是檢查階段性的成果了,如圖4所示,需定義初始化全局變量“成語字串”當(dāng)用戶按下確定鍵之后,程序即會對所輸入詞語進(jìn)行檢查,此時調(diào)用“檢查是不是成語”過程,用來判斷成語的正確性,若不是成語,則發(fā)出警告,若是成語則通過列表顯示框顯示成語,這里的列表顯示框的單元項(xiàng)還可以通過設(shè)置“元素字串”屬性來更新,元素字串是一個文本,每個單元項(xiàng)通過字符逗號進(jìn)行分割。
圖4 檢查是否為成語邏輯圖
按照成語接龍規(guī)則,接龍成功是采用成語字頭與字尾相連不斷延伸的方法進(jìn)行接龍,這樣,就得需要對第二個成語的首字與對一個成語的尾字進(jìn)行判斷是否相同。
我們需要定義兩個過程來完成判斷,如圖5所示,在“檢查文本1的頭是否和文本2的尾相等”過程中,通過比較,文本的邏輯進(jìn)行判斷兩個字符是否相等,在主體過程中則運(yùn)用了嵌套的如果,則的判斷語句,并且調(diào)用了上面定義的“檢查文本1的頭是否和文本2的尾相等”過程判斷成語接龍是否正確,正確則在列表顯示框中顯示,否則彈出對話框警告,并且游戲結(jié)束。
圖5 檢查是否接對成語圖
由于各人差異的問題,玩家可能成語量有限,到某一步就會卡殼,因此針對這個情況,在單人模式下增加了提示和解釋的功能,一定情況下,對玩家也是練習(xí),增加了玩家的成語詞匯儲備量,為此,我們需要在此創(chuàng)建一個全局變量“提示成語列表”,用來存放符合的成語,通過調(diào)用自定義的“查找獲取某字開頭的成語列表”過程,在對話框顯示結(jié)果。在此過程中,循環(huán)對“成語列表”中的每個成語判斷是否以傳入的參數(shù)“開頭的字”開頭,滿足條件的就加入在“提示成語列表”。由于數(shù)量較多,因此此過程耗時會較長。
解釋模塊,需要實(shí)現(xiàn)當(dāng)玩家點(diǎn)擊列表顯示信息中的任何成語時,會彈出相應(yīng)的解釋信息。在整個過程中,原先每查找一次就需要對解釋表做一遍的查找,這樣的速度會很慢,經(jīng)過修改我們可以在小的成語詞典找到這個成語的位置,以此來縮減原本要依次檢查的時間,記錄下成語的位置,然后直接去詞典中哪出想要的信息(這里大小詞典的順序是一致的),這樣就是類似于索引的機(jī)制,速度就會有了大大的提升,比一個一個的去對比,速度會有很大的提升。
本文我們提出了基于APP Inventor 2平臺開發(fā)“成語接龍”App游戲的設(shè)計思路和具體方法。為在未來基于APP Inventor 2平臺研發(fā)App提出和更好的研究方向、研究模式、研究辦法。