俄罗斯方块设计报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

软件编程实习课程设计报告
俄罗斯方块
专业:电子信息科学与技术
班级:
学号:
姓名:
指导老师:
实验时间:2011年11月28
1.需求分析
功能简介
顺时针旋转顺时针旋转转块
逆时针旋转逆时针旋转转块
绘制转块指定画板上绘制转块
擦除矩形指定画板上擦除矩形
右移动右移动转块
左移动左移动转块
下移动下移动转块
丢下转块在画板上丢下转块
自定义转块样式自已定义转块样式
设置游戏按钮自定义设置游戏按钮
保存游戏基本信息保存游戏基本信息到XML文档
等级达到一定分数速度变快
1、运行环境需求:WIN95\WIN98\WinMe\WIN2000\WINXP\WINNT
2、硬件需求:(1)处理器型号:奔腾III及同等型号以上处理器及内存容量:512MB以上内存(2)外存容量:5G以上硬盘空间(3)联机或脱机:脱机;(4)媒体及其存储格式:XML文档;(5)输入输出设备的型号和数量:鼠标、彩色显示器。

2.主要算法思想
俄罗斯方块游戏程序的界面设计图如下图所示:
图1
俄罗斯方块的主要流程图如下:
图2
3.游戏的结构分析
俄罗斯方块游戏中,游戏界面区中不断有各种形状的方块从上向下落,在遇到下面已经固定的方块或者界面区域的底部而不能再下落时,则被固定在所在
位置,并且游戏将预览的方块在游戏区域从上继续下落,而且产生一个新的预览方块;当方块堆积的超过游戏界面区域时(或者游戏者积分超过一定值时),游戏结束。

在固定方块时,需要判断是否有全都是方块的行,如果有,则消去该行,并根据预定的规则增加游戏者获得的分数,并修改游戏的级别(即游戏的速度)。

游戏的控制,也即当前正在下落的方块的左右移动和变形操作,由按键控制,根据相应的按键调用相应的函数过程。

当方块左右移动遇到游戏界面中已经固定的方块时,它就被阻挡而不能移动,或者当方块已经到了游戏区域的两侧边界时,也不能移动。

对于变形操作,我们用下落方块的变形后的方块跟游戏区域中已经固定的方块比较,如果变形后没有覆盖已经固定的方块,则下落方块可以变形,否则,它就受到了一定固定的方块的阻挡而不能变形。

4.主要功能的实现
1、__fastcall TForm1::TForm1(TComponent* Owner)
功能:定义俄罗斯方块显示的区域。

2、void __fastcall TForm1::SpeedButton1Click(TObject *Sender)
功能:按开始按钮执行后面的程序。

3、void __fastcall TForm1::Timer1Timer(TObject *Sender)
功能:开启定时器,规定向下移动的时间,方块的下落就是要靠定时器事件来触发的。

4、void __fastcall TForm1::SpeedButton2Click(TObject *Sender)
功能:暂停
5、void __fastcall TForm1::DrawBlock(int X,int Y,TColor mColor)
功能:画预览区域和游戏区域的方块
6、void __fastcall TForm1::DrawSmallBlock(int X, int Y,TColor mColor)
功能:让预览区域显示小的图形
7、void __fastcall TForm1::ClearSmallBlock(int X, int Y)
功能:清除预览窗口子函数
8、void __fastcall TForm1::WriteNext()
功能:调用下一个图形子函数
9、void __fastcall TForm1::ReadStyle()
功能:从图形数组里面调用不同图形子函数
10、void __fastcall TForm1::ScanLine()
功能:扫描和检测,当方块左右移动遇到游戏界面中已经固定的方块时,它就被阻挡而不能移动,或者当方块已经到了游戏区域的两侧边界时,也不能移动。

11、void __fastcall TForm1::MoveDown()
功能:游戏区的方块向下移动
12、void __fastcall TForm1::WriteObject()
功能:写方块
13、void __fastcall TForm1::ClearBlock(int X,int Y)
功能:清除方块
14、void __fastcall TForm1::MoveLeft()
功能:游戏区的方块向左移动
15、void __fastcall TForm1::MoveUp()
功能:游戏区的方块变形
16、void __fastcall TForm1::MoveRight()
功能:游戏区的方块向右移动
17、void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
功能:键盘控制
5.详细设计与调试
5.1界面设计
俄罗斯方块游戏程序的界面设计图如图3 所示,关键的组件是四个 Panel,两个大的 Panel 为双人游戏时的两个游戏玩家的游戏区域,它们的 Name 分别为 Panel1 和 Panel2,两个小的 Panel 为绘制预览方块的区域,其 Name 属性分别为 Panel3 和 Panel4。

窗体中加入一系列的 StaticText 组件,用于显示得分、消去的函数、游戏级别以及游戏的控制按键等。

之所以使用 StaticText 而不用 Label 是因为对于 StaticText 可以设置更多的属性,如边框、底色等,可以美化界面。

需要注意的是,所有 StaticText 的 AutoSize 属性都应该设为 false,以便其 Caption 属性改变时,不影响界面的格局。

添加两个定时器组件,Timer1 和 Timer2,它们分别用于两个游戏玩家的游戏控制。

方块的下落就是要靠定时器事件来触发的,而对定时器的 Interval 属性的设置可以更改游戏的速度。

添加主菜单,菜单项“游戏”用于游戏的开始、暂停和退出操作;菜单项“Multiplayers” 用于选择单人游戏模式还是双人对战模式;菜单项“设置”用于游戏的配置操作;“帮助”用于打开程序的帮助文件。

图3
5.2 游戏的结构分析
俄罗斯方块游戏中,游戏界面区中不断有各种形状的方块从上向下落,在遇到下面已经固定的方块或者界面区域的底部而不能再下落时,则被固定在所在位置,并且游戏将预览的方块在游戏区域从上继续下落,而且产生一个新的预览方块;当方块堆积的超过游戏界面区域时(或者游戏者积分超过一定值时),游戏结束。

在固定方块时,需要判断是否有全都是方块的行,如果有,则消去该行,并根据预定的规则增加游戏者获得的分数,并修改游戏的级别(即游戏的速度)。

5.3键盘、定时器和菜单的控制
在程序中,我们定义两个游戏,即两个 TetrisGame 的实例,然后根据用户选择的是单玩家模式还是对战模式来调整窗口的显示,完成对游戏的控制。

在头文件中定义如下: public: // User declarations TetrisGameGame1,Game2; intMode; //游戏模式,1 表示 single,2 表示对战键盘、菜单和定时器等对游戏的控制,也就是根据 Mode 对 Game1 和 Game2 的控制。

6设计心得
俄罗斯方块,一个很简单的游戏,平时只知道玩,却从来没思考过它的设计过程。

通过本次的亲身设计,才体验到,一个简单程序的设计,包含的工作太多太多,而且遇到的问题也很多。

再通过老师的指导和组内同学的合作讨论,最终将程序调试出来。

从整个设计过程中,我体验到做学问的仔细与严谨,以及通过C++builder 平台,我掌握了许多设计软件的相关知识。

此外,在与组员的合作交流中,体会到团队意识的重要性。

相信在以后的学习中,不断地加强自己的动手能力,努力提高知识的运用能力。

相关文档
最新文档