本程序是基于常看到的一款小游戲貪吃蛇而設(shè)計的,即有一條小蛇不停地在屏幕上游走,吃各個方向上出現(xiàn)的食物(姑且稱它為“食物”),越吃越長,只要蛇頭碰到屏幕四壁或者碰到自己的身子,游戲就立刻結(jié)束。本程序基于傳統(tǒng)貪吃蛇游戲的特點利用LabVIEW制作的一款完整的迷你貪吃蛇游戲。 2.1系統(tǒng)功能 (1)小蛇在屏幕上不停的游走; (2)用鍵盤左右方向鍵可控制小蛇的移動方向; (3)吃過一個食物后小蛇長度增加并隨機產(chǎn)生另一個食物; (4)小蛇碰到四壁或者碰到自己的身體時游戲結(jié)束并給出得分和提示是否繼續(xù); (5)游戲可以有多種難度選擇等。 2.2系統(tǒng)軟件組成 整個系統(tǒng)由前面板和程序控制框圖兩部分,其中程序控制框圖又分為XY坐標(biāo)子程序,小蛇的移動控制模塊,食物增減的控制,.撞墻事件和自殺事件模塊,還有最為重要的主程序程序框圖。 2.3主程序組 主程序的組成:包含了一個主要while循環(huán)結(jié)構(gòu)及分支while循環(huán)、順序結(jié)構(gòu)、條件結(jié)構(gòu)、初始化局部變量分?jǐn)?shù)、初始化變量模塊子VI、按鍵值賦值模塊子VI、根據(jù)按鍵值定義蛇動作模塊子VI、顯示二維數(shù)組賦值模塊子VI、判斷能否繼續(xù)游戲判定子VI、食物隨機生成子VI、蛇吃到食物處理子VI、蛇移動子VI。分?jǐn)?shù)顯示模塊:放在吃掉食物為真的情況下,不斷加1達(dá)到分?jǐn)?shù)累計的作用。
2.4 軟件設(shè)計思想 進(jìn)入游戲界面之后可選擇游戲難度。程序隨機定位貪吃蛇初始位置,當(dāng)然也可以選擇退出游戲。開始之后便進(jìn)入游戲。其流程圖如下。
圖2-1主程序流程圖 第三章 系統(tǒng)軟件部分設(shè)計3.1系統(tǒng)整體程序框圖 系統(tǒng)整體程序框圖就是用戶所編寫的主程序,也就是用戶界所對應(yīng)的底層程序,其中包括整個程序的運行控制,事件結(jié)構(gòu)的設(shè)置,調(diào)用各種子程序的命令。
圖3-1 貪吃蛇小游戲系統(tǒng)程序框圖 3.2.系統(tǒng)前面板界面 圖3-2為用戶界面,用戶界面的實現(xiàn)主要依靠 LabVIEW 提供的各種顯示控件,包括波形顯示控件、數(shù)據(jù)顯示控件,指示燈顯示報警控件等。程序運行時,用戶可以在前面板進(jìn)行控制,同時后面板也在運行,只是用戶只需要控制前面板就可以了,如果需要更改程序時,就可以在后面板更改程序功能[41]。
圖3-2貪吃蛇小游戲系統(tǒng)前面板 下面將詳細(xì)介紹各個模塊的設(shè)計原理。3.3各部分模塊子程序設(shè)計原理 本系統(tǒng)的軟件測試部分主要包括以下幾個模塊:XY坐標(biāo)模塊、小蛇的移動控制模塊、食物增減的控制模、自殺事件模塊和撞墻事件處理模塊。 圖3-3系統(tǒng)軟件設(shè)計部分組成框圖 3.4 XY坐標(biāo)模塊 此程序的作用是把蛇的活動按有無蛇身、蘋果賦值。通過XY坐標(biāo)來顯示蛇移動的軌跡,同時刪除已走過的軌跡路徑,避免與新的路徑混淆使程序出錯。是這樣實現(xiàn)的:先把原來的x,y數(shù)組簇按名稱解除捆綁,然后用兩個替換數(shù)組子集,這樣就可以用新的x,y坐標(biāo)替換原本的x,y坐標(biāo),新的x,y坐標(biāo)按名稱捆綁,然后輸出新的x,y坐標(biāo)簇。同時把原來的x,y坐標(biāo)簇按名稱解除捆綁,用兩個刪除數(shù)組元素刪除原本的x,y坐標(biāo)簇,從而實現(xiàn)功能。程序框圖見下面:
圖3-4輸入XY程序框圖
圖3-5刪除XY坐標(biāo)模塊 圖3-6 XY坐標(biāo)前面板顯示 3.5小蛇的移動控制模塊模塊 由于蛇本身是一個可增加元素的數(shù)組,所以用一個含兩個一維方向數(shù)組的簇來進(jìn)行操作。每次讀取坐標(biāo)或者增添完坐標(biāo)后都要用簇解綁及簇捆綁來處理,這樣也便于在XY圖中顯示。 控制小蛇游走的方法是給定一個方向direction,然后利用這個direction的值來控制當(dāng)前點與下一點的變換。小蛇不停的移動,為了使之與蘋果碰撞后能便捷的增加長度,這里采用這樣的方法實現(xiàn):小蛇每按direction移動一個,就在小蛇數(shù)組的開頭添加一個點(此時這兩個點是相鄰的),然后將添加的點與蘋果所在坐標(biāo)比較,如果不同,就將蛇數(shù)組的最后一個元素刪除,表示沒有吃到蘋果;如果相同,就保留這個元素(此時,相對于前一個位置時,小蛇的長度增加了),并且刪除這個蘋果,重新隨機產(chǎn)生另一個蘋果。循環(huán)往復(fù)(在while循環(huán)上添加移位寄存器)直到游戲結(jié)束。插入蛇頭新坐標(biāo)的子程序框圖如下
|