VB课程设计报告——拼图游戏
VB制作拼图游戏
《VB制作拼图游戏:简单算法》1、首先按照截图把控件添加好!(技巧:PS处理322*322的图片,划分切块,形成九个小图片,这里采用的是Jpg格式,然后采用Command按钮来显示这些图片,同学们也可以采用Label,是一样的,重点是鼠标单击事件!注意:添加九个Command按钮,一定要设置每个按钮的Height、Width、Top、Left值来完成对图片的吻合拼接,这样可以使界面看起来美观大方!)2、界面的设计这里很多同学习惯更改Command的Caption值来显示某些文本,但要注意,你这里很可能为了美观会使用自己机子上单独安装的某些字体,这些字体拿到其他机子上是不生效的,那么怎么办呢?这里有个比较“笨拙的方法”——你可以利用Word工具打好想要显示的文本,设置个性字体,然后截图,插入到Command上面,这样的话,无论是什么字体,都可以显示了,因为图片的属性是无法更改的!这个方法同样可以用来美化Label!当然了,自己究竟怎么样设计,就靠想象力了,最终得到的效果是要有一个美观、简洁大方的界面!3、算法设计(全部代码)Dim Num As IntegerPrivate Sub Command1_Click()If Command2.Picture = Command11.Picture ThenCommand2.Picture = Command1.PictureCommand1.Picture = Command11.PictureEnd IfIf Command4.Picture = Command11.Picture ThenCommand4.Picture = Command1.PictureCommand1.Picture = Command11.PictureEnd IfEnd SubPrivate Sub Command11_Click()MsgBox ("开发者:孔世明" & vbCrLf & "学院:信息科学与技术学院" & vbCrLf & "专业:软件工程" & vbCrLf & "班级:软件一班" & vbCrLf & "学号:201213040117") End SubPrivate Sub Command12_Click()Num = Num + 1If Num = 1 ThenCommand9.Picture = Command11.PictureEnd IfIf Num = 2 ThenMsgBox ("亲~~不能重复开始哦!~")End IfIf Num = 3 ThenMsgBox ("亲~~再说一次,不能重复开始!!")End IfIf Num > 3 ThenMsgBox ("请不要放弃治疗!!!")End IfEnd SubPrivate Sub Command2_Click()If Command1.Picture = Command11.Picture ThenCommand1.Picture = Command2.PictureCommand2.Picture = Command11.PictureEnd IfIf Command3.Picture = Command11.Picture Then Command3.Picture = Command2.Picture Command2.Picture = Command11.PictureEnd IfIf Command5.Picture = Command11.Picture Then Command5.Picture = Command2.Picture Command2.Picture = Command11.PictureEnd IfEnd SubPrivate Sub Command3_Click()If Command2.Picture = Command11.Picture Then Command2.Picture = Command3.Picture Command3.Picture = Command11.PictureEnd IfIf Command6.Picture = Command11.Picture Then Command6.Picture = Command3.Picture Command3.Picture = Command11.PictureEnd IfEnd SubPrivate Sub Command4_Click()If Command1.Picture = Command11.Picture Then Command1.Picture = Command4.Picture Command4.Picture = Command11.PictureEnd IfIf Command5.Picture = Command11.Picture Then Command5.Picture = Command4.Picture Command4.Picture = Command11.PictureEnd IfIf Command7.Picture = Command11.Picture Then Command7.Picture = Command4.Picture Command4.Picture = Command11.PictureEnd IfEnd SubPrivate Sub Command5_Click()If Command2.Picture = Command11.Picture Then Command2.Picture = Command5.Picture Command5.Picture = Command11.PictureEnd IfIf Command4.Picture = Command11.Picture ThenCommand4.Picture = Command5.Picture Command5.Picture = Command11.PictureEnd IfIf Command6.Picture = Command11.Picture Then Command6.Picture = Command5.Picture Command5.Picture = Command11.PictureEnd IfIf Command8.Picture = Command11.Picture Then Command8.Picture = Command5.Picture Command5.Picture = Command11.PictureEnd IfEnd SubPrivate Sub Command6_Click()If Command3.Picture = Command11.Picture Then Command3.Picture = Command6.Picture Command6.Picture = Command11.PictureEnd IfIf Command5.Picture = Command11.Picture Then Command5.Picture = Command6.Picture Command6.Picture = Command11.PictureEnd IfCommand9.Picture = Command6.Picture Command6.Picture = Command11.PictureEnd IfEnd SubPrivate Sub Command7_Click()If Command4.Picture = Command11.Picture Then Command4.Picture = Command7.Picture Command7.Picture = Command11.PictureEnd IfIf Command8.Picture = Command11.Picture Then Command8.Picture = Command7.Picture Command7.Picture = Command11.PictureEnd IfEnd SubPrivate Sub Command8_Click()If Command5.Picture = Command11.Picture Then Command5.Picture = Command8.Picture Command8.Picture = Command11.PictureEnd IfCommand7.Picture = Command8.PictureCommand8.Picture = Command11.PictureEnd IfIf Command9.Picture = Command11.Picture ThenCommand9.Picture = Command8.PictureCommand8.Picture = Command11.PictureEnd IfEnd SubPrivate Sub Command9_Click()If Command6.Picture = Command11.Picture ThenCommand6.Picture = Command9.PictureCommand9.Picture = Command11.PictureEnd IfIf Command8.Picture = Command11.Picture ThenCommand8.Picture = Command9.PictureCommand9.Picture = Command11.PictureEnd IfEnd Sub【应该看得出来,这里的算法只有一个:判断某个按钮相邻的Command显示图片是否为“空白”,若是,则交换图片显示,但要注意,这里还要引入第三个Command当做“中转站”,这其实和C++里面交换某两个变量的值是一个道理,如果没有这个媒介,那么图片交换两次,最终会没有变化。
软件设计报告-拼图游戏
软件设计报告-拼图游戏软件设计报告题目:拼图游戏专业数字媒体技术学生姓名班级学号日期2013年5月目录一、序言 (1)二、项目开发计划书 (1)2.1技术可行性 (1)2.2人员可能性 (1)2.3代码工作量 (1)2.4开发环境 (1)三、项目分析 (1)3.1设计目标 (1)3.2程序功能需求概述 (1)四、软件测试报告 (6)五、不足分析 (9)六、小结 (9)附1:代码 (10)附2:附录 (9)一、序言鉴于拼图游戏是一款较为经典的游戏,我们组选取了拼图游戏,借助Java - Eclipse这样一个开发环境完成此次软件工程实验项目。
二、项目开发计划书2.1技术可行性我们组成员系统的学习了软件工程和Java 的相关知识,具备一定的系统分析与设计能力,熟悉Java的设计与操纵;早期的大部分工作已经完成,所以后面的工作相对轻松:指导老师林巧民老师多年从事软件工程和程序设计的教学与研究工作,因而该系统的实现在技术上是可行的。
2.2人员可能性程序的设计、编写与调试由杜宗泽、沙杰。
文档的编写与整理,后期测试由陈凯负责。
2.3代码工作量预计需一个星期左右。
2.4开发环境开发环境:Java - Eclipse三、项目分析3.1设计目标按照软件工程的规范,以Java - Eclipse为前端开发工具,设计并实现一个拼图游戏。
3.2程序功能需求概述(1)实现载入3幅图片;(2)设置字体;(3)初始化界面;(4)添加鼠标监听事件;(5)面板初始化;(6)单击鼠标时产生的事件;(7)鼠标进入某个区域时产生的事件;(8)鼠标突出某个区域时产生的事件;(9)移动鼠标时产生的事件;(10)拖动鼠标时产生的事件;(11)按下鼠标时产生的事件;(12)放开鼠标时产生的事件;(13)转换坐标;(14)图片初始化;(15)判断程序是否结束;(16)游戏初始化。
四、软件测试报告在Java - Eclipse环境中调试、运行程序点击运行后出现如下画面:单击选取美女头像,初始状态如下图:此时可根据需要单击左上角“小程序”菜单进行功能选择,如下图:五、不足分析(1)4x4拼图难度较大;(2)右下角会有一块空缺,鉴于能力有限,未能完善。
VB实战进阶之拼图游戏
VB实战进阶之拼图游戏许多VB初学者都有这样的感觉,VB基本概念的学习很容易入门,但实际编程时却常常感到无从着手。
因此,从实例学编程,对提高初学者的水平,是十分有益的。
本文以一个拼图益智小游戏的原形为实例,介绍VB编程的一些技巧。
游戏介绍:这是一个简单的益智拼图游戏。
如图一所示,窗体上有顺序排列有九张图片,图片1-8显示数字1-8,第九张为空白图片。
点击“开局”按钮后,程序随机排列九张图片(如图二),游戏者单击与空白图片相邻的图片可以交换该图片与空白图片的位置。
游戏者需要开动脑筋,移动并重新排列九张图片的位置,直至恢复出开局前所示的排列顺序为赢。
(图一)(图二)准备工作:用Photoshop或其它图像处理软件制作九个图像文件P1.jpg,P2.jpg……P9.jpg,除一张为空白外,图片上依次显示1-8个数字。
程序编写:1、新建一Project,在Form1上放置CommandButton类型的控件Command1,将Caption属性设置为“开局”。
2、在窗体中放置一PictureBox控件,Name为Picture1。
在该控件有焦点时,从Edit菜单中选择Copy。
然后,再从Edit菜单中,选择Paste。
这时,VB 会显示一个对话框,确认是否要创建一个控件数组,显示Yes以确认该动作。
此时控件被赋予的索引值为1。
此前画的第一个PictureBox控件的索引值为0。
重复此过程放置其余七个控件数组成员。
将PictureBox1(0)—PictureBox1(8)的Picture属性依次设为P1.jpg、P2.jpg……P9.jpg。
技巧提示:用控件数组增加控件比单纯将多个同类型的控件加到窗体上占用更少的资源。
如果想让几个控件共享代码,控件数组也很有用。
每个新的数组元素的索引值都对应于该元素加入控件数组时的顺序。
当控件以这种方式加入时,大多数直观的属性(如高度、宽度和颜色)都被从控件数组的第一个控件中复制到新控件中。
拼图游戏课程设计报告
目录0引言 (1)1 工作计划 (2)1.1主要工作阶段划分 (2)1.2工作任务分工 (2)2需求分析 (3)2.1概述 (3)2.2用户分析 (3)2.3 约束条件 (3)2.4功能需求 (3)2.5用户界面需求 (4)3设计与实现 (6)3.1概述 (6)3.2详细设计 (6)3.2.1类的抽象及设计 (6)3.2.2表结构设计 (7)3.3 主要程序文件 (7)3.4开发环境以及部署环境要求 (8)3.5 主要源码 (8)4 测试 (14)4.1概述 (14)4.2 测试环境 (14)4.3测试计划。
(15)4.4测试项目及结果 (15)5、工作总结 (15)5.1工作成果 (15)5.2过程分析 (15)5.3经验教训及其分析 (16)0引言拼图是家喻户晓的益智类小游戏,选择该课题即可完成这门课程的课程设计还可增加学习的趣味性增加我对该课程学习兴趣。
选择这个题目一是为了将自己的所学知识加以运用,该程序要用到许多课内所学并且对其加以提高。
二是一直以来拼图这个游戏就深深地吸引着我,它的制作方法对于以前的我而言都是很神秘的。
我希望通过自己的所学知识把它剖析开来,真正的了解它的本质和精髓。
虽然我的编程能力不强,但是我有信心通过自己不断的学习和积极查资料,在这次学习中我将从实践和实际的项目中提高自己的编程能力。
因此我选择这个题目作为我的课程设计题目。
1 工作计划1.1主要工作阶段划分1.2工作任务分工2需求分析2.1概述本程序开发一款简单的拼图游戏,由于能力有限只能实现该游戏的基本内容:3*3,4*4拼图点击空白图片的上下做图片实现交换,另外拼图过程该游戏还为用户提供提示(图片名称)、计步、计时,帮助对话框显示原图的缩略图,即可选择游戏提供的图片还可用户自定义bmp图片,关于对话框显示该游戏的信息。
2.2用户分析1.软件中选定的图片用户不一定喜欢,应该让用户有选择图片的权利,选择用户细化的图片。
课程设计报告-拼图游戏
void draxSegment(int seg,int x,int y){ int dx=seg%4*sx, dy=seg/4*sy;
创建按钮并做事件处理算法: void initButtons(){ bStart.addActionListener(new ActionListtener(){ public void actionPerformed(ActionEvent ae){ initMap(); drawScreen(); running=true; bSee.setLabel("显示正确图像"); } }); bSee.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent ae){ //bSee 按钮标题为“继续游戏” if(bSee.getLabel().equals("继续游戏")){ drawScreen(); bSee.setLabel("显示正确图像"); } else{ //bSee gs.draxImage(imgPuzzle,0,0,screen); bSee.setLabel("继续游戏"); } } 绘制图画,将全部图像绘制在 screen 中算法:
Байду номын сангаас
buff=createImage(imgPuzzle.getWidth(this),imgPuzzle.getHeight(this)); gb=buff.getGraphics(); } 初始化 map 并使用 Rondom 混排图像块算法: void initMap(){ java.util.Random rnd=new java.util.Random(); int temp,x1,y1,x2,y2; for(int i=0;i<100;i++){ x1=rnd.nextInt(4); x2=rnd.nextInt(4); y1=rnd.nextInt(4); y2=rnd.nextInt(4); temp=map[x1][y1]; map[x1][y1]=map[x2][y2]; map[x2][y2]=temp; } outer:for(int j=0;j<4;j++) for(int i=0;i<4;i++)
vb课课程设计拼图
vb课课程设计拼图一、教学目标本节课旨在通过VB编程课程的学习,让学生掌握基本的编程概念和技能,培养他们的逻辑思维和问题解决能力。
具体的教学目标如下:知识目标:学生能够理解VB编程语言的基本概念和语法,包括变量、数据类型、运算符、控制结构等。
技能目标:学生能够运用VB编程语言编写简单的程序,包括输入输出、条件判断、循环结构等。
情感态度价值观目标:学生能够积极参与编程学习,培养对计算机科学的兴趣和好奇心,培养创新精神和团队合作意识。
二、教学内容本节课的教学内容主要包括VB编程语言的基本概念和语法,通过具体的案例和练习,让学生掌握编程的基本方法和技巧。
具体的教学内容如下:1.VB编程语言的基本概念:变量、数据类型、运算符、控制结构等。
2.VB编程语言的基本语法:变量声明、数据类型转换、运算符优先级等。
3.输入输出操作:如何使用VB进行输入输出操作,包括文本框、命令按钮等。
4.条件判断:如何使用VB进行条件判断,包括if语句、else语句等。
5.循环结构:如何使用VB实现循环结构,包括for循环、while循环等。
三、教学方法为了激发学生的学习兴趣和主动性,本节课将采用多种教学方法,包括讲授法、讨论法、案例分析法、实验法等。
具体的教学方法如下:1.讲授法:教师通过讲解VB编程语言的基本概念和语法,为学生提供系统的知识体系。
2.讨论法:学生分组讨论编程案例,促进学生之间的交流和合作。
3.案例分析法:通过分析具体的编程案例,让学生理解编程的概念和技巧。
4.实验法:学生动手编写VB程序,培养实际编程能力和问题解决能力。
四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将选择和准备以下教学资源:1.教材:选择一本适合学生水平的VB编程教材,为学生提供系统的学习材料。
2.参考书:提供一些相关的参考书籍,帮助学生深入理解VB编程语言。
3.多媒体资料:制作PPT和教学视频,以图文并茂的形式展示VB编程的概念和技巧。
VB课程设报告模板(5)
拼图游戏设计报告学院机械班级机设054 学号050377 姓名李赔龙成绩一、设计思路1.目的培养学生综合利用VB语言进行程序设计的能力,主要是利用VB的图像控件进行界面设计,用VB的鼠标事件进行控件的拖拽处理以及利用数组进行数据处理的能力。
2.基本要求打开任意一个图片,按照可以设定的切片数进行分割,打乱排序,然后可以利用鼠标拖动切片到不同位置进行互换,直到拼合出原来图像,具体要求如下:■可以打开Jpg,bmp,gif等任意格式图片,并且窗体大小可以根据图片大小可调。
■根据切片数量绘制出分割线,切片数量用户可以定制。
■游戏开始之后,可以分割图片并且打乱顺序■用户可以拖动各个分片进行重新组合,直到拼合出原图像。
■系统能够自动检查到用户拼合出了原图像并提示用户。
2.关键问题的解决利用pictureclip控件进行图片的加载,利用image控件进行分割后图片的存储。
件分割后图片存入动态数组中,以便进行图片的分割。
当拼图成功后进行提示。
二、模块之间的调用关系,或程序流程图三、部分程序关键源代码及注释Private Sub Command1_Click()= FalseDim OpenFile As OPENFILENAMEDim rtn As String= Len(OpenFile)==sFilter = "所有支持文件(*.Jpg;*.Bmp)" & Chr(0) & "*.Jpg;*.Bmp" & Chr(0) & Chr(13) & _ "Jpg图像(*.Jpg)" & Chr(0) & "*.Jpg" & Chr(0) & Chr(13) & _"Bmp位图(*.Bmp)" & Chr(0) & "*.Bmp" & Chr(0)= sFilter= 1= String(257, 0)= Len - 1=== + "\view\"= "选择展示文件"= 0rtn = GetOpenFileName(OpenFile)Private Sub timer1_timer()If = False Thens = s + 1If s > 59 Thenm = m + 1s = 0If m > 59 Thenh = h + 1m = 0End IfEnd If= Format(h, "00") & ":" & Format(m, "00") & ":" & Format(s, "00")End Ift =If t = s + 60 * m + 3600 * h Then= FalseMsgBox ("时间到")End IfEnd SubPrivate Sub Picture1_DragDrop(Source As Control, X As Single, Y As Single)= False= (AllSort(PicNum2))= (AllSort(PicNum)), LeftNull + Int((PicNum2) Mod * ChangeW, TopNull + Int((PicNum2) / * ChangeH, ChangeW, ChangeH, LeftNull + Int((PicNum) Mod * ChangeW, TopNull + Int((PicNum) / * ChangeH, ChangeW, ChangeH, - + , + , f, B, - + , + , f, B(LeftNull + Int((PicNum) Mod * ChangeW, TopNull + Int((PicNum) / * ChangeH)-(LeftNull + Int((PicNum) Mod * ChangeW + ChangeW, TopNull + Int((PicNum) / * ChangeH + ChangeH), f, B= LoadPicture("")Dim TempInt As IntegerTempInt = AllSort(PicNum)AllSort(PicNum) = AllSort(PicNum2)AllSort(PicNum2) = TempIntIf AllSort(PicNum) = PicNum ThenIf AllSortbo(PicNum) = False Then EndNum = EndNum - 1AllSortbo(PicNum) = TrueElseIf AllSortbo(PicNum) = True Then EndNum = EndNum + 1AllSortbo(PicNum) = FalseEnd IfIf AllSort(PicNum2) = PicNum2 ThenIf AllSortbo(PicNum2) = False Then EndNum = EndNum - 1AllSortbo(PicNum2) = TrueElseIf AllSortbo(PicNum2) = True Then EndNum = EndNum + 1AllSortbo(PicNum2) = FalseEnd IfIf EndNum = 0 Then= FalseMsgBox "恭喜您!您成功了!"End If'Dim IsOver As Boolean'IsOver = True'For i = 0 To AllNum - 1'If AllSortbo(i) = False Then'IsOver = False'Exit For'End If'Next'If IsOver Then MsgBox "成功"End Sub四、设计方案的完善及目前存在的问题1.设计方案要完善的地方加入自动提示,使得分割后的图片放到正确位置时自动提示。
VB课程数字拼图设计报告
数字拼图设计报告学院机械学院班级机设054 学号050379 姓名李永胜成绩一、设计思路1.要达到的目的培养学生综合利用VB语言进行程序设计的能力,主要是培养学生利用VB的标准控件进行应用程序设计的技能。
①能够实现拼图功能②可以通过初始化任意次的重新游戏③游戏完成后做出相应提示.2.关键问题的解决①控件数组实现对拼图的移动②初始化程序的设计二、部分程序关键源代码及注释正文(宋体5号字,单倍行距)Case 0If Com(Index + 1).Visible = False ThenCom(Index + 1).Visible = TrueCom(Index + 1).Caption = Com(Index).CaptionCom(Index).Visible = FalseCom(Index).Caption = ""通过对visible属性及caption属性的改变实现移动三、设计方案的完善及目前存在的问题1.设计方案要完善的地方①记步数使用不完善,所以就没添加②没实现音效③没实现成绩统计2. 目前存在的问题①不能改变等级②显示胜利时的程序比较呆板四、本次设计的收获及心得体会首先,B课程设计很大程度上丰富了课余的活动,以及更加熟练的使用VB,对VB有了更深的了解,让我开始学会喜欢上VB的设计。
其次,VB课程的设计增强了同学们合作互帮互助的精神,而且增强了同学们查找,收集,利用信息的能力五、对该题目和VB设计的意见和建议1. 对该题目的意见和建议在创意设计要求中对改成图片的拼图要求比较高,以及音效要求比较难达到2.对本次设计的意见和建议极大的增强了同学的合作能力,非常好的一个课程设计。
拼图游戏实验报告殷有军
拼图游戏实验报告课程名称:Visual Basic课程设计姓名:殷有军学号:1003280137一、设计题目及要求:题目介绍:该程序的使用方法如下:①制定一幅完整的图片,将其分割为m×n个小图片并打乱顺序后重新排列,其中有一个没有图片的空档;②使用鼠标单击与空档相邻的图片使该图块与空档位置互换;③利用空档位置移动各块图片,最终恢复图片原貌,完成拼图。
游戏过程中可以打开参考图帮助查找各图片的正确位置。
二、用到的主要知识点和相关控件:拼图游戏用到的几个主要知识点和相关控件:1.pictureclip控件用来管理打开的图片并将其分为指定的行列图片,用到其picture属性,rows属性,cols属性等;2.加载image控件数组;3.“打开图片”和“颜色”对话框均由公共对话框commondialog控件实现。
三、设计重点与难点:我认为该拼图游戏的编程过程中存在以下难点:1.对于commond dialog控件和pictureclip控件的一些属性的理解;2.该拼图游戏中如何创建正确数量的image控件,并将这些控件进行有规则的排列;3.如何使pictureclip控件切割的图片能够附给相应的image控件,并能够体现随机性(我认为这是比较难也是很关键的地方);4.如何能够使空白处上下左右的图片能够正确移动到空白处;5.如何判断是否已经拼好。
四、遇到的问题和解决方法:在编程过程中遇到了很多难题,以下我就仅列举几个我所遇到的难题以及我想出的问题的解决办法:1.在编程中我遇到了自己大一没有学过的控件和一些不熟悉的属性,但是通过对图书馆资料的查询以及对MSDN的利用,让我很容易就查到了这些控件和属性,例如大一下学的窗体上的单位是缇,但是这次编程遇到的图片本身却定义为像素,通过MSDN了解到可以通过改变form窗体的scalemode属性可实现单位的转换,由缇变为像素。
2.这个游戏的编程过程中需要用到image控件数组,比较难的一个地方在于如何正确的加载image,并且放置在正确的位置上,通过For x=1To n-1Load frmmain.Image1(x)Next实现对image控件数组的加载通过c=325/frmmain.pc.Colsk=244/frmmain.pc.RowsFor m=1To frmmain.pc.RowsFor z=1To frmmain.pc.Colsfrmmain.Image1(ct).Left=(z-1)*cfrmmain.Image1(ct).Top=(m-1)*kct=ct+1NextNext实现对image的排列。
VB课程设计:拼图游戏
VB课程设计:拼图游戏Visual Basic课程设计报告题目1:拼图游戏难度:***指导教师:姓名:学号:专业:班级:学院:日期:1.题目简介(1)本题目要求设计一个拼图游戏程序,要求如下:指定一幅完整的图片,将其分割成m*n个小图块,打乱后重新排列,其中有一个没有图片的“空当”如图————(2)使用鼠标单击与空当相邻的图块可以与其互换位置。
(3)利用空当位置使原图恢复原来的顺序,并记下玩家的移动步数,游戏过程中可以查看参考图以方便顺利通过游戏。
2、设计思路与总体方案本程序包含五个窗体模块,其中以窗体frmMain的作用最为主要,该模块负责加载选定的图片并按所选的行列数分割,进行随机排列并加载空当,实现鼠标点击时其中的图块时与相邻的空当进行替换,实现拼图完成这个结束动作。
该模块中主要的变量有Rows ,Cols ,Arrange() ,space,started,steps showref Function isOK()其中,Rows ,Cols ,showref这三个为全局变量,分别表示行数,列数,以及是否显示参考图(因此showref为逻辑型变量)其余变量为模块级变量,started也为逻辑变量,负责显示游戏是否已开始,Arrange()数组表示联系图像控件与数组的关系,space显示空当的位置,steps来记录玩家所走的步数,Function isOK()用来检验拼图是否已经完成的函数,为逻辑性变量。
除外,过程变量tt(0 to2),b (0 to 2),s ,r ,c用来写入或读取排行榜中的记录。
其中,还设有菜单栏,通过CommonDialog控件负责实现“打开图片”与“配置颜色”对话框,并同时还拥有打开frmRecod(排行榜窗体模块)的工能。
主要代码(游戏初始时加载图片):Dim i As IntegerDim n As Integer= "图片文件(*.JPG,*.BMP)|*.jpg;*.bmp"= "打开图片"= & "\\pics"(显示指定图片对话框)If = "" Then Exit SubIf started ThenFor i = 1 To Rows * Cols - 1 '(清除已有的控件数组元素)Unload imgPT(i)NextimgPT(0).Picture = LoadPicture()If showref Then = LoadPicture()Else= LoadPicture()End If1, Me ' (显示指定行列对话框)= LoadPicture= Rows= Colsn = Rows * ColsimgPT(0).Width = 320 / Cols ('窗体以像素为单位)imgPT(0).Height = 240 / Rows窗体frmDivide载入图片后弹出此窗口,负责提示玩家进行图片行列数的选择,用以调节游戏等级,可分为3*3,3*4,4*3 ,4*4 这四种模式。
拼图游戏设计_课程设计材料
设
计
要
求
界面要求:要求界面简洁美观,简单易用。
设计要求:1.用C#语言实现程序设计;
2.利用PictureBox控件来实现图片的移动;
3.超过200步提示重新来;
4.良好的人机互交,程序要有注释。
工
作
量
两周内完成编程,写成报告形式
工
作
计
划
1.确定编写程序题目
2.思考程序设计思路
课程设计材料
(2016-----2017学年度第一学期)
题目:拼图游戏设计
学生姓名:
学生学号:1608220203
专业:
班级:
指导教师:
学院制
二0一六年十月十五日
课程设计任务书
学号
1608220203
学生姓名
专业(班级)
题目
拼图游戏设计
设
计
技
术
参
数
1.操作系统:Windows7
2.语言环境:Visual Studio 2012,
年月日
答辩教师评语
成绩
评定
答辩教师签字:
年月日
二级学院工作小组意见
成绩
评定
二级学院领导签字(盖章):
年ቤተ መጻሕፍቲ ባይዱ日
3.查找相关资料
4.编写程序,调试运行代码
5.整理相关资料,完成报告
参
考
资
料
[1]王小科,吕双,梁冰.C#程序开发范例宝典.第二版[M].人民邮电出版社,2009
[2]郑阿奇,梁敬东.C#程序设计教程[M].电子工业出版社,2005
[3]张家祥,方凌江等.C#范例解析[M].北京大学出版社,2006
拼图游戏 课程报告
游戏设计课程设计报告设计题目:精美拼图游戏专业数字媒体技术班级姓名学号指导教师完成时间2012 年秋季学期游戏设计课程设计一、课程设计目的游戏设计课程设计是数字媒体技术专业必修的实践环节。
本次课程设计是本学期游戏设计课程实践环节的深化和延续。
旨在通过此次实践环节的训练,使我们能够更加全面地掌握游戏设计的整体策划以及系统地掌握游戏设计的体系结构。
通过对我们所做游戏进行的类型确定、前期分析、整体策划以及设计制作过程中所涉及的相关技术的学习和掌握,提高了我们的实践能力以及团队协作能力,为我们在计算机技术的应用上拓宽了道路,对进入游戏设计这一领域的深入研究做了准备。
、二、课程设计内容本课程设计按照其要求通过分组来进行,本组3人。
:新游戏、自动拼图、帮助功能:flash欢迎界面,参数设置,图片预览:分数存储及排行榜、图片切换、鼠标提示在制作游戏的前期准备工作中,通过翻阅资料和上网查找,确定以VC++语言环境下MFC为开发平台,制作一款益智休闲小游戏。
通过协商我们小组一致同意,最终确定制作拼图游戏,并在此基础上相应添加一些功能菜单,使游戏更易操控、更人性化、更加完善,形成一个可玩性较强的小游戏。
游戏的故事摘要由于是小游戏的开发,故事情节比较简单。
在开场添加一段FLASH动画来表明故事的背景:圣诞节到了,一个小女孩收到了很多礼物,但是她不小心打碎了,希望有人能帮她重新拼好。
这样也就为拼图游戏的制作奠定了一个较为合理的故事前提。
游戏的类型拼图游戏属于益智类小游戏,在我们的游戏中添加了一些其他菜单控件,达到增加游戏的可控性的目的,让玩家根据自己的喜好调整游戏参数,并且可以通过载入音乐使游戏变得更加有乐趣。
制作工具软件运行环境为Microsoft Windows 7,硬件平台限为PC,制作工具为Visual studio 2010编程软件及Flash软件。
技术设计路线拼图游戏属于益智类游戏,图形界面确定为MFC的对话框Dialogue的形式框架,即微软基础类库。
VB课程数字拼图游戏设计报告
数字拼图游戏设计报告学院班级学号姓名成绩一、设计思路⒈.要达到的目的培养学生综合利用VB语言进行程序设计的能力,主要是培养学生利用VB的标准控件进行应用程序设计的技能。
a.能够实现拼图功能b.可以通过初始化任意次的重新游戏c.游戏完成后做出相应提示e.能够对游戏计时2.关键问题的解决a.游戏的初始化,通过用循环结构、随机函数,控制命令按钮的caption和visible属性,得以实现。
b.按钮的移动可以通过改变按钮数组的Caption属性和Visible属性来实现。
二、模块之间的调用关系,或程序流程图三、部分程序关键源代码及注释单击按钮时的移动,可通过改变按钮数组的caption属性和visible属性来实现Private Sub Com_Click(Index As Integer)Select Case Index ‘index 为索引Case0 ‘情况语句块If Com(Index + 1).Visible = False Then ‘按钮的移动,com(0)按钮的两种移动情况 Com(Index + 1).Visible = True ‘实现按钮右移Com(Index + 1).Caption = Com(Index).CaptionCom(Index).Visible = FalseCom(Index).Caption = ""ElseIf Com(Index + 3).Visible = False Then ‘实现按钮下移Com(Index + 3).Visible = TrueCom(Index + 3).Caption = Com(Index).CaptionCom(Index).Visible = FalseCom(Index).Caption = ""End IfEnd IfCase 1 ‘com(1)按钮的三种移动情况If Com(Index - 1).Visible = False Then ‘实现按钮左移Com(Index - 1).Visible = TrueCom(Index - 1).Caption = Com(Index).CaptionCom(Index).Visible = FalseCom(Index).Caption = ""ElseIf Com(Index + 1).Visible = False Then ‘实现按钮右移Com(Index + 1).Visible = TrueCom(Index + 1).Caption = Com(Index).CaptionCom(Index).Visible = FalseCom(Index).Caption = ""ElseIf Com(Index + 3).Visible = False Then ‘实现按钮下移Com(Index + 3).Visible = TrueCom(Index + 3).Caption = Com(Index).CaptionCom(Index).Visible = FalseCom(Index).Caption = ""End IfEnd IfEnd SelectIf Com(0).Caption = "1" And Com(1).Caption = "2" And Com(2).Caption = "3" And Com(3).Caption ="4" And Com(4).Caption = "5" And Com(5).Caption = "6" And Com(6).Caption = "7" And Com(7).Caption = "8" And Com(8).Caption = "" ThenMsgBox "恭喜你,赢了!!!" ‘游戏结束提示End IfEnd SubPrivate Sub Command1_Click() ‘暂停/开始键的程序设计Static d As Boolean ‘定义静态变量d,是Boolean数据类型的If Not d ThenTimer1.Enabled = False ‘改变时钟控件的Enabled属性,使有效或停止工作Command1.Caption = "开始"ElseTimer1.Enabled = TrueCommand1.Caption = "暂停"End Ifd = Not dEnd SubPrivate Sub Command2_Click()‘通过随机函数、选择结构、控制控件数组的caption和visible属性实现初始化Dim num(7) As Integer ‘num决定了Rnd生成随机数的方式Dim a As IntegerDim b As IntegerDim c As IntegerRandomize ‘随机函数的使用Do While b < 8p: a = Rnd * 8If a = 0 ThenGoTo pEnd IfIf b = 0 Thennum(b) = a ‘随机函数中有效的数值表达式b = b + 1GoTo p ‘用GoTo表示跳转,语句条跳转到指定语句后仍向下执行 End IfFor c = 0 To b - 1If num(c) = a ThenGoTo pEnd IfNext cnum(b) = ab = b + 1LoopCom(0).Caption = "" ‘设置com(0)初始化后为不可视Com(0).Enabled = TrueCom(0).Visible = FalseFor a = 0 To 7Com(a + 1).Enabled = TrueCom(a + 1).Visible = TrueCom(a + 1).Caption = num(a)Next aTimer1.Enabled = True ‘设置Timer控件重新计时Label1.Caption = 0Label3.Caption = 0Command1.Visible = TrueEnd SubPrivate Sub Timer1_Timer() ‘Timer控件的设计Label3.Caption = Label3.Caption + 1If Label3.Caption = 60 ThenLabel1.Caption = Label1.Caption + 1Label3.Caption = 0End IfEnd Sub四、设计方案的完善及目前存在的问题1.设计方案要完善的地方a.需要增加音效b.将数字换成图片不完全c.游戏完成后提示比较呆板2. 目前存在的问题a.不能选择不同等级b.创新要求未全部完成c.不能记录游戏者成绩并排行五、本次设计的收获及心得体会第一,本次设计使我认识到了自身的不足,同时令我对VB有了更深的理解,以更加熟练的使用VB,让我改变了以前对VB肤浅的认识,实践能力大大的提高了。
vb课程设计拼图游戏
vb课程设计拼图游戏一、课程目标知识目标:1. 学生能理解并掌握VB编程语言中的基本语法,如变量、循环结构、条件语句等。
2. 学生能运用所学知识设计并实现一个拼图游戏,理解游戏中的逻辑关系和算法。
技能目标:1. 学生通过编写代码,培养解决问题的能力和逻辑思维能力。
2. 学生能够运用VB编程实现图形界面的设计,提高编程实践能力。
情感态度价值观目标:1. 学生在编程实践中,培养对计算机科学的兴趣,激发创新精神。
2. 学生通过团队合作完成项目,学会沟通与协作,增强团队意识。
3. 学生在遇到编程难题时,能够保持耐心和毅力,培养积极向上的学习态度。
分析课程性质、学生特点和教学要求:本课程为VB编程课程,旨在让学生通过设计拼图游戏,巩固所学的编程知识,提高编程技能。
针对初中年级的学生,课程内容需具备趣味性和挑战性,以激发学生的学习兴趣。
在教学过程中,注重培养学生的逻辑思维能力和实际操作能力,同时关注学生的情感态度价值观的培养。
将目标分解为具体的学习成果:1. 学生能够独立编写代码实现拼图游戏的基本功能。
2. 学生能够在拼图游戏中合理运用循环结构和条件语句。
3. 学生能够通过团队合作,共同完成拼图游戏的优化和升级。
4. 学生在课程结束后,对VB编程保持热情,愿意继续深入学习。
二、教学内容根据课程目标,本章节教学内容如下:1. VB编程基础:- 变量的定义与使用- 数据类型及转换- 常用运算符及表达式2. 控制结构:- 条件语句(If...Then...Else)- 循环结构(For...Next,While...Wend)3. 图形界面设计:- 窗体和控件的属性设置- 事件处理过程4. 拼图游戏设计:- 游戏规则与逻辑- 随机打乱拼图- 移动拼图块的实现- 判断拼图成功与否教学大纲安排:第一课时:回顾VB编程基础,导入新课,讲解拼图游戏的基本规则和设计思路。
第二课时:学习循环结构和条件语句,实现拼图的随机打乱和移动功能。
上海大学计算机认识实习报告VB拼图游戏资料
计算机认识实习报告专 业: 计算机科学与技术班级/题序: B3班 第二题:拼图游戏实习题目: 拼图游戏姓 名: xxx学 号:指导教师:计算机工程与科学学院报告日期 2016年 6月 23日一、实习目的和要求计算机认识实习一般安排在短学期进行,是理论联系实际的重要实践性教学环节。
通过认识实习,了解程序设计的一般过程,树立良好的设计方法,巩固有关计算机软件的知识,加深专业知识的了解,扩大专业知识面,培养和提高发现问题、认识问题、分析问题及解决问题的能力,为有关后续专业课程的学习奠定基础。
通过Visual Basic语言的使用,体会使用VB进行程序设计的特色,试探用VB开发更为复杂的应用程序;加强高级语言的编程能力,了解计算机软件设计的基本方法和一般步骤;通过实习,对计算机及计算机软件设计有一个较为全面的认识,培养发现问题、认识问题、分析问题及解决问题的能力,提高自学能力和上机动手能力。
通过认识实习,学生通过查阅资料了解计算机软件开发技术的最新技术和发展趋势。
通过Visual Basic语言有关知识的学习,使我们掌握:VB的安装、设置和操作技能;VB编程的基本概念;VB中的常量、变量、表达式及运算;VB中的数组、记录和控制结构使用;VB中窗体和控件的设计使用方法,图形、图象类控件的使用;VB中对话框与菜单程序设计方法;VB与数据库的链接与应用;简单的游戏软件的设计与开发方法。
每人将按要求开发设计一个简单的游戏软件。
二、实习内容这次认识实习,我的主要任务是利用VB,设计一个拼图游戏,其具体要求如下:拼图游戏(Puzzle)是一种容易上手的小游戏。
本题目要求编程,实现以下功能。
游戏时,用户可以选择一幅图作为拼图素材。
系统显示的是被分割成M×N个,并打乱顺序后随机排列的(见图1)小图块。
其中有一块空档。
游戏者用鼠标点击与空档相邻的图块,使其与空档互换位置。
利用该空档最终恢复图片的原貌,最后一块为底牌(见图2),翻底牌为完成拼图。
拼图游戏_20110612_2049
河北工业大学计算机软件技术基础(VB)课程设计任务书本题难度级别:A 实现基本要求代码: 约200行主要涉及: 图像控件、绘图、鼠标事件一、设计题目:拼图游戏(出题人:朱怀忠)二、目的与要求1.目的培养学生综合利用VB语言进行程序设计的能力,主要是利用VB的图像控件进行界面设计,用VB的鼠标事件进行控件的拖拽处理以及利用数组进行数据处理的能力。
2.基本要求打开任意一个图片,按照可以设定的切片数进行分割,打乱排序,然后可以利用鼠标拖动切片到不同位置进行互换,直到拼合出原来图像,具体要求如下:■可以打开Jpg,bmp,gif等任意格式图片,并且窗体大小可以根据图片大小可调。
■根据切片数量绘制出分割线,切片数量用户可以定制。
■游戏开始之后,可以分割图片并且打乱顺序■用户可以拖动各个分片进行重新组合,直到拼合出原图像。
■系统能够自动检查到用户拼合出了原图像并提示用户。
3.创新要求在基本要求达到后,进行创新设计,创新方向提示如下:★系统可以提供原图像以供参考,但有次数和时间限制。
★自动提示某个切片的正确位置。
三、设计方法和基本原理1. 问题描述拼图游戏因为规则简单,这里就不过多描述了。
2. 问题的解决方案①设计程序界面。
程序界面比较简单,因为只涉及到一个图像的显示,所以只需要一个PictureBox即可,另外,一些设定可以通过菜单来进行。
本题目重点不在程序界面设计上,所以对于一些细节可以不用太细心,比如窗体的Icon等,但要保证基本的功能实现。
②分析程序运行装载图片可以使用CommandDialog对话框来进行,Filter属性设置为只允许装载Jpg,Gif,BMP类型的文件即可,当文件打开后,利用PictureBox的AutoSize特性可以得到真实大小,此时再调节窗体大小即可实现自适应大小。
至于分割线,则可以直接利用PictureBox的Line方法来进行划线。
当用户开始游戏后,可以利用PictureBox的控件数组来存储切片图像,动态数组的大小可以根据切片数量来决定,至于切片上的图像,则可以用PaintPicture方法来从整体图像上获取。
拼图游戏设计报告.doc
1.设计题目:拼图游戏2.设计思路:(1)划分功能模块:运行程序后,点击进入游戏,加载游戏界面,点击开始图片随机分布(2)可以通过选择游戏的级别,选择四图、九图还是十六图的游戏3.过程和函数的调用关系:源程序:Private Sub C1_Click()’点击进入游戏,默认进入级别为一般的九图的游戏界面Load Form1Form1.ShowUnload Form2End SubPrivate Sub C2_Click()’点击退出游戏,退出游戏界面运行EndEnd SubPrivate Sub exit_Click()’点击左上角游戏下拉菜单中的退出,退出游戏EndEnd SubPrivate Sub help_Click()’点击帮助菜单,提示关于拼图的信息MsgBox "拼图是一种老少皆宜、容易上手的益智类小游戏。
指定一幅完整的图片,将其分割成小的图块,并且打乱顺序后重新排列,其中有一块没有任何东西的空档,使用鼠标单击与空档相邻的图块,使该图块与空档位置互换,利用空档位置移动各图块,最终恢复图片原样,完成拼图。
移动的步数越少则表明游戏者的水平越高。
游戏过程中用参考图来获得帮助查找每图块的相对正确的位置.", , "帮助"End SubPrivate Sub jiandan_Click()’选择简单级别,打开四图游戏Load Form4Form4.ShowUnload Form2End SubPrivate Sub kunnan_Click()’选择困难级别,打开十六图游戏Load Form6Form6.ShowUnload Form2End SubPrivate Sub newgame_Click()’单击新游戏,打开新游戏Load Form1Form1.ShowUnload Form2End SubPrivate Sub yiban_Click()’选择一般级别,打开九图游戏Load Form1Form1.ShowUnload Form2End SubOption Explicit’一系列变量的定义Dim shunxu(8) As Integer '记录图片排列顺序的数组Dim Position As Integer '被点击的图片位置Dim kongtuposition As Integer '空图片的位置Dim MoveTimes As Integer '记录移动次数Dim newposition As Integer '用于计算位置,即新位置Dim Started As Boolean '逻辑型Dim Win As BooleanDim Pic(8) As PictureDim i As IntegerPrivate Sub Command2_Click()’返回主界面Load Form2Form2.ShowUnload Form8End SubPrivate Sub Command3_Click()’显示原图Load Form9Form9.ShowEnd SubPrivate Sub jiandan_Click()’单击简单,打开四图游戏界面Load Form4Form4.ShowUnload Form8End SubPrivate Sub kunnan_Click()’单击困难,打开十六图游戏界面Load Form6Form6.ShowUnload Form8End SubPrivate Sub newgame_Click()’单击新游戏,与点击开始的效果一样,小图块重新分布Dim Temp(8) As IntegerDim ChosenNumber As IntegerFor i = 0 To 8Temp(i) = iNextRandomize (Timer)For i = 8 To 0 Step -1ChosenNumber = Int(i * Rnd) '开始图片随机分布shunxu(8 - i) = Temp(ChosenNumber)Temp(ChosenNumber) = Temp(i)NextFor i = 0 To 8Picture1(i).Picture = Pic(shunxu(i))If shunxu(i) = 8 Then kongtuposition = iNextStarted = TrueMoveTimes = 0End SubPrivate Sub Picture1_Click(Index As Integer)’主要是确定空图的位置,然后根据空图位置确定所点击的图片往哪个方向移动Position = Index '所点图片位置If Started = False Then Exit SubIf ((Position <> 0) And (Position <> 3) And (Position <> 6)) Thennewposition = Position - 1’向左移If (newposition = kongtuposition) Then continueEnd IfIf ((Position <> 2) And (Position <> 5) And (Position <> 8)) Thennewposition = Position + 1’向右移If (newposition = kongtuposition) Then continueEnd IfIf (Position >= 3) Thennewposition = Position – 3’向上移If (newposition = kongtuposition) Then continueEnd IfIf (Position <= 5) Thennewposition = Position + 3’向下移If (newposition = kongtuposition) Then continueWin = TrueFor i = 0 To 7If (shunxu(i) <> i) Then Win = False’判断拼图是否拼对If Win = False Then Exit ForNextIf (Win = True) ThenMsgBox "恭喜恭喜!你很聪明。
VB课程设计报告--拼图游戏
VB课程设计报告—拼图游戏知识点:控件数组,公共对话框控件,PictureClip控件,多模块程序设计,图片的应用。
1.题目介绍“拼图”是一种老少皆宜、容易上手的益智类小游戏,本题目要求编制一个拼图游戏程序。
使用方法如下:(1)指定一幅图片,将其分割成m × n 个小图块并且打乱顺序后重新排列,其中有一块没有图块的“空挡”。
(2)使用鼠标单击与空挡相邻的图块使该图块与空挡的位置互换。
(3)利用空挡位置移动各图块,最终恢复图片原貌,完成拼图。
移动的步数越少则说明游戏者的水平越高。
游戏过程中,可以打开参考图帮助找到正确的位置。
2.功能要求(1)运行程序,在进入游戏之前显示一个背景图片。
(2)选择菜单中的“打开图片”命令,显示打开图片对话框,“打开图片”对话框使用公共对话框控件实现,并且只能指定以*.jpg *.bmp 为扩展名的文件。
可以在查看菜单中选着“缩略图”进行预览。
(3)选择图片之后,程序弹出“指定行列数”对话框,提示将图片分几行几列。
使用微调按钮可以调节行数和列数,限制在3-7之间。
(4)指定行列数之后,单击确定返回主窗口,程序自动按照指定的行列数将图片进分割,然后随机排列。
(5)打乱的图片中一空挡位置,用户单击与空挡相邻的图块可以与其互换位置。
点击了空挡或者与其不相邻的,程序不做任何操作。
原图只少右下角的图块。
(6)图片复原时,程序显示消息框表示祝贺,同时显示游戏共使用的步数。
(7)游戏过程中,如果用户希望参考原图,可以单击“显示原图”按钮,打开“参考图”窗口。
(8)窗体中的背景颜色可以改变,从菜单中选择“背景颜色”命令,弹出“颜色”飞、公共对话框,用户从中选择一颜色即可。
(9)在游戏过程中或在完成后,均可退出程序或选择“打开图片”菜单命令重新开始一个新图片。
(10)“参考图”窗口应是一个非模态窗口,在关闭主窗口时同时卸载,而不是隐藏,否则该程序不会完全关闭,仍会驻留内存。
3.程序设计概述:(1)PictureClip 控件来管理打开图片并将其分为指定的行列图块,其Picture、Rows、Cols等属性值应在程序中设定。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VB课程设计报告-------拼图游戏马学清1008260132 指导老师:张小兵一、题目介绍“拼图”是一种老少皆宜、容易上手的益智类小游戏。
指定一幅完整的图片,将其分割成小的图块,并且打乱顺序后重新排列,其中有一块没有任何东西的“空档”,使用鼠标单机与空档相邻的图块,使该图块与空档位置互换,利用空档位置移动各图块,最终恢复图片原样,完成拼图。
移动的步数越少则表明游戏者的水平越高。
游戏过程中用参考图来获得帮助查找每图块的相对正确的位置。
二、功能要求1.指定一幅图片,将其分割成m × n 小图块,并且打乱顺序后重新排列,其中有一块没有任何东西的“空挡”。
2.使用鼠标单击与空挡相邻的图块,使该图块与空挡的位置互换。
利用空挡位置移动各图块,最终恢复图片原貌,完成拼图。
移动的步数越少则说明游戏者的水平越高。
游戏过程中用参考图来获得帮助查找每图块的相对正确的位置3.三、程序设计概述:(1)PictureClip 控件来管理打开图片并将其分为指定的行列图块,其Picture、Rows、Cols等属性值应在程序中设定。
(2)使用image控件数组来显示图块,设计时只需在窗体上放置一个image控件并将其的index设为0 ,其他的用load语句加载。
(3)“打开图片”和“颜色”对话框Commondialog控件实现。
设置其filter属性使之只能打开bmp和jpg类型的图片文件。
(4)将image控件的stretch属性设计为TRUE四、程序源代码Option ExplicitPrivate Sub cmdOK_Click()frmMain.Rows = txtRows.TextfrmMain.Cols = txtCols.TextUnload MeEnd SubOption ExplicitPublic Rows As Integer, Cols As Integer '图块的行列数Const GAP As Integer = 2 '行列图块的间距Private Arrange() As Integer '图象控件与数组的对应关系Private space As Integer '空档的位置Private started As Boolean '是否已开始Private steps As Integer '步数Public showref As Boolean '是否显示参考图Private Sub cmdShowRef_Click()showref = Not showrefIf showref ThenLoad frmReffrmRef.Image1.Picture = PC.PicturefrmRef.Top = Me.TopfrmRef.Left = Me.Left + Me.WidthfrmRef.ShowcmdShowRef.Caption = "关闭参考图"ElseUnload frmRefcmdShowRef.Caption = "显示参考图"End IfEnd SubPrivate Sub Form_Unload(Cancel As Integer)Unload frmRefEnd SubPrivate Sub imgPT_Click(Index As Integer)Dim r1 As Integer, c1 As IntegerDim r2 As Integer, c2 As IntegerDim n As IntegerDim i As IntegerIf Not started Then Exit Subc1 = space Mod Cols '计算空档的行列r1 = space \ Cols + 1c2 = Index Mod Cols '计算点击的行列r2 = Index \ Cols + 1If Abs(c1 - c2) = 1 And Abs(r1 - r2) = 0 Or Abs(c1 - c2) = 0 And Abs(r1 - r2) = 1 Then '判断是否相邻n = Arrange(Index)Arrange(Index) = Arrange(space)Arrange(space) = nimgPT(space) = PC.GraphicCell(Arrange(space))imgPT(Index) = LoadPicture()space = Indexsteps = steps + 1txtStep.Text = stepsIf isOK() ThenMsgBox "恭喜,完成拼图!共用了" & steps & "步。
", vbInformation'判断是否拼完,如果已完成For i = 1 To Rows * Cols - 1imgPT(i).Enabled = False '拼图完成时,使鼠标点击失效NextEnd IfEnd IfEnd SubPrivate Sub mnuBackColor_Click()CD.Color = Me.BackColorCD.ShowColorMe.BackColor = CD.ColorEnd SubPrivate Sub mnuExit_Click()Unload MeEnd SubPrivate Sub mnuOpen_Click()Dim i As IntegerDim n As IntegerCD.Filter = "图片文件(*.JPG,*.BMP)|*.jpg;*.bmp"CD.DialogTitle = "打开图片"CD.InitDir = App.Path & "\pics"CD.ShowOpen '显示指定图片对话框If CD.FileName = "" Then Exit SubIf started ThenFor i = 1 To Rows * Cols - 1 '清除已有的控件数组元素Unload imgPT(i)NextimgPT(0).Picture = LoadPicture()If showref Then frmRef.Image1.Picture = LoadPicture() ElseMe.Picture = LoadPicture()End IffrmDivide.Show 1, Me ' 显示指定行列对话框 PC.Picture = LoadPicture(CD.FileName)PC.Rows = RowsPC.Cols = Colsn = Rows * ColsimgPT(0).Width = 320 / Cols '窗体以像素为单位imgPT(0).Height = 240 / RowsCall Rnd_Arrange '随机排列For i = 0 To n - 1 '排列图象控件imgPT(i).Top = (i \ Cols) * (240 / Rows + GAP)imgPT(i).Left = (i Mod Cols) * (320 / Cols + GAP)imgPT(i).Visible = TrueNextIf showref Then frmRef.Image1.Picture = PC.Picturestarted = TruecmdShowRef.Enabled = Truesteps = 0txtStep.Text = "0"End SubPrivate Sub Rnd_Arrange() '随机排列图块Dim i As Integer, j As IntegerDim n As Integern = Rows * ColsReDim Arrange(0 To n - 1)For i = 0 To n - 1Arrange(i) = -1 '用-1标记未赋值的元素Nexti = 0Do '给数组Arrange随机赋值j = Int(Rnd * n) '产生0~n-1的随机数If Arrange(j) = -1 ThenArrange(j) = ii = i + 1If i = n Then Exit DoEnd IfLoopFor i = 1 To n - 1 '加载控件数组元素Load imgPT(i)NextFor i = 0 To n - 1If Arrange(i) <> n - 1 ThenimgPT(i).Picture = PC.GraphicCell(Arrange(i)) '将图块赋给控件数组元素ElseimgPT(i).Picture = LoadPicture() '将“打乱”前图片右下角的图块设为空space = iEnd IfNextEnd SubPrivate Function isOK() As Boolean '判断是否拼完Dim i As IntegerFor i = 0 To Cols * Rows - 1If Arrange(i) <> i Then Exit ForNextIf i = Cols * Rows Then isOK = TrueEnd FunctionOption ExplicitPrivate Sub Form_Unload(Cancel As Integer)frmMain.showref = FalsefrmMain.cmdShowRef.Caption = "显示参考图"End Sub五、更上一层楼1)增加“排行榜”功能。
记录每个用户的用户名,难度(即行列数)和成绩(即步数)以供查询。
2)程序退出时,记住用户的背景色设置和是否显示参考图,下次启动时自动恢复前一次设置。
如果退出时游戏未完成,下一次启动时,可以继续上次游戏。