陳騰輝 李璇 陶滋洋 周成瑞 陸楊 張茜
摘要:游戲是一種社會文化,是一種社會風(fēng)氣的體現(xiàn),而和游戲接觸最多則是孩子們。該作品運用相對趣味化的游戲形式,以情境推動故事發(fā)展,努力加強游戲內(nèi)容的供給,積極履行社會責(zé)任,結(jié)合計算機學(xué)科特點進行創(chuàng)新,引導(dǎo)玩家做好環(huán)保工作,充分突出了現(xiàn)代教育所推崇的寓教于樂這一觀念。作品使用Processing開源工具開發(fā),基于2D渲染引擎,通過圖片與程序算法設(shè)計結(jié)合制作出了5個小游戲,用多分支結(jié)構(gòu)控制作品流程進度,使劇情與游戲無縫相結(jié)合,對環(huán)保教育有一定的意義。
關(guān)鍵詞:游戲設(shè)計;環(huán)境保護;教育;Processing語言
中圖分類號:TP311? ? ? 文獻(xiàn)標(biāo)識碼:A
文章編號:1009-3044(2020)26-0050-02
1 背景
人與自然如何和諧相處一直是近現(xiàn)代人類亟須解決的問題之一。關(guān)于這方面的倡議活動,教育視頻數(shù)不勝數(shù),養(yǎng)成教育從小抓起,兒童天性愛玩,所以用游戲作為載體去實現(xiàn)教育的效率會大大提高,為此,我們團隊通過深入的調(diào)查發(fā)現(xiàn):市面上多以成人向游戲居多,教育類游戲寥寥無幾,而有關(guān)幼兒環(huán)保教育類游戲更是屈指可數(shù),故本作品的設(shè)計受眾主要以幼兒環(huán)保教育為靶向。
Processing語言是專門用來生成和修改圖像的文本編程語言。其特點是可以實現(xiàn)簡潔性和高級功能之間的平衡。一般而言初學(xué)者在數(shù)分鐘的指導(dǎo)后就能編寫自己的程序,而高級用戶則可以使用它編寫具有附加功能的類庫。這個體系使很多計算機圖像與交互技術(shù)的教學(xué)變得十分方便,包括矢量圖與光柵圖的繪制、圖像處理、色彩模式、鼠標(biāo)與鍵盤事件、網(wǎng)絡(luò)通信,以及面向?qū)ο笫骄幊?。本作品代碼及算法基于Processing開發(fā)環(huán)境,Processing是一個開源項目,由Ben Fry和Casey Reas發(fā)起。它基于Java封裝的一個圖形庫,并單獨提供了開發(fā)環(huán)境PDE(Processing Development Environment)。
2 游戲功能流程設(shè)計
因為本作品的受眾是兒童,故以故事情節(jié)作為全局基調(diào),在講述故事的同時用游戲的通關(guān)來推動故事的發(fā)展,達(dá)到寓教于樂的效果。故事情節(jié)應(yīng)以動漫為基調(diào),語音與音樂作為輔助。游戲劇情為:胡曼的爸爸媽媽是非法捕捉動物的商人,小胡曼從小和爺爺生活在一起,那時候的春天鳥語花香,啾啾鳥(小麻雀)是胡曼最好的朋友,它在胡曼爺爺院子的老槐樹上安家。有一天,啾啾鳥突然受傷了,掉落在老槐樹下。小胡曼通過游戲救助啾啾鳥,后來胡曼發(fā)現(xiàn)爸爸媽媽的非法行為,便通過游戲救出動物并使爸爸媽媽悔改。主游戲分為6段劇情以及5個小游戲,劇情與游戲相互穿插且為線性推進,游戲中不可逆轉(zhuǎn),游戲流程如圖1所示。
3 游戲主要算法實現(xiàn)設(shè)計
3.1 游戲一主要算法設(shè)計
游戲一是胡曼抓捕害蟲為啾啾鳥抓捕害蟲療傷。在森林內(nèi)隨機出現(xiàn)蟲子與鳥類,玩家只能捕抓蟲子,一旦捕抓到鳥類,則游戲失敗,需重回游戲規(guī)則界面重新開始游戲。游戲中,繩子將以固定的頻率晃動,玩家可以點擊界面使繩子伸長進行捕抓。
3.1.1 繩子延伸算法設(shè)計
當(dāng)玩家點擊屏幕時,將繩子的Processing紋理函數(shù),將繩子的頂點延半徑進行逐幀延伸后再渲染,達(dá)到繩子延伸的視覺效果
3.1.2 捕抓算法設(shè)計
1)調(diào)用繩子延伸算法,獲取該路徑上的蟲子坐標(biāo),沒有則碰壁后返回。
2)如若有蟲子則當(dāng)鉤子的坐標(biāo)與蟲子的坐標(biāo)一致后同時減少鉤子紋理的頂點坐標(biāo)和蟲子圖片的坐標(biāo),逐幀渲染,達(dá)到將蟲子拉回的視覺效果。
3)如果鉤子碰到的是鳥類,則將判定游戲失敗。
3.2 游戲二主要算法設(shè)計
天氣轉(zhuǎn)陰,即將要下雨,游戲二是胡曼需要為啾啾鳥搭建一個小屋子。游戲中將會出現(xiàn)8塊打亂的拼圖,玩家需要通過鍵盤的方向鍵將九宮格內(nèi)的小屋子復(fù)原,復(fù)原成功代表胡曼為啾啾鳥搭建好了房子。
3.2.1 拼圖生成算法設(shè)計
使用亂序算法,將答案中的數(shù)組進行亂序排序,排序后進行計算逆序數(shù),若逆序數(shù)為奇數(shù),拼圖無解,重新亂序,若逆序數(shù)為偶數(shù),生成拼圖塊的順序,將數(shù)組元素為0的位置設(shè)置為空,用于移動,生成拼圖游戲界面。
3.2.2 拼圖塊移動算法設(shè)計
1)監(jiān)聽鍵盤按鍵動作,并判斷是否為方向按鍵。
2)當(dāng)按下“上”“下”“左”“右”時,分別判斷空白位置是否在最下一行,最上一行,最左一行,最右一行,是則無法移動,無響應(yīng)動作,否則將空白元素分別與當(dāng)前列的上一行、與當(dāng)前列的下一行,與當(dāng)前行的前一個、與當(dāng)前行的后一個交換位置,交換完后進行正確性判斷。
3.3 游戲三算法設(shè)計
小胡曼長大后被爸爸媽媽接去城市里生活,然而此時小胡曼發(fā)現(xiàn)爸爸媽媽在非法捕抓鳥類,小胡曼便和朋友一起救出被抓的鳥。小鳥們被救出后要從城市飛回森林里。游戲三是小鳥需要穿過城市中的高樓大廈回到森林里。游戲中將隨機出現(xiàn)各種高度不同的大樓,玩家需要通過鼠標(biāo)控制小鳥避開高樓,飛回森林中,玩家點擊鼠標(biāo)則小鳥向上飛,不點擊鼠標(biāo)則視為往下飛。
3.3.1 小鳥移動算法設(shè)計
通過監(jiān)聽鼠標(biāo)左鍵的點擊來控制小鳥的飛行,小鳥只能上下飛行且不能碰到大樓,當(dāng)鼠標(biāo)點擊時,小鳥則垂直向上飛行,當(dāng)鼠標(biāo)沒有點擊時,小鳥自動默認(rèn)為向下飛行,小鳥每一次移動都調(diào)用一次碰撞檢測。
3.3.2 大樓生成算法設(shè)計
1)設(shè)置每個大樓的初始X軸坐標(biāo),大樓的寬度以及間隔一致。每一次調(diào)用draw()函數(shù),5個大樓的X坐標(biāo)都將-1,使得大樓呈現(xiàn)移動狀態(tài)。
2)使用隨機數(shù)對象生成300~500之間的隨機數(shù)作為大樓的高度,當(dāng)大樓的右側(cè)的X坐標(biāo)小于0時,將大樓的X坐標(biāo)設(shè)置為最大值,重新獲取大樓隨機高度。
使用隨機對象生成0~3之間的隨機數(shù),用于選擇大樓的樣式。
3.3.3 小鳥碰撞檢測算法設(shè)計
判斷小鳥的Y坐標(biāo)與大樓的Y坐標(biāo)是否相等以及小鳥的X坐標(biāo)是否在大樓前后兩端的Y左邊范圍內(nèi),是則說明發(fā)生碰撞,游戲失敗,否則游戲繼續(xù)。
3.4 游戲四算法設(shè)計
因為人類的非法捕抓活動嚴(yán)重破壞了大自然的生態(tài)系統(tǒng),世界上出現(xiàn)了一種新型的病毒。游戲四需要玩家通過判斷力找到隱藏的病毒。10個病毒將隨機分布在9*9宮格中,玩家通過顯示的周圍病毒數(shù)判斷病毒所在并且不能碰到病毒,當(dāng)9*9宮格中剩余10個病毒時則視為成功找出病毒并消滅了,若玩家判斷失誤點擊到病毒則視為感染了病毒,游戲失敗。
3.4.1 病毒隨機分配算法設(shè)計
定義一個二維數(shù)組,使用兩個隨機對象分別獲取隨機的行列數(shù),檢查在此行列元素是否已經(jīng)是病毒,是則循環(huán)數(shù)-1,繼續(xù)循環(huán),否則將此行列元素的值設(shè)置為病毒值,循環(huán)繼續(xù),直至病毒數(shù)全部分配完畢。
3.4.2 相鄰病毒數(shù)的計算算法設(shè)計
對二維數(shù)組的每一個元素進行上、下、左、右、上左、上右、下左、下右8個位置的病毒數(shù)檢測,若發(fā)現(xiàn)病毒,則計數(shù)器累加,最后將所得的病毒數(shù)存入該數(shù)組元素中。
3.4.3 玩家交互算法設(shè)計
根據(jù)玩家點擊鼠標(biāo)左鍵時的X、Y坐標(biāo)計算得出玩家點擊是幾行幾列方塊,將此坐標(biāo)傳入打開方塊函數(shù)中,并遞歸調(diào)用打開方塊函數(shù),將0病毒數(shù)的方塊自動打開。
3.5 游戲五算法設(shè)計
病毒被消滅后,人類開始反思自己的行為。胡曼的爸爸媽媽也因為非法捕抓被判處終生守護森林罪。游戲五是收集方塊,當(dāng)集齊一行方塊則視為成功種下一棵樹。玩家需要通過控制鍵盤方向鍵控制方塊,使方塊充滿一行。
3.5.1 游戲移動算法設(shè)計
1)接收玩家鍵盤輸入消息,判斷所按的方向鍵。
2)當(dāng)方向鍵為“左”或“右”時,判斷是否碰壁,如果是則不進行左右移動。如果不是,則把保存方塊的位置數(shù)組中的坐標(biāo)數(shù)據(jù)進行更新。
3)向下移動,判斷是否落下到最后一行,如果不是,則把保存方塊位置的數(shù)組中的坐標(biāo)數(shù)據(jù)進行更新。如果是,則繼續(xù)判斷是否填充這一行或者多行為完整一行或多行,如果是,則把這一行或者多行進行消除;如果不是,則更新整個顯示方塊數(shù)組中的數(shù)據(jù)。
3.5.2 方塊生成算法設(shè)計
1)使用隨機對象生成隨機數(shù),將隨機數(shù)取余,得到當(dāng)前生成方塊的類型值。
2)用方塊類型值,去生成相應(yīng)的方塊。
3)當(dāng)前生成的方塊數(shù)據(jù)更新到方塊數(shù)組中。
3.5.3 方塊變形算法設(shè)計
當(dāng)方向鍵為“上”時,將當(dāng)前的方塊進行逆時針90°旋轉(zhuǎn),將旋轉(zhuǎn)好的方塊進行溢出判斷,若是溢出則保留原方塊,若無溢出,則將當(dāng)前方塊換成旋轉(zhuǎn)后的方塊。
3.5.4 游戲規(guī)則算法設(shè)計
當(dāng)方塊向下的時候,判斷當(dāng)前方塊數(shù)組中的元素是否有超過上邊界,如果有,則游戲結(jié)束;如果沒有,則游戲繼續(xù)。
3.6 游戲主要界面展示
4 結(jié)束語
娛樂參妙理,游戲悟人生。我們團隊認(rèn)為游戲文化應(yīng)該是一種社會文化,是一種社會風(fēng)氣的體現(xiàn)。一類產(chǎn)品的發(fā)展,必將體現(xiàn)一個時代的進步,并折射出一定范圍的社會文化,或者說社會風(fēng)氣。而和游戲接觸最多的肯定是孩子們了,他們有玩游戲的時間、精力和愛好。然而,孩子們在玩游戲時很少考慮內(nèi)在的深層次的東西,比如游戲文化。殊不知,孩子們有極強的模仿能力,他們很可能會去模仿游戲中人物的一些言談舉止。因此,游戲文化就可以輕易地在不知不覺中進入孩子們的心靈,進而影響他們的人生觀、價值觀,而孩子們的這些觀念會直接影響到他們長大后對國家的貢獻(xiàn)。這也充分證實了現(xiàn)代教育所推崇的寓教于樂這一觀念。
在開發(fā)的過程中,我們也在不斷學(xué)習(xí)、不斷升華自己的技能,時刻保持跟最前沿的技術(shù)接軌,每日學(xué)習(xí)了解新的開發(fā)技術(shù),對Processing等傳統(tǒng)游戲編程軟件加以更為熟練的操作。還有就是不斷對主流游戲框架的熟練與修改。通過不斷摸索一些流向游戲,從技術(shù)呈現(xiàn)的角度進行科學(xué)創(chuàng)新,以期在游戲的升級演進中將其定義為一款公益教育游戲面向大眾推廣。
參考文獻(xiàn):
[1] 王浩.Visual C++游戲開發(fā)案例實戰(zhàn)[M].北京:清華大學(xué)出版社,2017.
[2] Casey Reas,Ben Fry.Processing語言權(quán)威指南[M].2版.北京:電子工業(yè)出版社,2019.
[3] Bruce Eckel.Java編程思想[M].4版.北京:機械工業(yè)出版社,2018.
[4] Mark Allen Weiss.數(shù)據(jù)結(jié)構(gòu)與算法分析[M].北京:人民郵電出版社,2007.
[5] Processing官方文檔網(wǎng)站[EB/OL].[2020-02-20].https://processing.org/reference/.
【通聯(lián)編輯:謝媛媛】