俄罗斯方块vb报告.doc_第1页
俄罗斯方块vb报告.doc_第2页
俄罗斯方块vb报告.doc_第3页
俄罗斯方块vb报告.doc_第4页
俄罗斯方块vb报告.doc_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

沈阳工程学院课程设计说明书摘 要visual basic继承了basic语言易学易用的特点,特别适合于初学者学习windows系统编程。随着21世纪信息社会的到来,计算机在人们的工作和生活中的深入,要求我们越来越多地与计算机打交道,为了使用户在繁忙的日程工作中得到放松,于是出现了各种各样的休闲软件,如聊天工具,游戏等等。于是我们小组着手设计开始一个这样的游戏软件。通过这学期来Visual Basic的学习,我初步掌握了Visual Basic语言的最基本的知识,于是在王洪江,任娜等老师的指导下动手用Visual Basic编写俄罗斯方块游戏。无可争议,俄罗斯方块是有史以来最伟大的游戏之一。它是永恒的娱乐经典,但它实际上又和那些传统的经典娱乐方式不同,因为它的本质是电子化的,所以它的确属于现代产物。俄罗斯方块举世闻名的游戏性,在该游戏新鲜出炉时就显得非常直观。某些与坠落的玩具碎片和它们的形状有关的东西,使得哪怕新手也会很自然地企图把它们排列起来,并加以适当组合,就好似俄罗斯方块触动了我们某些内在的感官,使得哪怕是我们当中最杂乱无章的人也要把事情整理妥当。 在曾经发布过的所有游戏中,俄罗斯方块还被认为是仅有的一个能够真正吸引广泛人群的作品。某些批评家也许会声称,俄罗斯方块要比过去二十年间出现的任何东西都要浪费人们的时间。至于我们,则要欣然提名它为GameSpot评选出的历史上最伟大游戏之一。为了怀念经典,也为了能够给大多的计算机用户在工作之余找到一个休闲、娱乐的一个方式,我们小组开始着手用VB语言开发一个经典的俄罗斯方块游戏。关键字:游戏,模块,多媒体。目 录摘 要I目 录II第一章游戏概述11.1游戏的功能与应用背景11.1.1 游戏功能11.1.2 游戏应用背景11.1.3 游戏特点1第二章游戏设计22.1.游戏设计思想22.2 游戏功能模块划分22.2.1 游戏功能模块划分22.2.2 Bitblt函数参数的意义与用法22.1.3 俄罗斯方块的旋转32.1.4 如何实现方自动消除满行的方块32.2.5 随机从 7 个方块中选择一个42.2.6 设置每个模块的测试计42.3 整体游戏程序的结构设计5第三章 游戏实现63.1界面设计63.1.1艺术策划63.1.2页面整体规划63.2代码编写63.2.1游戏界面63.1.2详细代码73.3系统测试133.3.1测试的必要性133.3.2测试的过程133.4相关软件说明133.4.1 Adobe Photoshop133.4.2 VB 6.013第四章 课程设计总结154.1课程设计认识154.2作品的不足之处154.3作品的改进之处16结 论17致 谢19参考文献2019第一章游戏概述1.1游戏的功能与应用背景1.1.1 游戏功能游戏是用来给大家娱乐的,所以要能在使用的过程中给大家带来快乐,消除大家的疲劳,所以我们在游戏中添加了漂亮的场景和动听的音乐,激发大家的娱乐激情。我们开发的俄罗斯方块游戏,主要实现了以下几种功能:可以灵活控制方块在图形框中运动;游戏过程中方块可以自由旋转;当某一行的方块排列满时,将自动将这一行方块消除,然后将上面所有方块向下移动,可以支持连续消行。1.1.2 游戏应用背景该游戏背景一非主流为主并且加入了作者图片,伴随着音乐进入游戏。带着新鲜,带着有趣激发大家的激情,找到快感。1.1.3 游戏特点这个游戏给用户提供了一种方便、快捷娱乐项目。使用此游戏可以让人们达到休闲娱乐的目的。人们只需要一只手,按住上下左右键就可完成此游戏。没有什么复杂的关数,没有分数的限制。加入了可爱的背景图片和音乐,就是吸引用户来使用,但不至于沉迷。这就是我们设计即娱乐大众有可以防沉迷的游戏。第二章游戏设计2.1.游戏设计思想游戏功能的设计思路用框架图来表示,如图2.1用户查询框架图所示:俄罗斯首页游戏帮助退出键盘关于旋转移动下落返回首页图2.1用户查询框架图2.2 游戏功能模块划分2.2.1 游戏功能模块划分该模块总体上划分为三个模块,分别为游戏开始模块、游戏退出模块、帮助模块。一个游戏必须是要有游戏规则的。其中的帮助就是教会我的玩法,以及其中的规则。2.2.2 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:指定光栅操作代码。这些代码将定义源矩形区域的颜色数据,如何与目标矩形区域的颜色数据组合以完成最后的颜色。2.1.3 俄罗斯方块的旋转俄罗斯方块的旋转主要将方块的位置加以变换得到的,例如上述范例,长条型有两中样式,根据小方块的编号变动来实现整个造型的旋转,比如: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 If2.1.4 如何实现方自动消除满行的方块我们的这个俄罗斯方块游戏主要是利用command控件的visible属性完成效果的,其实在游戏区图形框可以看成是由许多的command小方块组成,方块运动的过程就是造型里方块显示或者隐藏,就像现在的霓虹灯效果一样,由时钟控件控制visible属性改变的速度,上一层的消失,下一层的显示,这样,从视觉效果可以看到方块的下落运动效果。方块在下落的过程中会自动判断每一行方块的visible属性,如果全部为true时,就会将这一行小方块的visible属性全部变成false,在将上面的小方块向下移动,利用for语句进行循环判断,将所有这样情况的行改变小方块visible属性。当有多行同时出现这样情况时使用递归调用,实现连续消行。具体程序代码如下:R_Value = picPictureNow.Top + 1 MinYrx_value = picPictureNow.Top + picPictureNow.Height MaxYFor i = rx_value To R_Value Step -1 If Total(1, i) And Total(2, i) And Total(3, i) And Total(4, i) And Total(5, i) And _ Total(6, i) And Total(7, i) And Total(8, i) And Total(9, i) And Total(10, i) Then 如果一行已经堆满,则将此行上面的图象全部向下移动一点 k = BitBlt(picBackGround.hDC, 0, 20, 200, (i - 1) * 20, picBackGround.hDC, 0, 0, vbSrcCopy) For j = i To 1 Step -1 For k = 1 To 10 Total(k, j) = Total(k, j - 1) Next k Next j i = i + 1 End IfNext i2.2.5 随机从 7 个方块中选择一个 使用Randomize函数来进行选择。用number将Rnd函数的随机数生成器初始化,该随机数生成器给number一个新的种子值。例如: RandomizeType_Next = Int(7 * Rnd) + 1)Select Case Type_Next Case 1 imgPictureNext.Picture = LoadResPicture(11, 0) Case 2 imgPictureNext.Picture = LoadResPicture(13, 0) Case 3 imgPictureNext.Picture = LoadResPicture(15, 0) Case 4 imgPictureNext.Picture = LoadResPicture(19, 0) Case 5 imgPictureNext.Picture = LoadResPicture(23, 0) Case 6 imgPictureNext.Picture = LoadResPicture(27, 0) Case 7 imgPictureNext.Picture = LoadResPicture(29, 0)End Select2.2.6 设置每个模块的测试计在每个模块中的某个控件功能代码编写完成后,需要将他们分别测试,以便及时发现问题,并及时调整问题,在该模块中的所有控件的功能代码都完成之后,需要对它的总体功能进行测试。如果出现问题,可以在该功能所在的代码区中进行修改,多次测试,直到没有错误为止。2.3 整体游戏程序的结构设计1.进入游戏窗体一 进入此窗体中,在菜单中有“新游戏”“退出”“键盘”“关于”。开始游戏了之后用户可一按上下左右键来进行游戏。在帮助中有“键盘”和“关于” ,可以帮助人们了解此游戏的方法与规则。2模块主要对空件和要用到的函数进行了定义。如,BitBlt 函数。3.相关文件主要在外部把方块模型进行了绘制,在这里我们使用LoadResPicture( ) 来调用。第三章 游戏实现3.1界面设计3.1.1艺术策划 所有的编程工作都是很乏味的,但是要使这些变成变得富有人性化,使更多的人来接受它,那就一定要有艺术的气息,以黑色为主的漫天繁星代表着浪漫,又具有科技的色彩,这样就达到了一种把看似很一般的东西变的大方,自然,使它们更富有艺术效果.3.1.2页面整体规划在编程时,需要遵循界面设计的基本原则。(1)用户至上:编制出来的程序是要给用户使用的,因此在界面设计时一定要先考虑用户在使用时的方便原则;(2)界面元素的一致性:包括窗体图标的一致性,控件选择的一致性,色彩搭配的一致性,以及程序中不同窗口样式的一致性等;(3)简单性;(4)颜色和字体;(5)图片和图标在遵循这个原则的基础上,需要保证各个模块中的字体、颜色、大小、背景图象等的一致性,还要符合该查询系统的整体特点,使之做到各方面都兼顾的效果。3.2代码编写3.2.1游戏界面进入窗体,界面的作用是使用户进入“俄罗斯方块”,如图3.1 游戏首页进入界面:图3.1 游戏首页进入界面当开始游戏时,界面上的方块开始向下移动。如图3.2 游戏操作进入界面:如图3.2 游戏操作进入界面游戏规则介绍界面,如图3.3 游戏规则进入界面:如图3.3 游戏规则进入界面3.1.2详细代码窗体frmform的主要代码Dim Type_Now As Integer 目前方块的类型Dim Type_Next As Integer 下个方块的类型Dim intRotate As Integer 方块旋转的状态Sub 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 Judge_Full()判断是否堆满R_Value = picPictureNow.Top + 1 MinYrx_value = picPictureNow.Top + picPictureNow.Height MaxYFor i = rx_value To R_Value Step -1 If Total(1, i) And Total(2, i) And Total(3, i) And Total(4, i) And Total(5, i) And _ Total(6, i) And Total(7, i) And Total(8, i) And Total(9, i) And Total(10, i) Then 如果一行已经堆满,则将此行上面的图象全部向下移动一点 k = BitBlt(picBackGround.hDC, 0, 20, 200, (i - 1) * 20, picBackGround.hDC, 0, 0, vbSrcCopy) For j = i To 1 Step -1 For k = 1 To 10 Total(k, j) = Total(k, j - 1) Next k Next j i = i + 1 End IfNext i如果目前方块的顶点位置 =0 ,则表示全部堆满If picPictureNow.Top = 0 Then J_Value = JudgeX_Left If J_Value Then picPictureNow.Picture = imgPictureNowBackup.Picture r = BitBlt(picPictureTemp.hDC, 0, 0, picPictureNow.Width * 20, picPictureNow.Height * 20, picBackGround.hDC, (picPictureNow.Left - 1) * 20, picPictureNow.Top * 20, vbSrcCopy) picPictureNow.Left = picPictureNow.Left - 1 r = BitBlt(picPictureNow.hDC, 0, 0, picPictureNow.Width * 20, picPictureNow.Height * 20, picPictureTemp.hDC, 0, 0, vbSrcAnd) End If End If Case vbKeyRight If picPictureNow.Left + picPictureNow.Width picBackGround.ScaleHeight Then InitEnd Sub3.3系统测试3.3.1测试的必要性通过测试可以帮助我们更好的编程,及时发现其中的问题,及时进行修改,通过测试功能可以知道我们已经编完的部分的功能实现方面存在的问题及可实现性。通过测试我使我的程序更加完善,通过多次测试,可以更好的帮助我们了解我们的程序,因此测试步骤是我们在编程时必须的很重要的一步。每一个程序都是由多次测试后才能够正常运行的。在一个大的编程中,需要对每一个小的过程都认真编程次的调试,因为在一个程序中经常会因为一个小小的错误影响到整个程序的运行。下来进入修改,调试阶段,这个过程是看程序是否能正常运行的最重要的阶段,也许一个小的部分要经过好几十次甚至上百次的修改和调试,但在这时一定要有耐心,要不就会前功尽弃。3.3.2测试的过程一个大的程序是由很多小的模块组成的,在所有的模块功能代码编写完成之后,就可以进入测试过程了,因为一个大的程序是由许多小的模块组成的,所以要先对这些小的模块进行测试,以减化以后工作中遇到的问题。然后对整个程序进行测试,主要步骤就是让自己的程序运行,通过调试窗口,查找代码程序中是否存在错误,对总体的过程进行测试,测试它的代码不存在错误之后,还需要保证能够实现所需要的功能,通过他的功能,如果功能不好用,需要进行查找是否存在运行错误之类的错误,通过在测试过程中对其进行逐一修改,直到程序中不存在任何错误为止,测试过程结束。3.4相关软件说明3.4.1 Adobe PhotoshopAdobe Photoshop是在PC与MPC上运行的图像编辑应用程序,由Adobe公司1990年首次推出,1994年以后,随着Adobe公司的迅速发展,Photoshop软件的自身功能也随之不断更新完善,1996年,Adobe公司推出了Photoshop4.0版本,既而,最近推出了具有超前的图像编辑功能的Photoshop CS,其强大的新功能可以满足每一位用户的需要,使成为当今一流的图像处理与图像设计工具,同时也是标准图像编辑解决方案。Photoshop CS提供了色彩调整、图像修饰和各种滤镜效果等功能,用户可以将扫描进来的图片或者其他格式的图像处理为所需要的其他效果。3.4.2 VB 6.0VB 6.0 是Microsoft公司推出的Visual Studio.Net可视化应用程序开发工具组中的一 个重要成员。是基于.Net的可视化应用程序开发工具,其中包括VB.NET,VISUAL C+.NET,Visual C#.Net等开发工具。它VB.NET通过公共语言运行环境,将VISUAL C+.NET,Visual C#.Net等应用程序开发工具紧密地集成在一起,使它们共同使用同一个集成开发环境,并使用同一个基础类库,应用它更易于编写分布式应用程序,在其中还删除了某些传统的关键字,提高了类型安全性,并公开了高级人员需要的低级别构造。 第四章 课程设计总结4.1课程设计认识课程设计是VB学习中的一个十分重要的环节。通过课程设计,我能够得到系统的技能训练,从而更进一步地巩固和加强了以前在课堂上所学的专业理论知识,提高了我们综合运用VB.NET软件的运用能力,使我们具有扎实的理论基础知识和独立动手的能力。独立地以自己的想法作各具有特色的课程设计,知识的应运过程就是一个熟练的过程,在亲自实践后才能了解到其中的实际问题,从而在解决问题中掌握更多实用的知识,并巩固和加强所学的专业理论知识。这样才能在走入工作岗位后更好地将学到的知识应运到实际开发中去。课程设计是不同与我们的实训的,通过课程设计要求我们编出一个程序,并且它是与我们以后的毕业设计相对应的,通过两周的课程设计,我们每一个人,需要根据自己的能力和爱好,使用程序设计软件编制出一个可以成功运行的程序。相对来说,课程设计对于我们来说更加重要,通过课程设计能够反映出一个人的综合素质,和综合知识水平,它需要我们具有多方面的知识,并且要集中应用。例如这次课程设计,需要每一个人根据自己的选择,编一个程序。从界面的设计到程序代码的编辑,都需要我们自己来编写。程序的界面需要我们利用我们所学的关于色彩构成方面的知识,使界面看起来更加美观,大方,对于界面的设计我们还需要我们需要使用各种平面图像处理软件,对图形图像进行编辑。主要使用的软件包括Photoshop软件对图片进行修改和裁切,将裁切好的图片应用到程序模块的界面。课程设计要求我们做每一个过程都需要特别的认真,因为在编程过程中一个小小的错误经常能够导致,整个程序无法运行,并且我们需要经常调试,测试看它是否可以运行,如果有错误需要及时修改,在每次遇到错误是,要勇于面对不能逃避,你逃避一个小错误可能会导致,在最终效果时,很难找到错误,就不能很好的修改它们,为了给自己制造方便我们应该养成良好的编程习惯,既能节省时间又可以提高我们的工作效率。通过这两周的VB课程设计,我学到了许多在课堂上根本学不到的东西,而且利用VB的相关知识编出了自己所设计的内容。知识的应运过程就是一个熟练的过程,在亲自实践后才能了解到其中的实际问题,从而在解决问题中掌握更多实用的知识,并巩固和加强所学的专业理论知识。这样才能在走入工作岗位后更好地将学到的知识应运到实际开发中去。4.2作品的不足之处在这次VB课程设计开始之前,由于我把VB课程设计看的太简单,没有做好充分的准备工作,使我在课程设计中遇到了很多困难。在课程设计过程中,由于经验不足,我的程序最初出现了很多问题。首先,就是方块的模型就没有准备好。还好书中又我们需要的素材,这样就省去了我们的麻烦。之后我们就是编写程序了。在这里我们遇到了很多问题,好多都是我们还没又深入了解的内容。比如说:Bliblt函数,它是指定的源设备环境区域中的像素进行位块(bit_block)转换,以传送到目标设备环境。函数原型:BOOL BitBlt(HDC hdcDest,int nXDest,int nYDest,int nWidth,int nHeight,HDC hdcSrc,int nXSrc,int nYSrc,DWORD dwRop);其中的含义我们就摸不到头脑。在老师的帮助下才得以明白。在方块堆满消除,随机选择方块的时候都出现了问题。随机函数就是使用Randomize函数来进行选择。用number将Rnd函数的随机数生成器初始化,该随机数生成器给number一个新的种子值。虽然理论上得以明白,具体实现还是困难重重。虽然外观上很漂亮,美中不足的就是这个游戏本身就不是很完善,没有过关,得分记录的模块。 4.3作品的改进之处在这次VB课程设计中我做的是俄罗斯方块游戏,虽然存在着很多的问题,但是我还是由衷的感到欣慰,因为我自己第一次根据自己的想法编出了程序。但是我的这个游戏还有很多地方值得改进。俄罗斯方块游戏我认为还是很有趣的,但是我没有做好充分的需求分析和详细的模块设计,所以编程的各个控件之间显得很凌乱,使以后的测试修改工作做起来很不容易。对于界面方面的设计没有把握好,总认为只要程序编出来能运行就大功告成了,但忽略了最主要的一点,那就是我们编的程序是要用户能够理解,能够充分的使用,界面设计的要和这个游戏的主题和内容相对应,要不然会给用户带来错觉或其他不舒服的感觉。如果这样的话,再完美的编程也是一个失败的作品,对于一个游戏程序需要的不仅是技术方面的,更加需要你有一个可以吸引人的地方,对于目前上,很多的关于游戏方面的代码,可以说你到网上可以搜索到很多的,没有一个游戏是不好用的,如何能够在这其中立足,如何能够给别人一个好的印象非常重要,因此我想,我的作品更加需要改进的地方就是,使界面更加吸引人,让人在看着眼花缭乱之时,能够一下子就选择使用我的。因此我认为我的界面没有达到期望的目的。还有就是我技术方面的问题,不足的地方太多了,改进的地方就是越多。我的游戏里面方块不会增加速度下落,没有计算分数的功能,没有级数的约束。所以如果可以把这些都加上,结合在一起,一定是完美中的完美。每个控件之间的正确联系是很重要的,每按一次鼠标,键盘都可完美的执行自己的任务。这点我想我是达到了。虽然我的作品完成了,对自己有这样的一个成果感到还不错,但是从这次VB课程设计中,我得到的很多经验,我深感我的作品还需要在多方面进行改进,如果把这些不足的地方进行改进,我相信这个作品会更完美的。

温馨提示

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

评论

0/150

提交评论