Shell腳本實現俄羅斯方塊流程

一、方塊的表示
         由於shell不能定義二維數組,所以只能用一維數組表示方塊,俄羅斯方塊主要可以分爲7類,每一類方塊都是由四類小方塊構成,表示方法如下。
Box=(x1,y1,x2,y2,x3,y3,x4,y4,x,y)

         xi、yi是各個小方塊在俄羅斯方塊表示區域中的座標,最後的兩個,x、y是在方塊出現時,該表示區域相對於棋盤的座標,7類方塊的表示如下:

             


二、相關函數定義
1、兩個主要函數
        RunAsDisplayer()、RunAsKeyReceiver(),這兩個函數當中各有一個死循環,並且這兩個函數運行在不同的進程當中,所以這兩個函數在遊戲期間始終在運行,其中,顯示進程作爲後臺進程,命令接收進程作爲前臺進程。前臺進程在接收到命令後,由kill指令將命令發送給顯示進程,顯示進程執行相關操作。前臺進程發送給顯示進程的主要命令有:翻轉、左移、右移、下移、直接下落到底、退出。當前臺進程收到退出指令後,關閉自己之前,會先關閉顯示進程,同樣,顯示進程關閉之前,也會關閉命令接收進程。
2、創建方塊函數
       CreateBox() #創建方塊,如果是第一次創建則隨機生成,否則讀取預生成的方塊
       PrepareNextBox() #生成下一個方塊,並預顯示
3、繪製函數
       DrawBorder() #繪製邊框及成績等
       DrawCurBox() #繪製當前方塊
4、指令處理函數
       BoxRotate() #接收上方向鍵,用於旋轉方塊
       BoxRight() #右移
       BoxLeft() #左移
       BoxDown() #下移,下移時要判斷,如果到底了,要寫入背景,並創建新方塊
       BoxAllDown() #直接下移到最底部
5、移動可行性判斷函數
       BoxMove() #該函數包含兩個表示目的地址的參數,如果可以移動,則返回0,否則返回1
6、寫入背景函數
       Box2Map() #該函數用於把到底的方塊寫入到背景當中,並消去可以消去的行
7、退出函數
       MyExitNoSub() #用於恢復終端並退出指令接收進程
       MyExit() #關閉兩個進程,調用其他兩個退出函數實現
       ShowExit() #關閉顯示進程

三、系統流程



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章