射击游戏设计报告

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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.对本次设计的意见和建议

设计时间不够充足,加上学校机房的设备不够先进,部分学生不能很好的完成题目,不能充分发挥能力。建议学校可以给多一点时间,让选题难的同学有时间做出来。另外,课设时间不太合理,临近期末考试,建议学校换种方法考察同学们的课设能力,课设可以分组进行,让同一组同学共同完成一个比较难的课题。

相关文档
最新文档