彭偉國 韓贏
平頂山學院/計算機學院(軟件學院) 河南 平頂山 467000
成語作為中國優秀傳統文化遺產,蘊含著豐富的故事、學問和智慧。然而小學生及幼兒的成語學習多是死記硬背、流于形式,沒能深刻體會成語的內涵。據研究表明,讓孩子在輕松的環境下學習,比讓孩子死記硬背學習效率要高很多。將教育植入游戲,不僅能鍛煉孩子的注意力,還能讓孩子更深刻的記憶知識。
為了使學生擺脫死記硬背式學習成語知識,策劃開發一款《成語填字》游戲,使學生在游戲中記憶成語并了解該成語的含義及適用的場合。兒童喜歡夸張和擬人風格的美術作品,兒童喜歡色彩鮮艷和豐富的美術作品[1]。這款《成語填字》游戲目標用戶是小學生和幼兒,游戲風格上偏卡通。玩法設計上,玩家通過選關界面選擇不同難度的游戲,游戲界面下方有個皇冠,使用鍵盤按鍵移動皇冠。游戲界面中會出現“缺字”的不同成語,移動皇冠可以接收到場景中隨機掉落的金幣、炸彈和不同的文字,每接到一個炸彈損失一個生命值,通過獲取金幣來增加得分,完成一個成語的“填字”,會隨機出現下一個要填字的成語。玩家闖關成功后,可解鎖下一關的游戲,同時可點擊背包按鈕查看所有的成語內容及其含義。玩家闖關失敗,會出現闖關失敗界面,顯示當前闖關數據。
《成語填字》游戲主要運用C#腳本語言和Unity軟件行開發的一款二維游戲,游戲UI和游戲場景主要運用Photoshop和Unity軟件自帶的UGUI進行制作,皇冠、金幣、生命值等游戲元素,使用Photoshop進行處理完善,使用Json文件存儲游戲中出現的成語及其釋義。根據項目策劃,項目需要實現的游戲功能有角色控制、背包查看、關卡選擇、成語解釋、生命值顯示、游戲得分、游戲數據加載、游戲幫助、游戲設置。
開始界面設計有游戲名字、操作按鈕(GO、設置、退出)、卡通動物(長頸鹿、大象、鴨子)、生日蛋糕、禮品盒等元素,背景界面為碎花五彩圖案,給小孩子一種絢爛多彩的畫面,吸引小孩子進行游戲體驗。
金幣的中心設計的是美元符號,游戲中會掉落金幣,所以金幣的方位視圖是根據美元符號的傾斜角度設計了三個方位視圖。玩家接到炸彈后伴隨的有炸彈效果,所以需要設計爆炸前后的兩個效果圖。游戲背包用來存放成語內容及其含義,游戲頁面以書包造型設計了背包按鈕。
游戲開始界面設計有成語名字和三個操作按鈕,上下排列界面元素,玩家可以點擊按鈕運行游戲,可以設置背景音大小,可以點擊退出應用。選關界面除了三個關卡按鈕,還有開心闖一闖和幫助按鈕。玩家進入到游戲界面中后,開始完成闖關任務,游戲界面主要包含游戲得分、生命值顯示、背包等。
在功能設計上,建立整體的游戲開發框架,按照高內聚、低耦合的設計思想,通過各個類源文件及其中的相關函數,實現角色控制、背包查看、關卡選擇、成語解釋、生命值顯示、游戲得分、數據加載等功能。
角色控制功能實現了玩家控制角色左右移動的功能。玩家進入游戲后可通過鍵盤上的A、D鍵來控制游戲角色的左右移動,游戲角色為游戲界面下方的金色皇冠,玩家通過該功能控制角色的左右移動,通過控制角色的左右移動來接取正確的漢字,組成正確的成語,玩家通過該功能通過關卡選擇。該功能的實現需要設計player類,通過方法Vector3.Move To Wards實現皇冠的左右移動。
玩家在完成一個成語后按下背包按鈕,此時窗口中會顯示出玩家完成的成語及該成語對應的含義及適用場合的介紹,在玩家未完成一個成語的情況下按下背包按鈕窗口中顯示“未完成一個成語!”的文字提示。玩家還可以通過背包按鈕查看本關已完成的成語及含義。該功能的實現需要設計類UIManager Four實現背包查看功能,設計方法Knapsack Button Click監聽背包是否被點擊,設計Gameobject類型的Knapsack Panel存放背包面板,設計string類型的knapsackButtonIdiomstr來儲存完成的成語以及成語解釋,設計knapsackPanelExitButtonClick方法實現背包面板的隱藏。
游戲共三關,第一關為常見的四字成語,第二關為五字成語,第六關為六字成語,成語類型多元化,難度遞增。玩家通過關卡后會解鎖下一關,若玩家未通過前一關,則無法進行下一關。該功能的實現需要設計單例類Game Lvevl儲存關卡信息,在類Game Lvevl中,設計int類型的levelfour,levelfive和levelsix來儲存關卡的狀態,值為1時表示該關卡已經解鎖,值為0時表示該關卡未解鎖。在類Select Game Player Scene中,設計三個方法對三個關卡按鈕進行監聽。
成語解釋功能實現了玩家對成語含義的了解和記憶。有些成語玩家可能只是知道該成語,并不知曉該成語的含義及適用場合,玩家接到正確的漢字組成正確的成語后會跳出含義窗口,窗口中會顯示該成語的含義及該成語的適用場合。成語解釋功能的類設計是在UIManager Four中通過Show Idiom Explain方法對含義面板顯示進行控制,設計Dont Show Idiom Explain Text方法控制含義面板隱藏進行控制。
生命值顯示功能實現了對玩家生命值的控制。游戲界面中賦予玩家三顆紅心,玩家接到炸彈或者接到錯誤的漢字后角色上方會提示玩家炸彈或錯誤文字,紅心會減少一顆,當三顆紅心全部消耗完畢后會顯示玩家闖關失敗,玩家可選擇重新開始或返回主界面。生命值顯示功能是設計類Game Manager Four,在該類中設計Ini方法對生命值進行初始化,設計LifeReduce方法控制生命值減少。
游戲得分功能實現了對游戲中玩家分數的統計。玩家通過在游戲界面中接金幣來獲取積分,分數統計為累加制,闖關成功后會顯示玩家在該關卡中所獲得的積分數,若玩家闖關失敗,則積分清零,在玩家重新闖關后根據金幣數重新記錄分數。游戲得分功能實現是在類Game Manager Four中,設計int類型字段Game Grade儲存游戲得分,設計方法Game Greade Add控制游戲得分的增加。在類UIManager Four中設計方法Show Grade Text更新游戲得分。
游戲數據加載功能是游戲中的核心功能,從Json文件里面解析到內存,獲取游戲中會出現的成語,再通過相應代碼隨機抽取里面的成語,成語中所缺失的漢字也是隨機的。游戲數據加載的類設計如下:設計類ListJson Manager,在該類中設計List
該游戲中的美工主要分為兩類,一類是通過Unity完成的界面UI,另一類是通過Photoshop設計的UI。
游戲場景的實現步驟是在Photoshop軟件中,通過畫筆繪出草稿圖中的長頸鹿和大象,然后為畫好的草稿圖加深輪廓線并為之配色上色。
游戲中玩家需要控制皇冠移動接取掉落物品,幼兒一般對金色物品尤為喜愛,將金色皇冠確定為游戲角色。打開Photoshop軟件,先用畫筆工具勾勒出皇冠總體輪廓,再用畫筆勾勒出皇冠上的鉆石輪廓,勾勒完成后為皇冠和鉆石潤色。根據金幣草稿圖,先用畫筆工具勾勒出金幣三個方位的基本輪廓,再用油漆桶為金幣上色,用畫筆畫出金幣的陰影部分。根據炸彈草稿圖,先用畫筆工具勾勒出炸彈及爆炸效果的基本輪廓,再用油漆桶為其上色。
關卡主題圖是采用三只小動物,先用畫筆工具勾勒出三只動物的基本輪廓,再用油漆桶為其上色。用畫筆工具勾勒出背包的基本輪廓,實現背包上的口袋布條等細節,最后用油漆桶為其上色。
游戲UI主要是使用UGUI插件內置的組件,通過Panel、Image、Sprite等UI屬性元素的空間布局實現的。
這里以游戲數據加載功能為例,分析其功能的實現步驟。
(1)創建ListJsonManager腳本掛在到ListJsonManager上。
(2)在ListJsonManager類中聲明一個string類型的Jsonname,并在對Jsonname進行初始化,在四字成語關卡設置Jsonname=“Four”,在五字成語關卡設置Jsonname=“Five”,在六字成語關卡設置Jsonname=“Six”。
(3)在List Json Manager類中編寫方法Init對Jsonname文件內的成語以及解釋進行讀取。
(4)在List Json Manager類中聲明一個List
(5)在List Json Manager類中編寫方法Get Game Num-Idiom Text,該方法作為一個接口,當游戲中需要成語時能通過該方法獲取。
(6)在List Json Manager類中編寫方法Get Game Num Idiom Explain Text,該方法作為一個接口,當游戲中需要成語以及該成語解釋時能通過該方法獲取。
游戲數據加載功能最終效果圖如圖1所示。

圖1 數據加載功能效果圖
成語填字游戲這款二維益智游戲的開發,按照游戲的開發流程,分別進行了游戲策劃、游戲功能設計和游戲功能實現,將卡通元素融入游戲的每個關卡中,游戲難度由易變難,游戲中不僅包含四字成語,還包含五字六字成語,每個成語都有相對應的解釋,玩家可以點擊背包按鈕查看已完成的所有成語。