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