殷志堅,段曉磊
江西科技師范大學通信與電子學院,江西南昌 330000
基于EasyX的俄羅斯方塊游戲的設計和分析
殷志堅,段曉磊
江西科技師范大學通信與電子學院,江西南昌 330000
本文是基于EasyX的圖形庫,運用C語言在VC++ 6.0的平臺上開發出來的一款俄羅斯方塊游戲。
EasyX;俄羅斯方塊游戲;VC
EasyX是針對C++的圖形庫,可以幫助c語言初學者者快速的上手圖形和游戲編程,不需要注冊窗口類,建消息循環等,在使用上和Turbo C沒有很大的區別,但是它增加了鼠標、批量繪圖、讀取圖片(點陣或矢量)等功能。
編寫一個成功的俄羅斯方塊游戲,主要考慮實現以下幾個功能:游戲方塊的預覽功能;游戲方塊的控制功能;游戲分數、等級更新功能;游戲操作提示功能。
1)程序進入主函數后首先進行初始化,在初始化中通過initgraph()函數進入圖形模式,用setorigin()函數設置原點,用rectangle()函數畫游戲的游戲區和預覽區兩個區域,再通過outtextxy()函數輸出游戲桌面的有關提示以及成績和等級。
2)本游戲的游戲區域被劃分為20*15個單元方格,定義了一個二維數組
g_world[20][15],數組的下標就是每個單元方格左上方的坐標,通過數組存放的信息來標志單元方格的有關信息,用1表示單元方格被方塊占用,0表示未被占用。
3)每個游戲方塊是通過4*4的矩陣單元方格來定義的,以下為要設計主要的方塊。

當單元方格被占用時用1表示,未被占用的則用0表示,以第二個L型方塊為例,這個方塊可以用0100,0100,0110,0000來表示,用十六進制表示為0x4460。用循環語句檢測這個十六進制的每一位,當為1是就調用setfillcolor()、setlinecolor()、fillrectangle()三個函數來給相應的單元格填充顏色。
4)游戲方塊的結構體變量的定義:

1)方塊變換。
方塊變換包括左右移動、下落、旋轉、沉底,首先要用檢測算法檢測變換后將要生成的下一個方塊是否符合游戲規則,如果符合就先刪除原先的方塊,再畫出下一個方塊。
2)檢測算法。
方塊變換時,用檢測算法檢測是否出邊界,是否有重疊現象發生,邊界包括上下左右邊界,根據方格的左上坐標是否超出設定的邊界來確定是否出界。重疊則根據在游戲區域內的方塊所對應的二維數組的值是否全是0標識,如果存在某個二維數組的值不為0,則表示發生重疊,那么就返回false,禁止方塊變換,否則返回true,允許方塊變換。以下是檢測算法的程序。

TP3
A
1674-6708(2015)150-0137-01
殷志堅,教授,江西科技師范大學通信與電子學院院長,研究方向:現代信號與信息處理
段曉磊,江西科技師范大學研究生,研究方向:嵌入式系統及應用軟件