首页 VB课程设计:拼图游戏

VB课程设计:拼图游戏

举报
开通vip

VB课程设计:拼图游戏Visual Basic课程设计报告 题目1:    拼图游戏      难度:  *** 指导教师:  姓 名:   学 号:   专 业:   班 级:   学 院:   日 期:       1. 题目简介 (1)本题目要求设计一个拼图游戏程序,要求如下: 指定一幅完整的图片,将其分割成m*n个小图块,打乱后重新排列,其中有一个没有图片的“空当” 如图———— (2)使用鼠标单击与空当相邻的图块可以与其互换位置。 (3)利用空当位置使原图恢复原来的顺序,并记...

VB课程设计:拼图游戏
Visual Basic课程设计报告 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 目1:    拼图游戏      难度:  *** 指导教师:  姓 名:   学 号:   专 业:   班 级:   学 院:   日 期:       1. 题目简介 (1)本题目要求设计一个拼图游戏程序,要求如下: 指定一幅完整的图片,将其分割成m*n个小图块,打乱后重新排列,其中有一个没有图片的“空当” 如图———— (2)使用鼠标单击与空当相邻的图块可以与其互换位置。 (3)利用空当位置使原图恢复原来的顺序,并记下玩家的移动步数,游戏过程中可以查看参考图以方便顺利通过游戏。 2、设计思路与总体 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 本程序包含五个窗体模块,其中以窗体frmMain的作用最为主要,该模块负责加载选定的图片并按所选的行列数分割,进行随机排列并加载空当,实现鼠标点击时其中的图块时与相邻的空当进行替换,实现拼图完成这个结束动作。 该模块中主要的变量有Rows , Cols ,Arrange() ,space,started,steps showref  Function isOK()  其中,Rows , Cols ,showref这三个为全局变量,分别 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 示行数 ,列数,以及是否显示参考图(因此showref为逻辑型变量)其余变量为模块级变量,started也为逻辑变量,负责显示游戏是否已开始,Arrange()数组表示联系图像控件与数组的关系,space显示空当的位置,steps来 记录 混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载 玩家所走的步数,Function isOK()用来检验拼图是否已经完成的 关于工期滞后的函关于工程严重滞后的函关于工程进度滞后的回复函关于征求同志党风廉政意见的函关于征求廉洁自律情况的复函 数,为逻辑性变量。除外,过程变量tt(0 to2), b(0 to 2),s , r , c用来写入或读取排行榜中的记录。 其中,还设有菜单栏,通过CommonDialog控件负责实现“打开图片”与“配置颜色”对话框,并同时还拥有打开frmRecod(排行榜窗体模块)的工能。 主要代码(游戏初始时加载图片):    Dim i As Integer Dim n As Integer CD.Filter = "图片文件(*.jpg,*.BMP)|*.jpg;*.bmp" CD.DialogTitle = "打开图片" CD.InitDir = App.Path & "\pics" CD.ShowOpen                              (显示指定图片对话框) If CD.FileName = "" Then Exit Sub If started Then For i = 1 To Rows * Cols - 1                  '(清除已有的控件数组元素) Unload imgPT(i) Next imgPT(0).Picture = LoadPicture() If showref Then frmRef.Image1.Picture = LoadPicture() Else Me.Picture = LoadPicture() End If frmDivide.Show 1, Me                '      (显示指定行列对话框) PC.Picture = LoadPicture(CD.FileName) PC.Rows = Rows PC.Cols = Cols n = Rows * Cols imgPT(0).Width = 320 / Cols                  ('窗体以像素为单位) imgPT(0).Height = 240 / Rows 窗体frmDivide载入图片后弹出此窗口,负责提示玩家进行图片行列数的选择,用以调节游戏等级,可分为3*3,3*4, 4*3 ,4*4 这四种模式。玩家通过两个VScroll控件调节TextBox中的行列数,通过 Text1.Text = VScroll1.Value Text2.Text = VScroll2.Value frmMain.Rows = Text1.Text,          frmMain.Cols = Text2.Text 赋值语句来与frmMain模块进行数值传递。 窗体frmRef通过窗体frmMain中的“显示参考图”按钮来显示玩家游戏时的所需的参考图,frmMain通过    showref = Not showref If showref Then Load frmRef frmRef.Image1.Picture = PC.Picture frmRef.Top = Me.Top frmRef.Left = Me.Left + Me.Width frmRef.Show cmdShowRef.Caption = "关闭参考图"  Else Unload frmRef cmdShowRef.Caption = "显示参考图" 来打开这个模块以显示参考图,通过对逻辑变量showref的非运算加载该模块,设置高度与宽度。 窗体 frmRecord 用来显示玩家通过游戏后所处的名次,姓名,移动步数,难度(行数X列数),并且只有名次在大于系统默认前三名的状况下才能被录入排行榜,否则会弹出“完成,你未进入前三名!”的提醒框。              代码如下: Open App.Path & "\Record.txt" For Input As #1  For l = 0 To 2 Input #1, tt(l), b(l), r(l), c(l)    (依次读入步数,姓名,行数,列数) Next Close #1 If s < tt(2) Then    (只有你的成绩大于系统内第三名时IF语句才会启动,进行信息录入)        Kill App.Path & "\Record.txt" If s >= tt(1) Then tt(2) = s: b(2) = InputBox("请输入姓名:", "输入框", "无名侠"): r(2) = Rows: c(2) = Cols: MsgBox "完成,恭喜" & b(2) & "你成为第三名!", vbInformation If s < tt(1) And s >= tt(0) Then tt(2) = tt(1): tt(1) = s: b(2) = b(1): b(1) = InputBox("请输入姓名:", "输入框", "无名侠"): r(2) = r(1): r(1) = Rows: c(2) = c(1): c(1) = Cols: MsgBox "完成,恭喜" & b(1) & "你成为第二名!", vbInformation If s < tt(0) Then tt(2) = tt(1): tt(1) = tt(0): tt(0) = s: b(2) = b(1): b(1) = b(0): b(0) = InputBox("请输入姓名:", "输入框", "无名侠"): r(2) = r(1): r(1) = r(0): r(0) = Rows: c(2) = c(1):c(1)=c(0):c(0)=Cols: MsgBox "完成,恭喜" & b(0) & "你成为第一名!", vbInformation (通过以上的IF语句先比较出步数在系统默认下的的名次,再通过赋值语句进行排名,同时将姓名,行数,列数也进行赋值处理同步于步数的名次变化,优点是不需建立多维数组进行储存) Open App.Path & "\Record.txt" For Output As #1 For l = 0 To 2 Write #1, tt(l), b(l), r(l), c(l) Next Close #1 Else MsgBox "完成,你未进入前三名!", vbInformation End If 窗体 frmHelp 用以显示对本游戏的提示,用以解释游戏无法顺利进行的原因,详情请见(4、设计中尚存的不足分析)。 主要代码: Image2(0).Picture = LoadPicture(App.Path & "\Resource\ab.jpg") (加载图片) 3、对重点(难点)问题的解决 窗体模块frmMain为主要载体,也是该程序的难点所在,其中的PictureClip控件在我看来是最主要的,他负责管理打开的图片并将其分割为指定行列的小图块。 CommonDialog控件负责实现“打开图片”与“配置颜色”对话框。 Image控件数组用于显示图片,其中他的Stretch属性设计为True,可以使图片自动放大或缩小,方便玩家自由选择图片进行游戏。 主窗体重点(难点1)——————————随机排列图片 解决方案:利用j = Int(Rnd * n)产生的随机数(0~n-1)同时通过Arrange赋值给PC.GraphicCell,来传递给imgPT()进行图片的随机分布。 例如:Arrange(3)=9 imgPT(i).Picture = PC.GraphicCell(Arrange(3)) 因此,该随机排列图片过程的代码如下: Private Sub Rnd_Arrange()          ' Dim i As Integer, j As Integer Dim n As Integer n = Rows * Cols ReDim Arrange(0 To n - 1) For i = 0 To n - 1 Arrange(i) = -1 (  用-1标记未赋值的元素) Next i = 0 Do j = Int(Rnd * n)  (产生0~n-1的随机数,并用Arrange赋值) If Arrange(j) = -1 Then Arrange(j) = i i = i + 1 If i = n Then Exit Do End If Loop For i = 1 To n - 1 Load imgPT(i) Next For i = 0 To n - 1 If Arrange(i) <> n - 1 Then(将图块赋给控件数组元素)
本文档为【VB课程设计:拼图游戏】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_260251
暂无简介~
格式:doc
大小:33KB
软件:Word
页数:10
分类:互联网
上传时间:2019-02-16
浏览量:37