vb版记忆游戏程序设计实验报告_第1页
vb版记忆游戏程序设计实验报告_第2页
vb版记忆游戏程序设计实验报告_第3页
vb版记忆游戏程序设计实验报告_第4页
vb版记忆游戏程序设计实验报告_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

(2010-2011学年第二学期)系(部)机械系专业班级机电专60904班学生姓名谌前学号/序200962143/5指导教师张国英完成时间第19周记忆游戏设计一、设计目标记忆游戏:两套一样的图片隐藏在一个方阵内,用鼠标去点击可看到所隐藏的图片,并将上一次所看到的图片重新隐藏起来,如果相邻两次所点击的图片是一样的,那么这两个图片所在的按钮会消失。游戏得分可以用总点击数或计时数来计算。程序设计界面如图1所示。图1:记忆游戏界面

二、概要设计1.功能模块(见图2)记忆游戏控制计时记忆游戏控制计时选项选项退出开始结束退出开始结束图2记忆游戏功能模2.界面设计 在窗口左边的工具箱中,单击一下框架控件,在窗体上绘出两个大小合适的框架,将其中大的框架名称改为gamearea,并将caption属性分别改为空格、难度。用同样的方法在框架中添加一个命令按钮,并将其名称改为command,visible属性改为false,在小的框架里面添加三个optionbutton,将其名称都改为option1,option属性分别改为初级、中级、高级。然后用同样的方法在框架的右边添加三个命令按钮,将其名称分别改为start,endthis,close,并将caption属性分别改为开始、结束、退出。用同样的方法添加两个label控件,同时在两个label控件的下面分别添加一个文本框,将其名称分别改为consumed、totalclick三、详细设计加载窗体时利用随机函数初始化使每次运行均不一样PrivateSubForm_Load()RandomizetheWidth=Command(0).WidththeHeight=Command(0).Heightcur_radix=elementaryEndSub利用一个框架一个单选按钮组和SelectCase语句来实现难度级别的不同PrivateSubOption1_Click(IndexAsInteger)SelectCaseIndexCase0cur_radix=elementaryCase1cur_radix=intermediateCase2cur_radix=seniorEndSelectEndSub利用时钟控件Timer和text控件来实现计时功能PrivateSubTimer1_Timer()timeconsumed.Text=timeconsumed.Text+1EndSub注意:时钟控件的interval值应设置为1000,即为每秒钟计一次时当Enable=true时时钟控件才能使用利用text控件和If语句来实现点击次数的计算,并将该按钮的tag属性中的字符取出作为图片名进行加载PrivateSubcommand_click(IndexAsInteger)IfIndex=lastindexThenExitSubtotalclick.Text=totalclick.Text+1Command(Index).Picture=LoadPicture(App.Path+"\tupian\"&Command(Index).Tag&".gif")'加载图片IfCommand(lastindex).Tag=Command(Index).TagThenCommand(lastindex).Tag=""Command(Index).Tag=""CallsndPlaySound("goal",1)Command(lastindex).Visible=FalseCommand(Index).Visible=Falselastindex=0totalcmdbtn=totalcmdbtn-2ElseCommand(lastIndex).Picture=LoadPicture("")'隐藏图片lastindex=IndexEndIfIftotalcmdbtn=0Thenendthis_ClickEndSub如果两个连续单击的按钮tag属性中的字符相同,则两个按钮同时消失,如果按钮全部消失,则这个级别的游戏结束,结束后可以重新选择级别利用Int函数和For···Next语句实现按钮的动态加载CurTop=Int((gamearea.Height-theHeight*cur_radix)/2)Fori=1Tocur_radixcurLeft=Int((gamearea.Width-theWidth*cur_radix)/2)-theWidthForj=1Tocur_radixcount=count+1LoadCommand(count)SetCommand(count).Container=gameareacurLeft=curLeft+theWidthCommand(count).Left=curLeftCommand(count).Top=CurTopCommand(count).Visible=TrueNextjCurTop=CurTop+theHeightNexti6.利用For循环语句、Do···While语句、If语句和For···Next语句来实现对按钮的属性tag的赋值totalCmdBtn=Cur_Radix^2Forcount=1TototalcmdbtnIfCommand(count).Tag=""ThenDimCharacter,theReserveAsIntegerDoCharacter=97+Int(18*Rnd)FortheReserve=1Tocount-1IfCommand(theReserve).Tag=CharacterThenExitForNextLoopWhiletheReserve<countCommand(count).Tag=Chr(Character)DimcorrespondposAsIntegerDocorrespondpos=count+1+Int((totalcmdbtn-count)*Rnd)LoopWhileCommand(correspondpos).Tag<>""Command(correspondpos).Tag=Command(count).TagEndIfNext7.利用For循环语句和Unload来实现按钮的卸载PrivateSubendthis_Click()DimcountAsIntegerForcount=Command.count-1To1Step-1UnloadCommand(count)NextOption1(1).Enabled=TrueOption1(2).Enabled=TrueOption1(0).Enabled=Trueendthis.Enabled=Falsestart.Enabled=TrueTimer1.Enabled=False8.利用Unload实现程序的卸载PrivateSubclose_Click()UnloadMeEndSub四.效果分析以及设计方案的完善游戏开始界面图2开始界面游戏初级界面图3初级界面游戏中级界面图4中级界面游戏高级界面图5高级界面心得体会通过这次的课程设计,我收获颇大。在程序设计过程中,我们需要注意程序的每一条语句是否正确,变量是否定义以及定义类型是否匹配,这是写程时常见的错误,所以我们在写程序时应该认真,细心,不能马虎。遇到程序不能运行时,我们应该有耐心的进行调试,分析其不能运行的原因,解决问题。在程序设计时,我们更应该不断的提出新的设想,大胆的创新,用新的算法实现某一功能,不能局限于别人的思想。参考文献邵洁主编的visualbasic实验与测试(第四版)东南出版社,2008年甘雷,(中文Access2002标准教程),北京希望电子出版社何旭洪,VisualBasic程序库开发实例导航10-174页,北京人民邮件出版社甘刃初,(信息系统开发),北京经济科学出版社附录程序源代码OptionExplicitPrivateDeclareFunctionsndPlaySoundLib"winmm.dll"Alias"sndPlaySoundA"(ByVallpszSoundNameAsString,ByValuFlagsAsLong)AsLongDimlastIndexAsByte,totalCmdBtnAsIntegerDimtheWidth,theHeight,Cur_RadixAsIntegerConstelementaryAsByte=2,intermediateAsByte=4,seniorAsByte=6PrivateSubCommand_Click(IndexAsInteger)IfIndex=lastIndexThenExitSub'计数点击数totalclick.Text=totalclick.Text+1Command(Index).Picture=LoadPicture(App.Path+"\tupian\"&Command(Index).Tag&".gif")'加载图片IfCommand(lastIndex).Tag=Command(Index).TagThenCommand(lastIndex).Tag=""Command(Index).Tag=""'播放声音CallsndPlaySound("goal",1)Command(lastIndex).Visible=FalseCommand(Index).Visible=FalselastIndex=0totalCmdBtn=totalCmdBtn-2ElseCommand(lastIndex).Picture=LoadPicture("")'隐藏图片lastIndex=IndexEndIfIftotalCmdBtn=0Thenendthis_ClickEndSubPrivateSubForm_Load()'随机函数初始化以使每次运行均不一样RandomizetheWidth=Command(0).WidththeHeight=Command(0).HeightCur_Radix=4EndSubPrivateSubOption1_Click(IndexAsInteger)SelectCaseIndexCase0Cur_Radix=elementaryCase1Cur_Radix=intermediateCase2Cur_Radix=seniorEndSelectEndSubPrivateSubstart_Click()Dimcount,i,j,curLeft,CurTopAsIntegerOption1(1).Enabled=FalseOption1(2).Enabled=FalseOption1(0).Enabled=Falsestart.Enabled=Falseendthis.Enabled=True'动态加载Cur_Radix*Cur_radix个命令按钮,并设置位置和容器,然后使其可见CurTop=Int((gamearea.Height-theHeight*Cur_Radix)/2)Fori=1ToCur_RadixcurLeft=Int((gamearea.Width-theWidth*Cur_Radix)/2)-theWidthForj=1ToCur_Radixcount=count+1LoadCommand(count)SetCommand(count).Container=gamearea'计算当前加载命令按钮的Left属性值curLeft=curLeft+theWidthCommand(count).Left=curLeftCommand(count).Top=CurTopCommand(count).Visible=TrueNextj'计算下一行加载命令按钮的Top属性值CurTop=CurTop+theHeightNexti'为每个按钮分配字符totalCmdBtn=Cur_Radix^2Forcount=1TototalCmdBtnIfCommand(count).Tag=""Then'变量theReserve和Correspondpos可以合二为一DimCharacter,theReserveAsInteger'随机产生一个未被分配的字母Do'随机字符ASCII码在33到126之间RandomizeCharacter=97+Int(21*Rnd)'判断是否随机字符是否已被分配FortheReserve=1Tocount-1IfCommand(theReserve).Tag=Chr(Character)ThenExitForNextLoopWhiletheReserve<count'将随

温馨提示

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

评论

0/150

提交评论