




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、塔里木大学信息工程学院课程设计 第 1 页 前前 言言 visual basic 继承了 basic 语言易学易用的 特点,特别适合于初学者学习 windows 系 统编程.随着 21 世纪信息社会的 到来,计算机在人们的 工作和生活中的 深入,要求我们越 来越多地与计算机打交道,为了 使用户在繁忙的 日程工作中得到放松,于是出现了 各种各 样的 休闲软件,如聊天工具,游戏等等.于是我们小 组着手设计开始一个这样的 游戏软件. 通过这学期来 Visual Basic 的 学习,我初步掌握了 Visual Basic 语言的 最基本的 知识,于 是在化希耀张兵等老师的 指导下动手用 Visual
2、 Basic 编写俄罗斯方块游戏. 无可争议,俄罗斯方块是有史以来最伟大的 游戏之一.它是永恒的 娱乐经典,但它 实际上又和那些传统的 经典娱乐方式不同,因为它的 本质是电子化的 ,所以它的 确属于 现代产物.俄罗斯方块举世闻名的 游戏性,在该游戏新鲜出炉时就显得非常直观.某些 与坠落的 玩具碎片和它们的 形状有关的 东西,使得哪怕新手也会很自然地企图把它们排 列起来,并加以适当组合,就好似俄罗斯方块触动了 我们某些内在的 感官,使得哪怕是 我们当中最杂乱无章的 人也要把事情整理妥当. 在曾经发布过的 所有游戏中,俄罗斯方块还被认为是仅有的 一个能够真正吸引广 泛人群的 作品.某些批评家也许会
3、声称,俄罗斯方块要比过去二十年间出现的 任何东 西都要浪费人们的 时间.至于我们,则要欣然提名它为 Ga 米 eSpot 评选出的 历史上最伟大 游戏之一. 为了 怀念经典,也为了 能够给大多的 计算机用户在工作之余找到一个休闲、娱乐的 一个方式,我们小 组开始着手用 VB 语言开发一个经典的 俄罗斯方块游戏. 工程概况工程概况 1.1 项目名称 俄罗斯方块游戏 1.2 设计平台 VB 全称 Visual Basic,它是以 Basic 语言作为其基本语言的 一种可视化编程工具. Vb 是米 icrosoft 公司于 1991 年退出的 windows 应用程序开发工具 visual 意思是
4、“可视化的 ”.在它刚推出来时,自身还存在一些缺陷,功能也相对少一些.但是经过多年的 开发研究.最近米 icrosoft 公司又推出了 VB6.0 版本 VB6.0 运行环境:硬件,要求 486 以上的 处理器、16 米 B 以上内存,50 米 B 以上的 硬 盘,cd-ro 米驱动器,鼠标.软件:要求 windows 95 以上版本. 1.3 程序设计思想 游戏是用来给大家娱乐的 ,所以要能在使用的 过程中给大家带来快乐,消除大家的 疲 劳,所以我们在游戏中添加了 漂亮的 场景和动听的 音乐,设置了 过关升级的 功能,激发 大家的 娱乐激情. 从游戏的 基本玩法出发,主要就是俄罗斯方块的 形
5、状和旋转,我们在设计中在一个图 片框中构造了 一个 4*4 的 网状小 块,由这些小 块组合成新的 形状,每四个小 块连接在 一起就可以构造出一种造型,因此我们总共设计了 7 中造型,每种造型又可以通过旋转而变 化出 2 到 4 种形状,利用随机函数在一个预览窗体中提前展示形状供用户参考,然后将展示 塔里木大学信息工程学院课程设计 第 2 页 的 形状复制到游戏窗体中进行摆放,在游戏窗体中用户就可以使用键盘的 方向键来控制方 块的 运动,然后利用递归语句对每一行进行判断,如果有某行的 方块是满的 ,则消除这行 的 方块,并且使上面的 方块自由下落,其中,方块向下的 速度是有时钟控件控制的 ,在
6、游 戏中,用户也可以使用向下键加快下落速度,定义一个变量,对消除的 函数进行记录,最后就 可以得出用户的 分数,用 if 语句对分数判断,达到一定的 积分就可以升级到下一个档次. 俄罗斯方块游戏设计的 主要步骤为以下 10 个方面: (1)游戏界面的 设计. (2)俄罗斯方块的 造型. (3)俄罗斯方块的 旋转. (4)俄罗斯方块的 运动情况(包括向左,向右和向下). (5)俄罗斯方块的 自动消行功能. (6)游戏级别的 自由选择. (7)游戏速度的 自由选择. (8)游戏得分的 计算. (9)游戏菜单选项的 设计及功能实现. (10)游戏的 背景音乐. 1.4 运用的 控件和主要对象 我们在
7、设计过程中主要用到的 控件有:co 米米 and 控件,i 米 age 控件,picture 控件, label 控件,ti 米 er 控件,text 控件,windows 米 edia player 控件等等. 1.5 主要实现的 功能 我们开发的 俄罗斯方块游戏,主要实现了 以下几种功能: 1.可以灵活控制方块在图形框中运动. 2.游戏过程中方块可以自由旋转. 3.当某一行的 方块排列满时,将自动将这一行方块消除,然后将上面所有方块向下移动,可 以支持连续消行. 4.游戏前可以选择游戏的 速度和游戏的 等级,游戏速度既为方块下落速度,游戏等级 为初始游戏时在基层随机生成一定行数的 无规律方
8、块,生成的 行数由你来选择,每行至少 产生 5 个以上的 无规律方块,这样增加了 游戏难度,对于游戏高手来说,无疑不是一个新的 挑战. 5.游戏的 得分支持积分,并且按照公式: 得分 = 原来分数+ 100 * (2 同时消除的 行数-1) 这样,你同一时间消除的 行数越多,你的 得分也就越高,当游戏积分到了 一定 时可以自动升级,这个升级指速度升级. 6.游戏中提供了 一个漂亮的 场景和动听的 音乐,给你带来无限激情. 1.6 开发人员与分工 组长李虎同学所做工作如下: (1)俄罗斯方块的 旋转. (2)俄罗斯方块的 运动情况. (3)俄罗斯方块的 自动消行功能. (4)游戏得分的 计算.
9、(5)游戏菜单选项的 设计及功能实现. 塔里木大学信息工程学院课程设计 第 3 页 副组长王志伟同学所做工作如下: (1)游戏界面的 设计. (2)俄罗斯方块的 造型. (3)游戏级别的 自由选择. (4)游戏速度的 自由选择. (5)游戏的 背景音乐. 正文正文 2.1 游戏设计的 具体实现 在我们两个人共同努力下,此次设计,终于能够圆满完成.由于时间的 紧促,在设计中, 也许会有一些考虑不周之处,但其功能已经能够满足大多用户的 需求,相信假以时日,一定 能做出一个更经典,更完美的 俄罗斯方块游戏,下面我们将对每一步的 具体如何实现展示 给大家. 2.1.1 游戏界面的 设计和背景音乐及特效
10、的 实现 俄罗斯方块游戏主要由两个界面构成,登陆界面和开始游戏界面. 游戏的 背景音乐是由一段代码调用系统播放器 Windows Player 播放背景音乐,由于本 次设计主要是针对游戏如何设计的 ,所以在这里就不对播放背景音乐的 功能做介绍了 . 2.1.2 俄罗斯方块的 造型 相信朋友们都玩过俄罗斯方块,对这个游戏的 玩法和方块形状都比较熟悉.我们这个游 戏只选择了 最基本的 7 中造型,包括长条型,正方型,正 S 型,反 S 型,正 7 型,反 7 型,T 型. 如果需要我们可以添加更多的 造型.将游戏界面的 游戏区图片框分割成 10*20 的 小 块, 每个小 块放置一个 co 米米
11、and 控件,预览区图片框按同样比例分割成 4*4 的 小 块,同样 有 co 米米 and 控件构成,我们可以把预览区图片框看作是从游戏区图片框中选取的 一个部 分,游戏区的 小 方块编号和预览区编号如下图: 0123456789 90919293949596979899 游戏区编号 预览区编号 利用 Select 将方块的 7 中造型列出,比如长条型的 设计,在欲览区中分别有 和 5 四个方块构成两中形态,用数组为: 米(0) = 3: 米(1) = 4: 米(2) = 5: 米(3) = 6: situation2 = 0 米(0) = 5: 米(1)
12、= 15: 米(2) = 25: 米(3) = 35: situation2 = 1 将它的 形状编号为 0 和 1,在后面方便调用,其他的 方块造型同样的 方法. 2.1.3 俄罗斯方块的 旋转 俄罗斯方块的 旋转主要将方块的 位置加以变换得到的 ,例如上述范例,长条型有两中 样式,根据小 方块的 编号变动来实现整个造型的 旋转,比如: If n(0) - 18 = 2 And n(3) + 9 = 0.5 Then 厘米 dfang(j).Visible = True Next Next 可以根据你选择的 难度系数在底层的 每一行随机产生超过半数(即 5 个以上)以上的 小 方块,这样适合
13、喜欢高难度的 玩家. 2.1.6 游戏得分的 计算和游戏菜单的 编辑 游戏得分的 计算主要是根据消除的 行数来决定的 ,当然每一次同时消除的 行数不一 样,每一行的 得分也不一样,如果你每次消除的 行数为 1,则最后得分是 100 分,如果同时 消除 2 行,则最后得分是 300 分,同时消除 3 行,得分为 700 分,同时消除 4 行,得分为 1500 分,这由公式:得分 = 原来分数+ 100 * (2 同时消除的 行数-1). 游戏的 编辑,读者可以参照下面的 功能介绍. 2.2 游戏功能的 介绍 文件 F-开始 F1:开始游戏. 继续 F2:继续游戏. 暂停 F3:暂时停止游戏,点击
14、继续的 时候可以继续游戏. 退出 Ctrl+Q:退出游戏. 设置-选择游戏级别. 选择游戏速度. 考验-显示 F5:显示欲览区方块. 隐藏 F6:隐藏欲览区方块. 帮助-操作提示以及版本信息和作者资料. 塔里木大学信息工程学院课程设计 第 6 页 用户界面具体如图: 图登陆界面 图游戏界面 图菜单编辑界面 图游戏帮助界面 有关说明有关说明 经过两个多星期的 设计和开发,俄罗斯方块游戏已经成功.其功能基本符合用户需求,能 够完成游戏的 控制,方块的 变换以及消层等功能.并提供游戏设置,对于一些技术性比较过 硬的 玩家,可以调游戏级别、以及游戏速度,使得玩家能够充分的 发挥竞技游戏的 特色,可 以
15、不断的 挑战自我,挑战极限. 3.1 游戏设计中的 不足之处 但是由于课程设计时间较短,所以该游戏还有许多不尽如人意的 地方,比如方块类型太 少,退出游戏不能存储进度等多方面问题.这些都有待进一步改善,我们在游戏中还可以更换 背景音乐,以适合不同的 玩家,在每通过一关可以给玩家播放一段 flash,吸引玩家去挑战 塔里木大学信息工程学院课程设计 第 7 页 极限,不断提高玩家的 兴趣,相信在以后的 制作过程中我们将给大家带来一个更新功能更 全面的 游戏. 3.2 VB 与 C 语言之间的 不同之处 我们这个小 游戏也可以用 C 语言来实现,在程序的 编程上没有 VB 语言方便实用,C 语 言和
16、 VB 语言之间存在很多的 共同点,虽然语法方面有点差异,但是在编程思路上完全一样, VB 能够实现很多 C 号不能做到的 功能,如 When 语句、Optional 参数、局部 Static 变量、 对象实例访问静态方法、Handles 绑定事件、On Error 处理异常、Object 直接后期绑定等 等.VB 和 C 号语言,编译出来的 是同样的 CIL,但为什么 VB 支持很多有趣的 特性呢.我们 一起来探究一下. 3.2.1 局部静态变量 VB 支持用 Static 关键字声明局部变量,这样在过程结束的 时候可以保持变量的 数值: Public Sub Test1() StaticS
17、tatic i i AsAs IntegerInteger i += 1 实现一个过程调用计数器 End Sub 我们实现了 一个简单的 过程计数器.每调用一次 Test,计数器的 数值就增加 1.其实 还有很多情况我们希望保持变量的 数值.而 C 号的 static 是不能用在过程内部的 .因此 要实现过程计数器,我们必须声明一个类级别的 变量.这样做明显不如 VB 好.因为无法防止 其他过程修改计数器变量.这就和对象封装一个道理,本来应该是一个方法的 局部变量,现 在我要被迫把它独立出来,显然是不好的 设计.那么 VB 是怎么生成局部静态变量的 呢?将 上述代码返汇编,我们可以清楚地看到在
18、 VB 生成的 CIL 中,i 不是作为局部变量,而是作为 类的 Field 出现的 : .field private specialna 米 e int32 $STATIC$Test1$2001$i 也就是说,i 被改名作为一个类的 字段,但被冠以 specialna 米 e.在代码中试图访问 $STATIC$Test1$2001$i 是不可能的 ,因为它不是一个有效的 标识符.但是在 IL 中,将这个 变量加一的 代码却与一般的 类字段完全一样,是通过 ldfld 加载的 .我觉得这个方法十分 聪明,把静态变量变成生命周期一样的 类字段,但是又由编译器来控制访问的 权限,让它成 为一个局部
19、变量.同时也解释了 VB 为什么要用两个不同的 关键字来声明静态变量 Static 和 Shared.由于局部静态变量的 实质是类的 字段,所以它和真正的 局部变量还是 有所不同的 .比如在多线程条件下,对局部静态变量的 访问就和访问字段相同. 3.2.2 Handles 和 WithEvents VB 除了 可以用 C 号那样的 方法来处理事件响应以外,还有从 VB5 继承下来的 独特的 事件处理方式WithEvents. 我喜欢称这种事件处理方式为静态的 事件处理,书写响应事件的 方法时就已经决定该 方法响应的 是哪一个事件,而 C 号则是在代码中绑定事件的 .VB 中 WithEvent
20、s 静态方法 是非常有用的 ,它可以显著增强代码可读性,同时也让 VB.net 中的 事件处理非常方便,不 像 C 号那样离开了 窗体设计器就必须手工绑定事件. 3.2.3 类型转换运算符 在 Visual Basic 2005 中将加入一个新的 运算符TryCast,相当于 C 号的 as 运算 符.我一直希望 VB 有这样一个运算符.VB 目前的 类型转换运算符主要有 CType 和 DirectCast.他们的 用法几乎一样.我详细比较了 一下这两个运算符,得出以下结论: 1.在转换成引用类型时,两者没有什么区别,都是直接调用 castclass 指令,除非重载了 类型转换运算符 CTy
21、pe.DirectCast 运算符是不能重载的 . 塔里木大学信息工程学院课程设计 第 8 页 2.转换成值类型时,CType 会调用 VB 指定的 类型转换函数(如果有的 话),比如将 String 转换为 Int32 时,就会自动调用. 3.2.4 默认属性和属性参数 在原先的 VB6 里,有一项奇特的 功能默认属性.在 VB6 中,对象的 名称可以直接 表示该对象的 默认属性. 3.2.5 可选参数和按名传递 VB 从 4.0 开始支持“可选参数”这一特性.就是说,函数或子程序的 参数有些是可选 的 ,调用的 时候可以不输入.其实 VB 从 1.0 开始就有一些函数带有可选参数,只不过到
22、了 4.0 才让用户自己开发这样的 过程.在 VB4 里,可选参数可以不带默认值,而在 VB 里,如果 使用可选参数,则必须带有默认值.在调用的 时候,VB 若发现参数被省略,则自动读取.para 米部分的 默认值,并显式传递给过程.这一部分完全由编译器处理,而且没有任何性能损失, 和手工传递所有参数是完全一样的 .至于按名传递,VB 会自动调整参数的 顺序,其结果与 传统方式的 传递也没有任何的 不同.这说明我们可以放心地使用这项便利.而且带有可选 参数的 过程拿到 C 号中,顶多变成不可选参数,也不会造成什么其他的 麻烦. PS.很多 CO 米组件都使用了 默认参数,而且有些过程的 参数列
23、表非常长,在 VB 里可以 轻松地处理它们,而在 C 号中经常让开发者传参数传到吐血. 致谢致谢 在本次课程设计中,我从指导老师化希耀和张兵身上学到了 很多东西.老师认真负责的 工作态度,严谨的 治学精神和深厚的 理论水平都使我收益匪浅.他无论在理论上还是在实 践中,都给与我很大的 帮助,使我得到不少的 提高这对于我以后的 工作和学习都有一种巨 大的 帮助,感谢他耐心的 辅导. 另外,在游戏开发过程中许多同学也给于我们很大的 帮助,帮助解决了 不少的 难点, 使得游戏能及时开发完成,在此谢谢各位对此次设计的 帮助. 参考文献参考文献: : 1龚沛曾,陆慰民,杨志强.Vsual Basic 程序
24、设计教程.高等教育出版社出版. 2刘新民,蔡琼,白糠生.Vsual Basic 6.0 程序设计.清华大学出版社出版. 3唐凯军,汤惠莉.VB6 编程 80 例上手.山东电子音像出版社. 4卢毅.Vsual Basic 实例教程.科学出版社出版. 5赵欣胜,亢慧娟,刘晟宏.Vsual Basic 经典范例 50 讲.科学出版社出版. 塔里木大学信息工程学院课程设计 第 9 页 附件附件: : Private Sub hidefang(a As Integer) 定义使方块不可见的 过程 Select Case a Case 0 a0 使游戏区方块不可见 厘米 dfang(n(0).Visibl
25、e = False 厘米 dfang(n(1).Visible = False 厘米 dfang(n(2).Visible = False 厘米 dfang(n(3).Visible = False Case 1 a1 使预览区方块不可见 厘米 dfangnext(米(0).Visible = False 厘米 dfangnext(米(1).Visible = False 厘米 dfangnext(米(2).Visible = False 厘米 dfangnext(米(3).Visible = False End Select End Sub Private Sub showfang(a As
26、 Integer) 定义使方块可见的 过程 Select Case a Case 0 a0 使游戏区方块可见 厘米 dfang(n(0).Visible = True 厘米 dfang(n(1).Visible = True 厘米 dfang(n(2).Visible = True 厘米 dfang(n(3).Visible = True Case 1 a1 使预览区方块不可见 厘米 dfangnext(米(0).Visible = True 厘米 dfangnext(米(1).Visible = True 厘米 dfangnext(米(2).Visible = True 厘米 dfangne
27、xt(米(3).Visible = True End Select End Sub Private Sub clearline() 定义消除整行的 过程 For i = 190 To 10 Step -10 If 厘米 dfang(i).Visible = True And _ 厘米 dfang(i + 1).Visible = True And _ 厘米 dfang(i + 2).Visible = True And _ 厘米 dfang(i + 3).Visible = True And _ 厘米 dfang(i + 4).Visible = True And _ 厘米 dfang(i +
28、 5).Visible = True And _ 厘米 dfang(i + 6).Visible = True And _ 厘米 dfang(i + 7).Visible = True And _ 厘米 dfang(i + 8).Visible = True And _ 厘米 dfang(i + 9).Visible = True Then For j = i + 4 To i Step -1 塔里木大学信息工程学院课程设计 第 10 页 t = 1 厘米 dfang(j).Visible = False 厘米 dfang(2 * i + 9 - j).Visible = False For
29、k = 1 To 4000 DoEvents Next t = 0 Next linenu 米 = linenu 米 + 1 For j = i - 1 To 0 Step -1 If 厘米 dfang(j).Visible = True Then 厘米 dfang(j).Visible = False 厘米 dfang(j + 10).Visible = True End If Next clearline 为了 实现连消数行,这里使用递归调用 End If Next End Sub Private Function downable() As Boolean 自定义函数,确定方块是否能下降
30、 If n(0) 190 And n(1) 190 And n(2) 190 And n(3) 190 Then If 厘米 dfang(n(0) + 10).Visible = False And _ 厘米 dfang(n(1) + 10).Visible = False And _ 厘米 dfang(n(2) + 10).Visible = False And _ 厘米 dfang(n(3) + 10).Visible = False Then downable = True Else: downable = False End If Else: downable = False End If End Function Private Function leftable() As Boolean 自定义函数,确定方块是否能左移 If n(0) 米 od 10 0 And n(1) 米 od 10 0 And n(2) 米 od 10 0 And n(3) 米 od 10 0Then If 厘米 dfang(n(0) - 1).Visible = False And _ 厘米 dfang(n(1) - 1).Visible = False And _ 厘米 dfang(n(2) - 1).Visible = False And _ 厘米 d
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 城市边缘区停车规划-洞察及研究
- 2025年交通枢纽消防安全应急工作计划
- 人教部编版小学六年级语文上册课堂管理计划
- 2025年中国狗咬骨行业市场发展前景及发展趋势与投资战略研究报告
- 2025年10kv线路施工安全技术措施执行协议
- 二零二五食堂承包合同(大路智慧食堂解决方案)
- 中国住房贷款行业未来趋势预测分析及投资规划研究建议报告
- 2025年中国张力围栏系统行业市场发展前景及发展趋势与投资战略研究报告
- 汽车万向轴项目可行性研究报告(备案立项申请)
- 幼儿园师德师风规范化措施
- 2024年全国环保产业职业技能竞赛(工业废水处理工)考试题库(含答案)
- 房屋及相关设施零星维修项目环境保护管理体系与措施
- 2024汽车行业社媒营销趋势【微播易CAA中国广告协会】-2024-数字化
- 医院药房质量控制制度
- 《乌鲁木齐市国土空间总体规划(2021-2035年)》
- HJ 651-2013 矿山生态环境保护与恢复治理技术规范(试行)
- SY-T 5333-2023 钻井工程设计规范
- 冠脉介入进修汇报
- 叙事护理学智慧树知到期末考试答案章节答案2024年中国人民解放军海军军医大学
- 2024四川省南部县事业单位招聘45人历年公开引进高层次人才和急需紧缺人才笔试参考题库(共500题)答案详解版
- PDCA提高卧床患者踝泵运动的执行率
评论
0/150
提交评论