快速配对游戏_课程设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Visual Basic
课程设计报告
所属课程名称:Visual Basic程序设计
课程设计题目:快速配对游戏
课程设计难度:两星
课程设计时间:2012.2.27 ~ 4.18
学号:9121091601XX
姓名:XXX
南京理工大学机械工程学院
二〇一三年X月
一、程序功能
(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 Explicit
Dim a(0 To 15) As Integer, b(1 To 2) As Integer, str(1 To 3) As String
Dim Finish(0 To 15) As Boolean, Order(1 To 3) As String, Q(1 To 3) As Integer
Dim y As Integer, Time1 As Integer
Private 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