射击游戏设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
射击游戏设计报告
学院:土木工程班级:测绘C111班学号:117536 姓名:冯子帆成绩______
一、设计思路
1、要达到的目的
培养学生综合利用VB语言进行程序设计,解决实际问题的能力。
2.基本要求
用鼠标点击随机出现的靶子,打中不同区域,得分不同。用两个Label控件分别显示点击次数和得分。
3.创新要求
在基本要求达到后,进行创新设计,创新方向提示如下:
①增加难度选项,改变靶子出现的频率;
②细化计分等级,从圆心到最外圈分10-1分;
③增加对战模式,允许两人游戏,分别显示成绩;
④其他你能够想到或者希望实现的功能。
3.关键问题的解决
(1)问题描述
点击“开始”,靶子在窗体上随机出现,用鼠标点击,击中靶心得10分,击中中间的7分,击中外圈的5分,没有击中得0分。每次点击后,显示成绩和点击次数。
(2)问题的解决方案
①设计程序界面。
主窗体如上图。窗体左侧画一个Frame控件,然后在上创建一个Shape控件数组(3个同心圆),Height属性取不同值(半径不同)。在右侧画一个Frame控件,在其内部添加2个Label控件,显示成绩和点击次数。在其下添加一个“开始”按钮和“退出”
按钮。
②分析程序构成
在Timer事件里,随机产生最外圈圆的坐标,把最外圈圆移位到新位置,内部两个圆与最外圈圆的相对位置在程序启动时记录到全局数组里,保持与外圈圆的同步移动。
鼠标点击点的坐标与圆心坐标的距离Distance小于最小半径的10分。
③编写代码
鼠标点击点的坐标与圆心坐标的距离:
Distance = Int(Sqr((Y - (Shape1(0).Top + Shape1(0).Height \ 2)) ^ 2 + (X - (Shape1(0).Left + Shape1(0).Width \ 2)) ^ 2))
得分计算:
If Distance < Shape1(2).Height \ 2 Then
Score = Score + 10
ElseIf Distance < Shape1(1).Height \ 2 Then
Score = Score + 7
ElseIf Distance < Shape1(1).Height \ 2 Then
Score = Score + 5
Else
Score = Score + 0
End If
(3)主要技术问题的描述
本题技术重点:3个同心圆的同步移动以及把其移动范围限制在Frame框架内。
二、模块之间的调用关系,或程序流程图
三、部分程序关键源代码及注释
Dim number As Integer, score As Single, distance As Integer
Private Sub command1_click()
number = 0
Timer1.Enabled = True '控件的enabled属性
End Sub
Private Sub frame1_mousedown(button As Integer, shift As Integer, x As Single, y As Single)
'根据鼠标点击点的坐标与圆心坐标的距离确定得分
distance = Int(Sqr((y - (Shape1(2).Top + Shape1(2).Height \ 2)) ^ 2 + (x - (Shape1(2).Left + Shape1(2).Width \ 2)) ^ 2))
If distance < Shape1(0).Height \ 2 Then
score = score + 10
ElseIf distance < Shape1(1).Height \ 2 Then
score = score + 7
ElseIf distance < Shape1(1).Height \ 2 Then
score = score + 5
Else
score = score + 0
End If
number = number + 1
End Sub
Private Sub timer1_timer()
‘设计frame的大小及位置
w = Rnd * (Frame1.Width - 2400)
h = Rnd * (Frame1.Height - 2400)
'设置内部两个圆与最外圈圆的相对位置,并保持同步移动
Shape1(2).Top = h
Shape1(2).Left = w
Shape1(1).Top = h + 180
Shape1(1).Left = w + 180
Shape1(0).Top = h + 360
Shape1(0).Left = w +360
'记录射击次数和分数
Text1.Text = number
Text2.Text = score
End Sub
Private Sub command2_click()
End '退出
End Sub
四、设计方案的完善及目前存在的问题
1.设计方案要完善的地方
①界面的美观设置
②程序代码的编写
2. 目前存在的问题
①没有创新设计
②对timer事件不够熟悉
③设计时间不够
五、本次设计的收获及心得体会
经过半年的vb学习,我并没有很好的掌握一些比较难的编程语言。Vb设计对我来说还是一个比较大的问题,经过这次的设计,我得到的不只是知识的升华,更是心灵上的洗礼。以下是我在设计中遇到的问题、困难及心得。
“射击游戏”看上去不是一道特别复杂的题,主要涉及Shape控件数组、Frame控件等知识,要求用鼠标点击随机出现的靶子,打中不同区域,得分不同。用两个Label控件分别显示点击次数和得分。其中,在设计这些程序的时候,设计“3个同心圆的同步移动以及把其移动范围限制在Frame框架内”难住了我,我有点沮丧,设计不出来。后经过翻阅资料书、问同学写出来了。另外,我对timer事件不是特别熟悉,不太会用,经过查阅资料、翻书,对其有了深层了解,这次设计让我对vb编程有了新的认识,只要用心vb不是很难。完成之后我很有成就感,当然有开心也有苦恼。
另外,我觉得学校给的课设时间太短了,好多选择比较难一点题目的同学不能很好的完成,加上学校机房的设备不够好等一系列问题同学们不能很好的发挥。我觉得学校如果分组进行课设会对同学们更有帮助,毕竟快期末考试了。
当然,收获是最大的。在课设过程中,我学会了淡定、学会了戒骄戒躁、学会了独立完成作业。更加提高了vb语言编程能力,收获颇多。
六、对该题目和VB设计的意见和建议
1. 对该题目的意见和建议
该题目是C类题,相对比较简单,代码不足100行,符合大部分学生的能力。创新设计的内容很好,利于提高学生的能力。
意见:有些创新设计可以加到基本要求里,这样可以更好的提高同学们的动手动脑能力。
2.对本次设计的意见和建议
设计时间不够充足,加上学校机房的设备不够先进,部分学生不能很好的完成题目,不能充分发挥能力。建议学校可以给多一点时间,让选题难的同学有时间做出来。另外,课设时间不太合理,临近期末考试,建议学校换种方法考察同学们的课设能力,课设可以分组进行,让同一组同学共同完成一个比较难的课题。