陳騰輝 李璇 陶滋洋 周成瑞 陸楊 張茜


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