VB程序设计论文_第1页
VB程序设计论文_第2页
VB程序设计论文_第3页
VB程序设计论文_第4页
VB程序设计论文_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

桂林电子科技大学编号: VB程序设计(论文)说明书题 目:俄罗斯方块游戏源程序设计院 (系): 应用科技学院 专 业: 电子信息工程 学生姓名: 滕德锋 学 号: 0701130124 指导教师: 孙 安 青 2010年 6 月 8 日前 言visual basic继承了basic语言易学易用的特点,特别适合于初学者学习windows系统编程。随着21世纪信息社会的到来,计算机在人们的工作和生活中的深入,要求我们越来越多地与计算机打交道,为了使用户在繁忙的日程工作中得到放松,于是出现了各种各样的休闲软件,如聊天工具,游戏等等。于是我们小组着手设计开始一个这样的游戏软件。通过这学期来Visual Basic的学习,我初步掌握了Visual Basic语言的最基本的知识,于是在化希耀张兵等老师的指导下动手用Visual Basic编写俄罗斯方块游戏。俄罗斯方块是一款风靡全球的电视游戏机和掌上游戏机游戏,它曾经造成的轰动与经济价值可以说是游戏史上的一件大事。这款游戏最初是由苏联的游戏制作人Alex Pajitnov制作的,它看似简单但却变化无穷,令人着迷。相信大多数人都还记得为它的规则简单,容易上手,且游戏过程变化无穷。而在“联众俄罗斯方块”中,游戏人既能感受到游戏中的乐趣,也能提供一个展现自己高超技艺的场所。 究其历史,俄罗斯方块最早还是出现在PC机上。无数人进入游戏编程的世界都是从编写俄罗斯方块游戏开始的,因为这是检验一个人对开发语言、环境和基本数据结构知识熟练程度的便捷途径。 Visual Basic是微软公司推出的Basic语言编程工具,它比标准Basic语言增加了许多功能。它支持面向对象的编程,由于它是为Window这样的图形用户界面的操作系统开发的,所以它使用事件驱动的方式控制程序流程。工程概况1.1方案选择实现俄罗斯方块游戏可以用很多种语言,比如说C、java等。选择VB作为开发工具,主要因为VB有以下的特点:具有快速的程序开发环境,编制程序界面简单,代码的编写量小,用户可以很方便的直接改动界面。Visual Basic语言的出现为Windows下的编程提出了一个新的概念,利用Visual Basic 的动态数据交换、对象的链接和嵌入、动态链接库、ActiveX技术和开放式数据库访问技术可以很方便地设计出功能强大的应用程序。 利用Visual Basic 语言编程有以下几个特点:1、可视化程序设计 在Visual Basic 中开发的应用程序,不但有丰富的图形界面,同时由用户为开发图形界面而编写的代码比较少,因为在Visual Basic 设计图形界面的过程中只需要设置ActiveX控件的属性值即可。2、强大的数据库和网络功能 随着Visual Basic语言的进一步发展,它在数据库和网络方面的功能优势愈加明显,利用Visual Basic自带的可视化数据管理器和报表生成器,完全可以在Visual Basic就完成数据库的开发。3、其他特性 从Visual Basic 5.0版本开始,在Visual Basic中制作的应用程序都改变为编译执行,使得Visual Basic的代码效率有了很大的提高,同时执行的速度也加快了30%。当然在Visual Basic中还有其他特性:1. 面向对象的编程语言; 2. 面向对象程序设计;3. 事件驱动的程序设计; 4. 支持动态链接库;1.2程序设计思想游戏是用来给大家娱乐的,所以要能在使用的过程中给大家带来快乐,消除大家的疲劳,所以我们在游戏中添加了漂亮的场景和动听的音乐,设置了过关升级的功能,激发大家的娱乐激情。从游戏的基本玩法出发,主要就是俄罗斯方块的形状和旋转,我们在设计中在一个图片框中构造了一个4*4的网状小块,由这些小块组合成新的形状,每四个小块连接在一起就可以构造出一种造型,因此我们总共设计了7中造型,每种造型又可以通过旋转而变化出2到4种形状,利用随机函数在一个预览窗体中提前展示形状供用户参考,然后将展示的形状复制到游戏窗体中进行摆放,在游戏窗体中用户就可以使用键盘的方向键来控制方块的运动,然后利用递归语句对每一行进行判断,如果有某行的方块是满的,则消除这行的方块,并且使上面的方块自由下落,其中,方块向下的速度是有时钟控件控制的,在游戏中,用户也可以使用向下键加快下落速度,定义一个变量,对消除的函数进行记录,最后就可以得出用户的分数,用if 语句对分数判断,达到一定的积分就可以升级到下一个档次。俄罗斯方块游戏设计的主要步骤为以下10个方面:(1)游戏界面的设计。(2)俄罗斯方块的造型。(3)俄罗斯方块的旋转。(4)俄罗斯方块的运动情况(包括向左,向右和向下)。(5)俄罗斯方块的自动消行功能。(6)游戏级别的自由选择。(7)游戏速度的自由选择。(8)游戏得分的计算。(9)游戏菜单选项的设计及功能实现。(10)游戏的背景音乐。1.3主要实现的功能我们开发的俄罗斯方块游戏,主要实现了以下几种功能:1.可以灵活控制方块在图形框中运动。2.游戏过程中方块可以自由旋转。3.当某一行的方块排列满时,将自动将这一行方块消除,然后将上面所有方块向下移动,可以支持连续消行。4.游戏前可以选择游戏的速度和游戏的等级,游戏速度既为方块下落速度,游戏等级为初始游戏时在基层随机生成一定行数的无规律方块,生成的行数由你来选择,每行至少产生5个以上的无规律方块,这样增加了游戏难度,对于游戏高手来说,无疑不是一个新的挑战。5.游戏中提供了一个漂亮的场景和动听的音乐,给你带来无限激情。正文2.1游戏设计的具体实现在自己的努力下,此次设计,终于能够圆满完成。由于时间的紧促,在设计中,也许会有一些考虑不周之处,但其功能已经能够满足大多用户的需求,相信假以时日,一定能做出一个更经典,更完美的俄罗斯方块游戏,下面我们将对每一步的具体如何实现展示给大家。2.1.1俄罗斯方块的造型3456131415162324252633343536相信朋友们都玩过俄罗斯方块,对这个游戏的玩法和方块形状都比较熟悉。我们这个游戏只选择了最基本的7中造型,包括长条型,正方型,正S型,反S型,正7型,反7型,T型。如果需要我们可以添加更多的造型。将游戏界面的游戏区图片框分割成10*20的小块,每个小块放置一个command控件,预览区图片框按同样比例分割成4*4的小块,同样有command控件构成,我们可以把预览区图片框看作是从游戏区图片框中选取的一个部分,游戏区的小方块编号和预览区编号如下图: 012345678990919293949596979899 游戏区编号 预览区编 利用Select将方块的7中造型列出,比如长条型的设计,在欲览区中分别有3.4.5.6和5.15.25.35四个方块构成两中形态,用数组为: m(0) = 3: m(1) = 4: m(2) = 5: m(3) = 6: situation2 = 0m(0) = 5: m(1) = 15: m(2) = 25: m(3) = 35: situation2 = 1将它的形状编号为0和1,在后面方便调用,其他的方块造型同样的方法。2.1.2俄罗斯方块的旋转俄罗斯方块的旋转主要将方块的位置加以变换得到的整个造型的旋转,比如:If n(0) - 18 = 2 And n(3) + 9 = 2 Then If MaxX - CurX Xs(i).cX Then MinX = Xs(i).cX If MaxX Xs(i).cY Then MinY = Xs(i).cY If MaxY = picPictureNow.Width And OKCount = picPictureNow.Height Then EmptyCount = EmptyCount + 1 OKCount = 0 Else Exit For End If Next MaxY = MaxY + EmptyCount If MaxY 20 Then MaxY = 20 Else Get X Value EmptyCount = 0 Get MinX OKCount = 0 For i = MinX - 1 To MinX - (nWid - 1) Step -1 For j = MinY To MaxY If Total(i, j) = False Then OKCount = OKCount + 1 Next If OKCount = picPictureNow.Width And OKCount = Function Get_Y_Value() If GetValue(0, 2) Then Get Y Value If MaxY - MinY = 2 Then If MaxY - (picPictureNow.Top + 1) = 1 Then Adjust_Top = MinY - 1 Else Adjust_Top = picPictureNow.Top End If Get_Y_Value = True Exit Function End If End If Get_Y_Value = FalseEnd FunctionSub Global_Init()全局初始化picBackGround.ClsimgPictureNext.Picture = LoadPicture()picPictureNow.Visible = FalsetmrDrop.Enabled = FalseEnd SubSub Init()每个方块的初始化过程picPictureNow.Visible = FalsetmrDrop.Enabled = FalseType_Now = Type_NextpicPictureNow.Picture = imgPictureNext.PictureimgPictureNowBackup.Picture = picPictureNow.PictureSel_NextintRotate = 0picPictureNow.Left = 4picPictureNow.Top = 0picPictureNow.Visible = TruetmrDrop.Enabled = TrueEnd SubSub GetCoor()获取一个方块的 4 个点的坐标For i = 1 To 4 init Xs(i).cX = 0 Xs(i).cY = 0 Xs(i).cZ = FalseNextCurX = picPictureNow.Left + 1 Select Case Type_Now Case 1 长条 If intRotate Mod 2 = 1 Then Xs(1).cX = CurX Xs(1).cY = picPictureNow.Top + 1 Xs(1).cZ = True For i = 2 To 4 Xs(i).cX = CurX + i - 1 Xs(i).cY = picPictureNow.Top + 1 Xs(i).cZ = True Next Else Xs(1).cX = CurX Xs(1).cY = picPictureNow.Top + 4 Xs(1).cZ = True For i = 2 To 4 Xs(i).cX = CurX Xs(i).cY = picPictureNow.Top + i - 1 Xs(i).cZ = False Next End If Case 2 2字 If intRotate Mod 2 = 1 Then Xs(1).cX = CurX Xs(1).cY = picPictureNow.Top + 3 Xs(1).cZ = True Xs(2).cX = CurX + 1 Xs(2).cY = picPictureNow.Top + 2 Xs(2).cZ = True For i = 3 To 4 Xs(i).cX = CurX + i - 3 Xs(i).cY = picPictureNow.Top + 5 - i Xs(i).cZ = False Next Else Xs(1).cX = CurX Xs(1).cY = picPictureNow.Top + 1 Xs(1).cZ = True Xs(2).cX = CurX + 1 Xs(2).cY = picPictureNow.Top + 2 Xs(2).cZ = True Xs(3).cX = CurX + 2 Xs(3).cY = picPictureNow.Top + 2 Xs(3).cZ = True Xs(4).cX = CurX + 1 Xs(4).cY = picPictureNow.Top + 1 Xs(4).cZ = False End If Case 3 7字 Select Case intRotate Mod 4 Case 0 Xs(1).cX = CurX Xs(1).cY = picPictureNow.Top + 1 Xs(1).cZ = True Xs(2).cX = CurX + 1 Xs(2).cY = picPictureNow.Top + 3 Xs(2).cZ = True For i = 3 To 4 Xs(i).cX = CurX + 1 Xs(i).cY = picPictureNow.Top + i - 2 Xs(i).cZ = False Next Case 1 Xs(1).cX = CurX Xs(1).cY = picPictureNow.Top + 2 Xs(1).cZ = True Xs(2).cX = CurX + 1 Xs(2).cY = picPictureNow.Top + 2 Xs(2).cZ = True Xs(3).cX = CurX + 2 Xs(3).cY = picPictureNow.Top + 2 Xs(3).cZ = True Xs(4).cX = CurX + 2 Xs(4).cY = picPictureNow.Top + 1 Xs(4).cZ = False Case 2 Xs(1).cX = CurX Xs(1).cY = picPictureNow.Top + 3 Xs(1).cZ = True Xs(2).cX = CurX + 1 Xs(2).cY = picPictureNow.Top + 3 Xs(2).cZ = True For i = 3 To 4 Xs(i).cX = CurX Xs(i).cY = picPictureNow.Top + i - 2 Xs(i).cZ = False Next Case 3 Xs(1).cX = CurX Xs(1).cY = picPictureNow.Top + 2 Xs(1).cZ = True Xs(2).cX = CurX + 1 Xs(2).cY = picPictureNow.Top + 1 Xs(2).cZ = True Xs(3).cX = CurX + 2 Xs(3).cY = picPictureNow.Top + 1 Xs(3).cZ = True Xs(4).cX = CurX Xs(4).cY = picPictureNow.Top + 1 Xs(4).cZ = False End Select Case 4 T字 Select Case intRotate Mod 4 Case 0 Xs(1).cX = CurX Xs(1).cY = picPictureNow.Top + 2 Xs(1).cZ = True Xs(2).cX = CurX + 1 Xs(2).cY = picPictureNow.Top + 2 Xs(2).cZ = True Xs(3).cX = CurX + 2 Xs(3).cY = picPictureNow.Top + 2 Xs(3).cZ = True Xs(4).cX = CurX + 1 Xs(4).cY = picPictureNow.Top + 1 Xs(4).cZ = False Case 1 Xs(1).cX = CurX Xs(1).cY = picPictureNow.Top + 3 Xs(1).cZ = True Xs(2).cX = CurX + 1 Xs(2).cY = picPictureNow.Top + 2 Xs(2).cZ = True For i = 3 To 4 Xs(i).cX = CurX Xs(i).cY = picPictureNow.Top + i - 2 Xs(i).cZ = False Next Case 2 Xs(1).cX = CurX Xs(1).cY = picPictureNow.Top + 1 Xs(1).cZ = True Xs(2).cX = CurX + 1 Xs(2).cY = picPictureNow.Top + 2 Xs(2).cZ = True Xs(3).cX = CurX + 2 Xs(3).cY = picPictureNow.Top + 1 Xs(3).cZ = True Xs(4).cX = CurX + 1 Xs(4).cY = picPictureNow.Top + 1 Xs(4).cZ = False Case 3 Xs(1).cX = CurX Xs(1).cY = picPictureNow.Top + 2 Xs(1).cZ = True Xs(2).cX = CurX + 1 Xs(2).cY = picPictureNow.Top + 3 Xs(2).cZ = True For i = 3 To 4 Xs(i).cX = CurX + 1 Xs(i).cY = picPictureNow.Top + i - 2 Xs(i).cZ = False Next End Select Case 5 反7字 Select Case intRotate Mod 4 Case 0 Xs(1).cX = CurX Xs(1).cY = picPictureNow.Top + 3 Xs(1).cZ = True Xs(2).cX = CurX + 1 Xs(2).cY = picPictureNow.Top + 1 Xs(2).cZ = True For i = 3 To 4 Xs(i).cX = CurX Xs(i).cY = picPictureNow.Top + i - 2 Xs(i).cZ = False Next Case 1 Xs(1).cX = CurX Xs(1).cY = picP

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论