VB 俄罗斯方块的设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、课程设计的目的与要求 (2)
1.1、俄罗斯方块的要求 (2)
1.2、俄罗斯方块设计的目的 (3)
二、题目分析 (4)
2.1、概要设计 (4)
2.2、详细设计 (4)
游戏区模块的设计 (5)
控制区模块的设计 (5)
三、设计思路 (6)
3.1、系统流程的总设计 (6)
3.2、游戏区模块的设计 (7)
3.2.1、Bitblt函数参数的意义与用法 (7)
3.2.2、俄罗斯方块的旋转 (8)
3.2.3、如何实现方自动消除满行的方块 (9)
3.2.4、随机从 7 个方块中选择一个 (10)
3.2.5、设置每个模块的测试计 (11)
3.3、整体游戏程序的结构设计 (11)
3.4、程序设计 (13)
四、调试过程 (14)
4.1、设计游戏界面 (14)
4.2、完善与改善游戏界面 (15)
五、运行结果 (18)
六、课程设计总结 (20)
附录 (22)
一、课程设计的目的与要求
1.1、俄罗斯方块的要求
俄罗斯方块的基本规则是移动、旋转和摆放游戏自动输出的各种方块,使之排列成完整的一行或多行并且消除得分,俄罗斯方块游戏是一款适合大众的游戏软件,它适合不同年龄的人玩。本软件要实现的功能如下:
(1)游戏区:玩家可以在游戏区中堆积方块,并能够在游戏过程中随时了解得分情况。
(2)游戏控制:玩家可以通过游戏控制功能来选择开始新的一局游戏,暂停或退出游戏。
(3)级别设置:玩家可以根据自己的需要自行设定游戏的开始级别,级别越高,游戏的速度越快,难度越大。
游戏规则如下:
(1)电脑随机产生4个小方块组成的不同形状的游戏块,从上往下降落。
(2)游戏面板的宽度为12(以小方块的宽度为单位),高度为22,当一行被12个小方块填满时,此行便会被自动消除。
(3)利用键盘上的左右箭头键可以控制游戏块的左移与右移。
(4)利用键盘上的向上箭头键可以控制游戏块的旋转。
(5)利用键盘上的向下箭头键可以控制游戏块的快速下落。
(6)当游戏块无法下落时,游戏结束。
(7)在屏幕上可以显示将出现的下一个游戏块。
1.2、俄罗斯方块设计的目的
无可争议,《俄罗斯方块》是有史以来最伟大的游戏之一。它是永恒的娱乐经典,但它实际上又和那些传统的经典娱乐方式不同,因为它的本质是电子化的,所以它的确属于现代产物。《俄罗斯方块》举世闻名的游戏性,在该游戏新鲜出炉时就显得非常直观。某些与坠落的玩具碎片和它们的形状有关的东西,使得哪怕新手也会很自然地企图把它们排列起来,并加以适当组合,就好似《俄罗斯方块》触动了我们某些内在的感官,使得哪怕是我们当中最杂乱无章的人也要把事情整理妥当。
在曾经发布过的所有游戏中,《俄罗斯方块》还被认为是仅有的一个能够真正吸引广泛人群的作品。某些批评家也许会声称,《俄罗斯方块》要比过去二十年间出现的任何东西都要浪费人们的时间。至于我们,则要欣然提名它为GameSpot评选出的历史上最伟大游戏之一。
为了怀念经典,也为了能够给大多的计算机用户在工作之余找到一个休闲、娱乐的一个方式,我们小组开始着手用VB语言开发一个经典的俄罗斯方块游戏。
关键字:游戏,模块,多媒体。
二、题目分析
2.1、概要设计
设计一款游戏,必然少不了流程图,与整个开发的逻辑。流程图如图1所示:
图1 俄罗斯方块的设计流程图
2.2、详细设计
游戏区模块的设计
游戏区的流程设计如图2所示:
图2 游戏区模块的设计流程控制区模块的设计
游戏区的流程设计如图3所示:
图3游戏区模块的设计流程
三、设计思路
结合游戏区与控制去模板的设计流程,可以得出系统总流程,如图4所示:
3.1、系统流程的总设计
3.2、游戏区模块的设计
游戏区模块总体上划分为三个模块,分别为游戏开始模块、游戏退出模块、帮助模块。一个游戏必须是要有游戏规则的。其中的帮助就是教会我的玩法,以及其中的规则
3.2.1、Bitblt函数参数的意义与用法
函数功能:该函数对指定的源设备环境区域中的像素进行位块(bit_block)转换,以传送到目标设备环境。
函数原型:BOOL BitBlt(HDC hdcDest,int nXDest,int nYDest,int nWidth,int nHeight,HDC hdcSrc,int nXSrc,int nYSrc,DWORD dwRop);
参数:dcDest:指向目标设备环境的句柄。
nXDest:指定目标矩形区域左上角的X轴逻辑坐标。
nYDest:指定目标矩形区域左上角的Y轴逻辑坐标。
nWidth:指定源和目标矩形区域的逻辑宽度。
nHeight:指定源和目标矩形区域的逻辑高度。
hdcSrc:指向源设备环境的句柄。
nXSrc:指定源矩形区域左上角的X轴逻辑坐标。
nYSrc:指定源矩形区域左上角的Y轴逻辑坐标。
光栅操作代码:SrcCopy:将源矩形区域直接拷贝到目标矩形区域。
dwRop:指定光栅操作代码。这些代码将定义源矩形区域的颜色数据,如何与目标矩形区域的颜色数据组合以完成最后的
颜色。
3.2.2、俄罗斯方块的旋转
俄罗斯方块的旋转主要将方块的位置加以变换得到的,例如上述范例,长条型有两中样式,根据小方块的编号变动来实现整个造型的旋转,比如:
If Judge_Rotate Then
intRotate = intRotate + 1
Select Case Type_Now
Case 1 '长条
If intRotate Mod 2 = 1 Then
picPictureNow.Picture = LoadResPicture(12, 0)
picPictureNow.Top = picPictureNow.Top + 3
picPictureNow.Left = Adjust_Left
Else
picPictureNow.Picture = LoadResPicture(11, 0)
picPictureNow.Top = Adjust_Top
picPictureNow.Left = picPictureNow.Left + 1
End If