1.11.4 进一步改进
最后可以改进的两项内容是:创建“游戏级别”和产生“游戏屏幕设置”内容。但这些内容我们将留给读者自己去做。
为了创建游戏级别,可以使用如下的基本规则:每隔3分钟,则方块的下落速度提高10%、游戏级别增加一级、每个方块的当前得分乘以级别的编号。我们只需要修改定时器的tick过程即可添加上述规则的处理逻辑。
至于“游戏屏幕设置”内容,可以选择查看或不查看下一个方块图片(以此来设置picNextBlock的Visible属性)、可以在屏幕上调整方块的大小,从而使得那些视力较差的玩家可以在大方块环境设置下玩游戏,而那些喜欢在像素级别上玩游戏的人则可以在单像素正方形方块环境设置下工作。
因为整个游戏程序是基于GameField.SquareSize常量的,所以实现上述功能只是一个创建“屏幕设置界面”、并依据选定的正方形尺寸来调整屏幕大小的问题。下面提供的代码清单强调了这个最后值得注意的地方;添加以下代码后,就可以在对屏幕进行设置以后仍然调整其大小了:
'Adjusts The Size Of The Form And Position Based On The Class Constants
'On The Window Height, Sums The Size Of The Window Title Bar
Height = GameField.Height * GameField.SquareSize + _
(Height - ClientSize.Height) + 3 '3=Border Width
Width = GameField.Width * GameField.SquareSize + 120
PicBackground.Height = GameField.Height * GameField.SquareSize + 4
PicBackground.Width = GameField.Width * GameField.SquareSize + 4
PicNextBlock.Left = GameField.Width * GameField.SquareSize + 12
LblNextBlock.Left = GameField.Width * GameField.SquareSize + 12
LblScore.Left = GameField.Width * GameField.SquareSize + 12
LblScoreValue.Left = GameField.Width * GameField.SquareSize + 12
CmdStart.Left = GameField.Width * GameField.SquareSize + 12
上述代码中,我们既没有调整字体的大小也没有调整按钮的大小,因此如果使用更小的尺寸工作的话,则必须对上述代码进行一些更新。
在下载的源代码中,上述代码是在窗体的Load事件中编写的,因此,我们只需要简单调整一下SquareSize常量,并重新编译程序代码,即可在不同的尺寸设置环境下玩游戏了。
最后,如果想要了解更多关于该游戏的面向对象实现技术,请参见Chris Sells在Wahoo的实现过程中所做的工作( http://www.sellsbrothers.com/wahoo )。Wahoo的实现过程使用了类似的修饰技术,但是它对方块的处理方法与本例中的做法不同。






