4.2 屏幕信息初始化
程序运行后,可以点击设置按钮,弹出游戏配置窗口,其中“方块样式配置”菜单,主要是对不同样式方块的颜色进行设置,操作方法,点击方格,形成方块样式,点击“选择方块颜色”后的方格,进行不同颜色选择;点击“添加”按钮,可再添加设置新的样式;选中右侧表格中其中一行设置好的样式,点击“删除”按钮,可删除已设置好的样式;点击“修改”按钮可修改已设置好的样式;点击“清空”按钮可清空右侧表格中已设置好的方块样式。
点击“参数配置”菜单,键盘设置模块,可对游戏使用按键进行设置,环境设置模块,可对水平格子数、垂直格子数、格子像素和背景颜色进行设置。
通过分析功能实现过程,形成屏幕初始化技术流程图,如图3所示:
图3 屏幕信息初始化技术流程图
4.3 方块的实现
在程序中每一个方块都是一个Block类的实例。Block包括的参数有方块的宽度,高度,最左端横坐标,最上端纵坐标,方块的数组表示。
方块的7种形状分别以数字0-6来代表,在构造函数中,随机生成0-6中数字,以此来随机生成方块的形状。
用来在界面上显示方块的贴图也以0-6的数字来代表,同样以随机数的形式来随机的现实方块的颜色。
4.4 键盘输入事件处理
因为在界面上有一个按钮,并且只有一个按钮,所以该按钮在通常情况下都是默认为焦点。在这种情况下按下某些键,比如空格,就会产生出发按钮事件的情况。
当按向左,向右及旋转按钮时,只要相应的处理方块的位置或者形状即可,但是当按向下或者立即下落时,怎需要不同的处理。
向下移动时,如果移动到最底部但还未固定,则需要重新设置计时器间隔时间,从而使自动下落时,底部未固定的方块到固定的时间相同。如果方块在最底部而未固定的时候,向下移动,则立即固定。这两种情况,当方块固定后,都需要判断是否消行,并且重新处理分数和游戏等级及其显示,如果方块固定后导致游戏结束,则需要判断当前游戏分数是否进入排名,如果进入排名则需要进入系那个应的游戏分数记录处理。
立即下落时,首先需要判断是否消行,然后重新处理分数与登记及其现实。如果该方块立即下落后导致游戏结束,则需要判断当前游戏分数是否进入排名,如果进入排名则需要进入相应的游戏分数记录处理。
4.5 方块的变换与速度的控制
方块的变化主要在于如何判断当前方块周围的环境是否允许该方块旋转。在这个程序中,我是用的方法如下:首先无论该方块是否能旋转,先将旋转后的方块保存在一个临时的数组中,在结合旋转后方块的属性,比如宽度,高度,与旋转后方块周围环境进行比较,如果旋转后方块的每一小块,都与环境中固定的方块没有冲突,即不重叠,则认定该方块可以旋转。
游戏速度与方块自动下降的计时器有关,计时器的间隔越小则游戏速度越快,间隔越大则游戏速度越慢。在游戏中,游戏等级对应着游戏速度,等级越高游戏速度就越快。游戏等级随着游戏分数的增长而增长,程序中以每200分增加一级游戏等级,10级为满级,即游戏等级到了10级后无法再增长。并且游戏等级在开始游戏时甚至在游戏中都可以随时进行调节来满足不同的需要。对于自动下降,要使用另外一个线程来控制,否则在处理自动下降的同时,一切键盘对于游戏的输入将无法及时处理。
总 结 C#俄罗斯方块游戏设计实现+流程图(4):http://www.youerw.com/jisuanji/lunwen_1428.html