shell版俄羅斯方塊二 程式流程

2021-07-04 04:06:03 字數 1414 閱讀 7545

由於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()  #關閉顯示程序

三、系統流程

俄羅斯方塊高階 AI俄羅斯方塊

前文回顧 致青春 python實現俄羅斯方塊 人工智慧大火的今天,如果還是自己玩俄羅斯方塊未免顯得太low,為什麼不對遊戲公升級,讓機器自己去玩俄羅斯方塊呢?有了這個想法之後利用週六週日兩天的時間去蒐集了大量的資料,在電腦宕機好多次之後終於將ai俄羅斯方塊實現了。所謂讓機器自己去玩俄羅斯方塊,就是讓...

C 版俄羅斯方塊

請不要使用vc6編譯,建議使用vc2005及以上版本,或dev cpp include windows.h include include include include struct block 4 定義方塊 point tempblock 4 structtblock 4 bool place ...

俄羅斯方塊

俄羅斯方塊 tetris,俄文 是一款風靡全球的電視遊戲機 和掌上遊戲機遊戲,它由俄羅斯人阿列克謝 帕基特諾夫 發明,故得此名。俄羅斯方塊的基本規則是移動 旋轉和擺放遊戲自動輸出的各種方塊,使之排列成完整的一行或多行並且消除得分。由於上手簡單 老少皆宜,從而家喻戶曉,風靡世界。俄羅斯方塊的開發者是阿...