(共25张PPT)
VB程序设计实战
1
编写九宫格拼图游戏程序
什么是VB程序设计实战?
素材准备:用Photoshop或其他图像处理软件制作九个图像文件P1.jpg,P2.jpg…P9.jpg,除一张为空白外,图片上依次显示A~H八个字母。
2
游戏分析
拼图板:可以看作是一个三乘三的表格,有a、b、c三行和L1、L2、L3三列。
那么各个格子可以按照行列分别表示为a1、a2、a3、b1、b2、b3、c1、c3。为了更明确表达格子位置的顺序关系,分别标号为0、1、2、3、4、5、6、7、8。
八张图片:是有顺序的,可以分别表示为A、B、C、D、E、F、G、H。
排序成功:就是罔片按顺序排入格位,格位与图片顺序的对应关系为:A-0、13-1、C-2、D—3、E-4、F—5、G-6、H—7、0-8。
游戏过程:先把各图片和空格的对应顺序打乱排列,然后游戏者开始借助空格沿行或列移动图片,直到图片按照顺序排列到九宫格中。只有与空格相邻的图片才可以移动。
图片只能移到邻近空格,也就是空格在当前图;片邻近行或列。图片移动的必要条件是空位在目标位置,或表示为0图片在目标位置。
图片移位特征分析
可能情况1:
h、c两行内的图片,有向上移动一格的可能,即:可能从标号为3、4、5、6、7、8的位置对应移到0、1、2、3、4、5的位置。位置标号减3。
这种情况表达为:图片X在N位置,时,N-3的位置为0图片(即空位),图片X与图片0可以交换位置(即图片X移到空位)。也就是,N为3时,0在N-3时,则X到N-3,0到N。
按照行列关系分析图片移动可能性
可能情况2:
a、h两行内的图片,有向下移动一格的可能,即:可能从标号为0、1、2、3、4、5的位置对应移到3、4、5、6、7、8的位置。位置标号加3。
这种情况表达为:图片X在N位置,N≤5时,N+3的位置为0图片(即空位),图片X与图片0可以交换位置(即图片X移到空位)。
也就是,N≤5时,0在N+3时,则X到N+3,0到N。
按照行列关系分析图片移动可能性
可能情况3:
L2、L3两列内的图片,有向左移动一格的可能,即:可能从标号为1、4、7、2、5、8的位置对应移到0、3、6、1、4、7的位置。位置标号减1。
这种情况表达为:图片X在N位置,N≠0、3、6时,N-1的位置为0图片(即空位),图片X与图片0可以交换位置(即图片X移到空位)。
也就是,N—0、3、6时,0在N-1时,则X到N-1,O到N。
按照行列关系分析图片移动可能性
可能情况4:
LI、L2两列内的图片,有向右移动一格的可能,即:可能从标号为0、3、6、1、4、7的位置对应移到1、4、7、2、5、8的位置。位置标号加1。
这种情况表达为:图片X在1N位置,N≠2、5、8时,N+1的位置为0图片(即空位),图片X与图片0可以交换位置(即图片X移到空位)。
也就是,N參2、5、8时,0在N+1时,则X到N+1,0到N。
按照行列关系分析图片移动可能性
3
详细设计
程序模块设计
根据这个游戏程序要实现的主要功能,可以规划设计如下功能模块:
模块一:初始状态模块。用户打开程序,显示九宫格内图片按顺序排列的窗口界面,窗口设有开局按钮。主要实现游戏目标呈现和开局控制功能。
模块二:随机抽局模块。用户单击开局按钮后,程序随机排列图片,图片处在等待响应单击事件状态。主要实现随机布局功能。
模块三:图片移动判断模块。响应鼠标单击事件,按照可能性和必要性条件判断图片能否移动。符合条件就调用图片交换位置模块后返回,不符合规则就返回等待鼠标响应。主要实现移动判断运算功能。
模块四:图片交换位置模块。接受图片移动判断模块的调用,将符合移动条件的图片与空白图片交换位置,记录移动次数。主要实现更改图片位置标志功能。
模块五:判断拼图成功模块。对比初始状态的图片顺序排列,判断是否完成拼图。主要实现判断顺序排列的一致性功能。
模块六:成功信息模块。向用户呈现成功信息和次数累计信息。主要实现游戏信息反馈功能。
4
设计程序结构流程图
流程图能够体现程序员对整个程序的设计思路,包括程序各个功能模块。程序编写过程中,流程图又能够很好地辅助我们进行程序设计。
5
设计程序界面
新建一个Project,在Fram上放置Command Button控件Command,将Caption属性设置为“开局”。
在窗体中放置一Picture Box控件,Name为Picture。选中该控件,从Edit菜单中选择Copy。然后,再从Edit菜单中,选择Paste。在对话框中,确认创建一个控件数组。此时控件被赋予的索引值为1。此前添加的第一个Picture Box控件的索引值为0。重复此过程,放置其余七个控件数组成员。
6
编写程序
程序中我们需要记录这样一些数据:每次移动某一图片后所有图片的排列顺序、本次被单击的图片位置、空白图片的位置、移动次数等。
将位图、图标、GIF和JPEG等各类图像赋值给具有Picture属性的对象,可以用Picture对象来操纵它们。
这是程序的核心部分。但是其原理却是非常简单的:单击图片后,程序根据被单击Picture Box对象的位置和空白图片的位置,判断、交换图片的位置,然后将新的位置记录到Image lD数组中。根据Image lD数组中记录的顺序即可判断游戏者是否取得成功。至此,我们已经可以按F5键运行这个程序,来试试自己设计编制的这个游戏程序。调试完善后保存并发布程序。
7
思考与练习
1.尝试将程序修改成4×4格的拼图游戏程序。
2.为拼图游戏程序加入登记游戏者姓名、成绩及统计排行榜等功能。
THE END