




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Visual Basic程序设计课程设计报告设计题目 题目5 打冰雹游戏 题目难度 二 级 姓 名 冯婉婉 学 号 1109570107 提交日期 目 录一、 题目描述与功能要求题目描述:“打冰雹”游戏是指从窗口顶部落下多个圆球表示的“冰雹”,用户使用鼠标来指引箭头表示的“枪”瞄准其中一个圆球,单击鼠标射击。如果打中圆球则加分,没打中减分。若累积有5个圆球一直未被击中而落到地面(用水平黑线表示),则失败。用户玩游戏的目标是尽量短的时间内得尽量多的分数,同时避免圆球落地。功能要求:(1)设计图1.26(课本)所示的窗口界面。程序启动时,自动进入游戏状态,10个不同颜色的圆球从窗口顶部向下运动。用户使用鼠标指向其中一个圆球,然后单击。如果击中圆球则加1分,未击中则减1分,分数显示在“得分”文本框中。“所用时间”文本框中显示当前已用的时间。被击中的圆球立即消失,新的圆球从顶部落下。 (2)要求同时显示10个圆球,每个圆球的颜色和下落速度各不相同。窗口底部的箭头一直指向鼠标指针的方向。单击鼠标射击时,显示一条从箭头发出到达鼠标指针的直线表示子弹轨迹。(3)程序共有4个难度等级,分别是“简单”、“中等”、“较难”和“高级”。默认的难受为“中等”。不同的等级对应不同的总体下落速度。在游戏过程中,随时可以通过“选择难度”组合框来改变难度级别。(4)游戏开始时,提供的“能量”数是5。如果有一个圆球落到地面,则减1。当能量为0时,显示如图1.27所示的消息框。然后,程序自动将难度改为“简单”让用户重新开始,这时能量恢复为5,得分从0开始。 圆球落地后立即消失,新的圆球从顶部落下,窗口上始终保持有10个圆球。(5)游戏过程中,当得分达到25时,显示如图1.28所示的提示;当得分达到50时,显示如图1.29所示的提示;当得分达到100时,显示如图1.30所示的提示,并自动将难度设为“较难”,当得分达到150时,自动将难度设为“高级”。二、程序设计(一)计算模型或算法实行有关公式等内容的介绍。(二)窗体(界面)设计本题目的程序设计由一个窗体组成。分别由三个Timer,三个TextBox,一个ComboBox,七个Line,十个shape,四个Label等控件组成。整个窗口设计如下:窗体A的设计窗体A图示。窗体A中控件列表序号控件名称控件类型功能1Label标签对文本框与组合框进行说明2TextBox文本框显示程序运行的结果即得分、剩余能量、所用时间的数值3ComboBox组合框显示选择难度4Timer定时器在程序运行的过程中不断地累积时间,当达到给定的时间间隔时,自动地引发名为Timer的事件。tmr21是定时掉冰雹的,tmr1是计算不同的难易程度掉冰雹的速度,tmr5是记录玩游戏所用时间5Shape形状显示多种不同的形状,装饰窗体,这里即圆形6Line直线在窗体上显示一条直线。 Line2到Line7是做指针用的,Line1是作为冰雹没有打中落下去让冰雹消失窗体A中事件过程列表序号事件过程输入参数功能 1cboNd_Click() Private Sub cboNd_Click() If cboNd.Text = 简单 Then tmr1.Interval = 500 ElseIf cboNd.Text = 中等 Then tmr1.Interval = 300 ElseIf cboNd.Text = 较难 Then tmr1.Interval = 250 ElseIf cboNd.Text = 高级 Then tmr1.Interval = 150 End IfEnd Sub根据时间间隔划分难度级别以及控制圆球下落速度 2 Form_Load()Private Sub Form_Load() Randomize For int1 = 0 To 9 shp1(int1).FillStyle = 0 shp1(int1).FillColor = Rnd * &HFFFFFF shp1(int1).Top = Rnd * 500 shp1(int1).Left = Rnd * 9120 NextEnd Sub随机产生十个不同颜色不同位置的圆球3Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) a = 4680: b = 6480: c = 6480 - 5280: d = Atn(4680 - 4560) / (6480 - 5760) e = Atn(4680 - 4440) / (6480 - 5760): f = Sqr(120 2 + 720 2): g = Sqr(240 2 + 720 2) Dim sng1 As Single, sng2 As Single If X a Then If X a Then sng1 = Atn(b - Y) / (X - a) sng2 = d + sng1: sng4 = e + sng1 Line3.X2 = a + g * Cos(sng4): Line3.Y2 = b - g * Sin(sng4) Line6.X1 = a + f * Cos(sng2): Line6.Y1 = b - f * Sin(sng2) sng3 = sng1 - d: sng5 = sng1 - e Line4.X2 = a + g * Cos(sng5): Line4.Y2 = b - g * Sin(sng5) Line7.X1 = a + f * Cos(sng3): Line7.Y1 = b - f * Sin(sng3) Line3.X1 = a + c * Cos(sng1): Line3.Y1 = b - c * Sin(sng1) End If If X a And Y b Then sng1 = Atn(b - Y) / (a - X) sng2 = sng1 - d: sng4 = sng1 - e sng3 = sng1 + d: sng5 = sng1 + e Line4.X2 = a - g * Cos(sng5): Line4.Y2 = b - g * Sin(sng5) Line3.X2 = a - g * Cos(sng4): Line3.Y2 = b - g * Sin(sng4) Line7.X1 = a - f * Cos(sng3): Line7.Y1 = b - f * Sin(sng3) Line6.X1 = a - f * Cos(sng2): Line6.Y1 = b - f * Sin(sng2) Line3.X1 = a - c * Cos(sng1): Line3.Y1 = b - c * Sin(sng1) End If If X b Then sng1 = Atn(b - Y) / (X - a) sng2 = sng1 + d: sng4 = sng1 + e: sng3 = sng1 - d: sng5 = sng1 - e Line4.X2 = a - g * Cos(sng5): Line4.Y2 = b + g * Sin(sng5) Line3.X2 = a - g * Cos(sng4): Line3.Y2 = b + g * Sin(sng4) Line7.X1 = a - f * Cos(sng3): Line7.Y1 = b + f * Sin(sng3) Line6.X1 = a - f * Cos(sng2): Line6.Y1 = b + f * Sin(sng2) Line3.X1 = a - c * Cos(sng1): Line3.Y1 = b + c * Sin(sng1) End If Line5.X2 = Line4.X2: Line5.Y2 = Line4.Y2 Line4.X1 = Line3.X1: Line4.Y1 = Line3.Y1 Line2.X2 = Line6.X1: Line2.Y2 = Line6.Y1 Line5.X1 = Line7.X1: Line5.Y1 = Line7.Y1 Line2.X1 = Line3.X2: Line2.Y1 = Line3.Y2 End IfEnd Sub直线组成的箭头由鼠标控制移动。Line2到Line7是做指针用的,Line1是作为冰雹没有打中落下去让冰雹消失。4Private Sub tmr1_Timer() Static intNl As Integer For int1 = 0 To 9 shp1(int1).Top = shp1(int1).Top + 100 If shp1(int1).Top 4450 Then shp1(int1).Top = 0: intNl = intNl - 1 Next MousePointer = 2 txtnl = intNl + 5 If intNl -5 Then intNl = -5 End If If txtnl.Text = 0 Then cboNd.Text = 简单: intdf = 0 int2 = MsgBox(你失败了,别灰心,降低难度,请重来!, 64, shot) intNl = 0 End If txtdf = intdf End Subtmr1是计算不同的难易程度掉冰雹的速度。冰雹每次下降距离都是100,定时器每300毫秒执行一次Timer事件,当冰雹下落到大于4450缇的高度时,冰雹消失,能量减一分,当能量为零的时候会弹出信息框“你失败了,别灰心”难度自动调到“简单”序号事件过程输入参数功能5Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Randomize Dim txt As Boolean Dim a As Single, b As Single For int1 = 0 To 9 a = shp1(int1).Top + 250: b = shp1(int1).Left + 250 If (X - b) 2 + (Y - a) 2 250 2 Then shp1(int1).Top = -500 shp1(int1).Left = Rnd * 9120 intdf = intdf + 1: txt = True shp1(int1).FillColor = Rnd * &HFFFFFF End If Next If Not txt Then intdf = intdf - 1 End If bln1 = False If intdf = 25 Then int2 = MsgBox(好样的,继续努力, 64, shot) ElseIf intdf = 50 Then int3 = MsgBox(太棒了,再射中50个你就过关了,努力啊!, 64, shot) ElseIf intdf = 100 Then int4 = MsgBox(恭喜你过关了,增加难度,再继续!, 64, shot) cboNd.Text = 较难 ElseIf intdf = 150 Then cboNd.Text = 高级 End If frmbingbao.Line (Line4.X1, Line4.Y1)-(X, Y), vbRed End Sub 子弹的打击范围是以半径为250的一个圆,打中将会加一分,没有打中将会减一分。到了25分会弹出信息框“好样的,继续努力”到了50分弹出信息框“太棒了,在射中50个你就过关了努力啊“到了100分会弹出信息框“恭喜你过关了,在加难度,再继续!”并会自动跳到“较难”级别。子弹的轨迹为红色6Private Sub tmr21_Timer() frmbingbao.ClsEnd Sub 定时掉冰雹,使子弹的轨迹消失7Private Sub tmr5_Timer() Static int1 As Integer, int2 As Integer, int3 As Integer int1 = int1 + 1 If int1 = 60 Then int1 = 0: int2 = int2 + 1 If int2 = 60 Then int2 = 0: int3 = int3 + 1 txttime.Text = Format(int3, 00) & : & Format(int2, 00) & : & Format(int1, 00)End Sub记录玩游戏所用时间窗体A图示。4、 课程设计总结(心得体会) 课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,当今计算机应用在是生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握计
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025茶叶销售合同(范本)
- 2025医师劳动合同
- 道路工程制图 第5版 课件 项目七 识读与绘制道路工程构件的
- 2025绿色环保稻米种植收购合同范本
- 2025版权授权合同
- 2025商品购销合同(Sales Con)
- 公司安全管理培训资料课件
- 项目风险管理评估与分析工具
- 国旗下讲话:环保话题演讲稿6篇
- 2025物业管理公司租赁合同范本
- 2025年保健按摩师职业技能竞赛理论考试题库(附答案)
- 市政道路工程竣工验收报告
- 预备队员考核表
- 庆阳地区地下水供水水文地质条件评价
- 储能项目竣工报告
- 打印版唐能通
- 37°球面型管路连接件
- 择菜洗菜和切菜
- 主体沉降观测的大概内容主体沉降观测方案.doc
- 臀上皮神经损伤
- 电镀技术:锌合金电镀与退镀
评论
0/150
提交评论