殷志坚,段晓磊
江西科技师范大学通信与电子学院,江西南昌 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
殷志坚,教授,江西科技师范大学通信与电子学院院长,研究方向:现代信号与信息处理
段晓磊,江西科技师范大学研究生,研究方向:嵌入式系统及应用软件