快速配对游戏 课程设计报告.doc_第1页
快速配对游戏 课程设计报告.doc_第2页
快速配对游戏 课程设计报告.doc_第3页
快速配对游戏 课程设计报告.doc_第4页
快速配对游戏 课程设计报告.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

Visual Basic课 程 设 计 报 告所属课程名称:Visual Basic程序设计课程设计题目: 快速配对游戏课程设计难度:两星课程设计时间:2012.2.27 4.18学 号:姓 名: 0 南京理工大学机械工程学院二一二年三月一、 程序功能(1) 运行程序,显示如图1的开始界面,图片均为“背对”用户。单击“开始”按钮,图片显示1.5秒(如图2,图片均随机安排),然后翻过去。用户使用鼠标将图片翻起,如果连续单击的两个图片内容相同则会保持显示状态;如果两图片不同,两张图片0.5秒后自动翻过去。用户凭记忆在尽量短的时间内将8对图片全部“翻起”,游戏完成。 图1 图2(2) 从用户第一次单击图片是,程序开始计时(以秒为单位),并在窗口的右上角显示已用时间。没击中一对图片,窗口中显示一个“笑脸”图标,否则显示一个“严肃的脸”图标(见图3)。 图3(3) 程序自动记录前三个最短完成时间,在游戏结束时一图4所示的消息框显示所用的时间,并请玩家输入名字。单击“排行榜”按钮时可以弹出“排行榜”窗体,如图5所示,显示前三名所用的时间。 图4 图5(4) 在游戏中,窗口的“开始”和“排行榜”按钮成无效态,游戏完成后,“开始”按钮变为“重来”,单击该按钮可以从头再来一局。二、 课程设计的详细设计游戏主界面:(1)窗体的顶部要放置“开始”、“排行榜”和“退出”按钮。在放置一个两个重合的图像控件用来显示游戏中的“笑脸”和“严肃的脸”。再放置一个标签控件来显示用户所用的时间。加入三个定时器控件“Timershow”、“Timercompare”和“Timercounter”分别来控制展示图片的时间、点击不同图片后图片的展示时间和记录玩家的所用时间。 (2)窗体的中部放置16个图像框控件数组“”来放置游戏中的图片。和一个放置“背面”图片的图像框控件“Imageback”在案安排游戏使用图片时使用的是随机函数Rnd随机的将“Imagepicture()”的Index值赋给数组,然后将这些选中的图片的“Picture”属性赋给“Imageshow()”图像框达到随机安排图片的目的。(3)窗体的下部放置31个图像框控件“Imagepicture()”来放置31种不同的候选图片。排行榜窗体:(1)加入12个标签控件用来显示“排行榜”。“LabelWanjia()”控件组显示玩家姓名,“LabelChengji()”控件组显示玩家成绩。 (2) 添加“返回”按钮,单击按钮时返回游戏主界面。游戏加载时将“chengji”文件中的已存入的成绩和玩家姓名加载到“排行榜”窗体的相应位置上。在游戏完成时用消息框提示你的成绩,如果你的成绩进入前三名则可以再“Inputbox”里面输入自己的姓名。在游戏程序结束时将“排行榜”窗体上的内容存入成绩文件中。全程序中使用控件数组和数组使程序的编写简单、明了。三、 程序调试过程【问题1】:在程序加载时要将31张图片中的8张随机的成对安排到游戏使用的图片中,但在加载时会出现4张相同的图片。【解决办法】:在选出8张图片后判断是否有相同的图片,如果有则重新跳到“Rnd”函数重新选出8张不同的图片。【问题2】:在游戏运行时会出现:如果点击一张已经翻开的图片和一张没翻开的图片时也会出现两张图片翻回显示背面的情况。【解决办法】:在程序设计时用逻辑数组“Finishi()”判断图片是否翻开,如果是已经翻开则不记录点击的图片数。【问题3】:当游戏再来一次时,可以连续点击两张以上的不同图片翻开对比。【解决办法】:在游戏重新开始时将所有的“Imageshow()”图像框控件的“是否翻开”值“Finishi()”全部设置为“False”。四、 更上一层楼(1) 在游戏过程中使用的8对图片不是一直不变的,而是从候选的31张图片中随机选出8 张图片。(2) 在玩家进入前三名时不仅可以记录玩家的成绩,而且还可以记录玩家的名字。五、 课程设计总结体会:自己动手设计程序可以提高我们的计算机技术,当自己设计的程序可以运行时有成就感,增加对编程的兴趣。同时在编程的过程中可以提高我们发现问题和解决问题的能力,能培养自己的创新能力。不足:在点击“开始”按钮后到显示图片的时间间隔有点长。六、 源程序代码Option ExplicitDim a(0 To 15) As Integer, b(1 To 2) As Integer, str(1 To 3) As StringDim Finish(0 To 15) As Boolean, Order(1 To 3) As String, Q(1 To 3) As IntegerDim y As Integer, Time1 As IntegerPrivate Sub CmdExit_Click() 退出 Dim i As Integer, k As Integer Open App.Path & Chengji.txt For Output As #2 For i = 1 To 3 保存姓名和成绩 k = 15 - Len(str(i) Print #2, str(i) & Space(k) & Q(i) & Space(5) Next Close EndEnd SubPrivate Sub cmdPaihangbang_Click()Dim i As Integer FormZhujiemian.Hide FormPaihangbang.Show For i = 1 To 3 FormPaihangbang.LabelChengji(i).Caption = Q(i) 将已存的成绩和名字加载到排行榜页面 FormPaihangbang.LabelWanjia(i).Caption = str(i) NextEnd SubPrivate Sub cmdstart_Click()Dim i As Integer cmdstart.Enabled = False 游戏开始后只有退出按钮可用 cmdPaihangbang.Enabled = False Timershow.Enabled = True 计时开始 For i = 0 To 15 Imageshow(i).Picture = Imageback.Picture 再次开始时图片先全部显示背面 Imageshow(i).Enabled = False Finish(i) = False 游戏在开始时图片的属性为全部没翻开 Next End SubPrivate Sub Form_Load() Dim Index As Integer, u As Integer FormZhujiemian.Width = 5655: FormZhujiemian.Height = 6660 For u = 0 To 15 Imageshow(u).Picture = Imageback.Picture 初始时全部显示背面且图片不可点击 Imageshow(u).Enabled = False Next Timershow.Enabled = False 计时器关闭状态 Timercompare.Enabled = False Timercounter.Enabled = False Dim w As Integer, j As Integer, p As Integer, i As Integer Open App.Path & Chengji.txt For Input As #1 w = 1 Do While Not EOF(1) Input #1, Order(w) 打开文件 w = w + 1 Loop For i = 1 To 3 Q(i) = Val(Trim(Mid(Order(i), 6, 18) 取出成绩 str(i) = Trim(Mid(Order(i), 1, 6) 取出名字 Next Close Dim m As Integer, c(0 To 7) As Integer, n As Integer, r As Integer, d(0 To 7) As Integer For i = 0 To 7 c(i) = -1 Next L1: Randomize For i = 0 To 7 n = Int(Rnd * 31) 从候选图片中随机选出8张图片 c(i) = n Next For i = 0 To 7 For r = i + 1 To 7 If c(i) = c(r) Then GoTo L1 如果有选出相同的图片择重新选择 Next Next For i = 0 To 15 a(i) = -1 Next Randomize For i = 0 To 7 代表Imagepicture的Index属性 For j = 0 To 1 2张相同图片 Do m = Int(Rnd * 16) 代表Imageshow的Index属性 If a(m) = -1 Then a(m) = c(i) 说明还没有赋予图片,就给其安排图片 Exit Do End If Loop Next Next FormZhujiemian.Left = (Screen.Width - FormZhujiemian.Width) / 2 打开窗体时窗体显示在屏幕的正中间 FormZhujiemian.Top = (Screen.Height - FormZhujiemian.Height) / 2End SubPrivate Sub Imageshow_Click(Index As Integer) 图片的单击时间 Dim i As Integer Imageshow(Index).Picture = Imagepicture(a(Index).Picture If Finish(Index) = True Then Imageshow(Index).Enabled = False If Finish(Index) = False Then y = y + 1 y=2 表示已经翻开两张图片 b(y) = Index Finish(Index) = True True代表图片已点击过了 If y = 2 Then For i = 0 To 15 Imageshow(i).Enabled = False 如果已经点击了两张图片择不能再点击其他图片 Next Timercompare.Enabled = True Exit Sub End If End If End SubPrivate Sub Timercompare_Timer() 对比图片 Static x As Integer, p As Integer: Dim i As Integer, s As String If Timercompare.Enabled = True Then 调用期间图片不能点击 For i = 0 To 15 Imageshow(i).Enabled = False Next End If If a(b(1) a(b(2) Then Imageshow(b(1).Picture = Imageback.Picture Imageshow(b(2).Picture = Imageback.Picture 图片不同择翻过去显示哭脸 Imagenosmile.Visible = True Imagesmile.Visible = False Finish(b(1) = False: Finish(b(2) = False b(1) = -1: b(2) = -1 y = 0 两图片翻过去之后其他图片可点击 Else p = p + 1 记录翻开的相同图片的对数 y = 0 Imagesmile.Visible = True 显示笑脸 Imagenosmile.Visible = False If p = 8 Then cmdPaihangbang.Enabled = True CmdExit.Enabled = True cmdstart.Enabled = True cmdstart.Caption = 再来 Time1 = lbtime.Caption lbtime.Caption = Timercounter.Enabled = False Select Case Time1 将玩家的成绩与已存入的成绩比较并存如相应的成绩和姓名 Case Is Q(3) MsgBox 抱歉,你的成绩是 & Time1 & 秒,你没有进入前三名, 64, 快速配对游戏 Case Is Q(1) s = InputBox(恭喜你成为第一名 ,你的成绩是 & Time1 & 秒,请输入你的姓名: , 快速配对游戏, 玩家1) If s Then Q(1) = Time1 str(1) = s End If Case Is Q(2) s = InputBox(恭喜你成为第二名, 你的成绩是 & Time1 & 秒,请输入你的姓名: , 快速配对游戏, 玩家2) If s Then Q(2) = Time1 str(2) = s End If Case Is Q(3) s = InputBox(恭喜你成为第三名,你的成绩是 & Time1 & 秒,请输入你的姓名: , 快速配对游戏, 玩家3) If s Then Q(3) = Time1 str(3) = s End If End Select Call Bianhuan b(1) = -1: b(2) = -1 y = 0 其他图片可点击 p = 0 End If End If x = 0 For i = 0 To 15 Imageshow(i).Enabled = True 全部翻开后所有图片不可点击 Next Timercompare.Enabled = FalseEnd SubPrivate Sub Timercounter_Timer() 记录时间(秒) lbtime.Caption = Val(lbtime.Caption) + Timercounter.Interval / 1000End SubPrivate Sub Timershow_Timer() 展示全部图片 Dim i As Integer, j As Integer, m As Integer, Index As Integer Static x As Integer x = x + 1 If x = 2 Then 1.5秒后把图片翻过来 Timershow.Enabled = False For Index = 0 To 15 Imageshow(Index).Pic

温馨提示

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

评论

0/150

提交评论