学号
10225611135
《可视化编程》课程设计
报告
软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载
题目:连连看游戏的设计与开发
专业班级:
软件2111
学生姓名:
黎咏瑶
指导教师:
黄启荃
教 学 系:
信息工程系
2012年6月15日
课程设计任务书
学生姓名:黎咏瑶 专业班级:软件2111班
指导教师: 黄启荃 李小艳 工作单位: 华夏学院计算机教研室
设计题目:连连看游戏的设计与开发
初始条件:
1、完成可视化编程的学习
2、带Visual Basic 的机器
要求完成的主要任务:
(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
主要任务:(在规定的时间内完成下列任务)
1、判断鼠标点击的两张图片是否相同;
2、判断2张图片是否可以相连;
3、判断时间;
4、判断剩余图片,是否胜利。
5、判断是否是死局,并死局要进行调整
6、适当给出“提示”信息
设计报告撰写格式要求:(课程设计报告按统一通用格式书写)具体内容如下:
① 设计任务与要求 ② 总体
方案
气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载
与说明
③ 程序主要模块的流程图 ④ 源程序清单与注释
⑤ 问题分析与解决方案(包括调试记录、调试报告,即在调试过程中遇到的主要问题、解决
方法
快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载
及改进设想); ⑥ 小结与体会
附录:① 源程序(必须有简单注释) ② 使用说明 ③ 参考资料
时间安排:6月23日---28日
第一天
布置题目,确定任务、查找相关资料
第二天~第四天
功能分析,编写程序,调试程序、运行系统;
第五天
程序验收、答辩;撰写设计报告。
指 导 教 师 签 字:
2012年6月23日
系 主 任 签 字: 年 月 日
1. 设计任务与要求
1、判断鼠标点击的两张图片是否相同;
1、判断2张图片是否可以相连;
3、判断时间;
4、判断剩余图片,是否胜利。
5、判断是否是死局,并死局要进行调整
6、适当给出“提示”信息
2. 总体方案
2.1 连连看游戏的功能架构
帮助功能
如图1功能架构
2.2 类结构设计
游戏由六个类组成,如图所示2
(1)主界面对话框类:主要负责主界面及菜单的显示,棋子消除、消除提示及换盘操作,同时还要负责时间控制等。
(2) 棋子类:主要负责棋子的选中,配对及查找。
(3)连接线类:主要负责棋子中连接线的绘画。
(4)英雄榜对话框类:主要负责游戏等级记录的更新。
(5)背景音乐播放类:主要负责游戏中背景音乐的播放。
(6)帮助对话框类:主要负责帮助提示的显示及其它辅助信息
连
连
看
游
戏
如图2类结构设计
2.3出错处理设计
当游戏中出现错误,采用弹出对话框的方式来提示用户出现错误,并可采用中止当前游戏并重新开始新游戏的方法来处理游戏中的错误。
3. 详细设计
3.1 时间限制模块的算法设计
时间限制模块的算法主要分为如下几步:
(1) 在游戏开始时,设置当前限制时间(nOverTime)为60秒。
(2) 设定一个时间定时器TIMER1,时间间隔为1000ms 。
(3) 当每一次时间间隔到时,就把当前限制时间减少一秒。
(4) 如果游戏中有一对棋子消除时,就把限制时间增加三秒。
(5) 如果限制时间变成零秒,说明游戏结束,弹出结束提示对话框。如果当前游戏等级超过记录等级,还要弹出英雄榜对话框对话。
3.2 消除相同棋子模块的算法设计
消除相同棋子模块的算法主要分为如下几步:
(1) 当鼠标单击棋子时,保存到棋子坐标及类型到第一次选中变量中。
(2) 得到鼠标第二次选中的棋子坐标及类型。
(1) 比较两次棋子类型,如果相同,转步骤(4)。如果不相同,转步骤(5)。
(2) 画一条连接线,并消除这对棋子,退出等待下一次鼠标选择。
(3) 把鼠标第二次选中的棋子坐标及类型赋值给第一次选中变量。
3.3 游戏升级模块的算法设计
游戏升级模块的算法主要分为如下几步:
(1) 保存当前游戏等级和限制时间初始值。
(2) 当游戏中的棋子全部被消除完毕时,就把当前游戏等级增加一级。
(3) 把限制时间的初始值减少5秒。
(4) 调用重新开始游戏接口函数。
3.4 消除提示模块的算法设计
消除提示模块的算法主要分为如下几步:
(1)判断提示次数变量的值,如果等于0,结束。
(2)查找当前棋盘中相同的棋子。
(3)在相同棋盘中,查找可以消除的棋子。
(4)给出提示连线,提示次数变量减少1。
3.5 棋子换盘模块的算法设计
棋子换盘模块的算法主要分为如下几步:
(1)保存当前棋盘数组中的数据到临时数组中。
(2)循环的从临时数组中,随机取出数据保存到棋盘数组中。
3.6 英雄榜模块的算法设计
英雄榜模块的算法主要分为如下几步:
(1)读取配置文件,得到并显示当前最高等级及大名。
(2)在用户结束游戏时,比较当前用户等级和最高等级。如果高于配置文件中的最高等级,就弹出英雄榜对话框,要求输入大名,并连同用户的等级保存到配置文件中。
3.7 帮助类模块的算法设计
把相应的对话框资源显示出来即可。
3.8程序流程图
否
如图3程序流程图
4源程序清单与注释
4.1程序
Private Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszsoundname As String, ByVal uflags As Long) As Long
Const SND_SYNC = &H0
Const SND_ASYNC = &H1
Const SND_NODEFAULT = &H2
Dim focus As Integer
Dim ftype As String
Dim cc As Integer
Dim nd As Integer
Private Sub Form_Load()
'初始化
nd = 5
Call rom '调用排列方法
End Sub
Private Sub Picture1_Click(Index As Integer) '点击图片的事件
If ftype = Picture1(Index).Tag And focus <> Index Then '判断图片是否类型一致
Line1.Visible = True '显示线
Line1.X1 = Picture1(Index).Left + 300
Line1.X2 = Picture1(focus).Left + 300
Line1.Y1 = Picture1(Index).Top + 300
Line1.Y2 = Picture1(focus).Top + 300 '设置线的位置
Label2.Width = Label2.Width + 50
Picture1(Index).Visible = False '点击图片设置为不可见
Picture1(focus).Visible = False '上一张图片为不可见
focus = -1 '将缓存中图片清空
ftype = "" '将缓存中图片信息清空
cc = cc - 2 '将可见图片数量减一
Label4.Caption = Label4.Caption + 1
Dim flag As Integer
Dim a As Integer
flag = SND_ASYNC Or SND_NODEFAULT
a = sndPlaySound(App.Path & "\c.wav", flag) '播放声音
Else '如果两张图片类型不一致执行
focus = Index '获取当前焦点
ftype = Picture1(Index).Tag '获取当前图片类型
flag = SND_ASYNC Or SND_NODEFAULT
a = sndPlaySound(App.Path & "\a.wav", flag) '播放声音
End If
If cc = 0 Then '如果可见图片数量为零就执行
flag = SND_ASYNC Or SND_NODEFAULT
a = sndPlaySound(App.Path & "\e.wav", flag) '播放声音
Dim but As VbMsgBoxResult
but = MsgBox("恭喜你通过瑶瑶犀利版连连看!是否进入下一关?", vbOKCancel, "连连看")
If but = vbOK Then
Call rom '重新开始
Label3.Caption = Label3.Caption + 1
nd = nd + 1
Else
End '结束
End If
End If
End Sub
Private Sub Picture1_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
For i = 0 To Picture1.Count - 1
If (i = Index) Then
Picture1(i).BorderStyle = 1
Else
If (i = focus) Then
Picture1(i).BorderStyle = 1
Else
Picture1(i).BorderStyle = 0
End If
End If
Next i
End Sub
Sub rom() '开始
Label2.Width = 3255
For k = 0 To 59 '产生随机数
Picture1(k).Visible = True
Next k
focus = -1
cc = False
ftype = ""
cc = Picture1.Count
Dim a(60) As Integer
Randomize
Dim flag As Boolean
a(0) = Int(Rnd * 60)
For i = 1 To 59
Do
flag = True
temp = Int(Rnd * 60)
For j = 0 To i - 1
If temp = a(j) Then
flag = False
Exit For
End If
Next j
Loop While (flag = False)
a(i) = temp
Next i
Dim tt As Integer
Dim ll As Integer
tt = Picture1(0).Height + 100
ll = Picture1(0).Width + 100
Dim tp As Integer
tp = 0
For xx = 1 To 10 '设置图片位置
For yy = 1 To 6
Picture1(a(tp)).Left = xx * ll
Picture1(a(tp)).Top = yy * tt
tp = tp + 1
Next yy
Next xx
End Sub
Private Sub Timer1_Timer()
Line1.Visible = False '让线消失
End Sub
Private Sub Timer2_Timer()
Label2.Width = Label2.Width - nd
If Label2.Width <= 50 Then
flag = SND_ASYNC Or SND_NODEFAULT
a = sndPlaySound(App.Path & "\d.wav", flag) '播放声音
MsgBox ("恭喜您败了!")
End
End If
If Label2.Width >= 3255 Then Label2.Width = 3255
End Sub
4.2程序运行截图
图1
图2
5.问题分析与解决方案
在第一步编程过程中很顺利的编写好了各模块,最后整合成了一个完整的程序,但在调试过程中遇到许多问题。如一些由于粗心导致分号,括号,字母输错的例子很多,但都很快改正。还有函数调用错误,还有在写程序中我常忘记头文件包含命令,以及函数声明,导致调试中出现警告。这让我体会到只有耐心的一行一行的改错误才能把程序调试好。
运行中遇到的问题:例如,对数据的写文件操作中,我把存在
Fly[N]中的数据以fwite(&fly[N,sizeof(struct flight)],1,fp)写入文件,结果发现文件中总是不能出现数据。以致程序不能运行后面部分。后来才发现取得地址错了应改成fwrite(&t,sizeof(struct flight),1,fp)。在显示阶段就是这问题让程序出现错误。不能正确读出输入的信息
6.小结与体会
回顾大学这一年的学习生活,拾起记忆的碎片,点点滴滴如幕影般在脑海中匆匆闪过,百感交集……
下面就闲谈一些学习生活上的心得以及这次课程设计的一些体会,整理一下自己的学习历程,希望能给自己一些启示。做为学生,学习是自己重要的事情是理所当然的,在明确它的重要性之后,就要以严谨的态度对待学习,认真的态度是学习上取得成绩的首要条件。在具体的学习过程中,要注意学习方法的利用和学习效率的保证。要知道长时间的自习并不一定能取得相应的成果,每个人的学习习惯是不同的,合理的安排自己的学习与休息时间是非常重要的,尽量挑选自己注意力最集中的时间段做关键科目的学习。注意劳逸结合,走科学的学习道路。学习计划的拟定也是必不可少的,特别是在课程较多的学期,拟定学期的学习计划可以提高学习的效率,并做到根据自己的实践情况实时地调整计划。学习的方法多种多样,同学之间一起研讨问题是提高大家水平的很好途径,教学相长,遇到困难请教同学,向同学讲解题目都有很大的益处,当然要掌握尺度,自己要有独立思考的能力。在各个科目的学习中,考试虽然是检验学生学习成果的有力手段,是我们应该重视的环节,可是平时的学习过程才是最重要的,扎实地掌握各专业课程内容,并尽量多的了解课本之外的专业相关的内容对将来的发展有极大的好处,无论是以后工作还是继续深造。以上的一切学习方法只是理论,要付诸实践毅力是必备的,牢记学海无涯苦作舟,学习并不是轻松的事情,须要刻苦求学并为之坚持不懈。路漫漫其修远兮,人们一直在寻求学习的方法,每个人在不同的阶段应追求不同的学习方法,可是学习应有的态度是始终不变的,在今后的学习道路上,我将在新的环境下新的学习历程中继续追寻…
参考资料
[1]刘大有等,《数据结构》(vb语言版),高等教育出版社,2003
[2]严蔚敏等,《数据结构》(vb语言版),清华大学出版社,2010
[3]William Ford,William Topp,《Data Structure with C++》清华大学出版社。 2009
[4]苏仕华等,《vb课程设计》,华夏出版社 2008
[5]陶大鹏,《vb语言实践教程》北京:中国水利水电出版社:2010
设计过程中质疑(或答辩)记载:
1.连连看会用到那些vb的知识?
答:用到vb程序语言设计的,数组,文件,vb语言的循环结构。
2.程序中出现的问题你是怎么解决的?
答:跟同学讨论和请教老师。
3.在运行过程中,如果找不到内容你是怎么处理的?
答:文件建立错误或写入不成功。
4.你觉得这次实训对你有哪些体会?
答:这次的实训使我更深刻的了解vb也是我对如何编写一个完整的应用软件打下基础。
指导教师评语:
签名:
2012 年 6 月 26日