VB坦克大战设计报告
- 格式:doc
- 大小:40.00 KB
- 文档页数:3
坦克大战设计报告
一、设计思路
1.要达到的目的
培养学生综合利用VB语言进行程序设计的能力,主要是培养学生的时钟控制和综合编程能力。
⏹要求使用面向对象和结构化程序设计的编程思路
⏹能通过键盘W(上)、S(下)、A(左)、D(右)移动坦克。
⏹可以通过上述按键随时改变坦克的方向。
⏹炮身和炮筒分别为标签控件
◆当坦克移动到窗体边框时停止前进,但能改变方向。
按键J时可以按炮筒方向发射炮弹(炮弹为标签控件)。
2.关键问题的解决
①坦克由两个控件构成label1作为坦克的主体部分,label2作为炮管。
②坦克的移动通过窗体的keypress事件接受键盘按键,w键控制坦克向上,s键控制坦克向下,a键控
制坦克向左,d键控制坦克向右。
炮弹的发射由键盘事件控制,单击j键发射炮弹。利用timer控件控制炮弹延直线移动(改变炮弹的top和left属性),当炮弹击中边缘后消失。
③每当利用keypress事件触发坦克的发炮,首先判断是否炮弹在运行当中,如果运行当中则不进行响
应。炮弹的运动是由timer控件控制,发炮时启动timer事件。
二、程序流程图
三、部分程序关键源代码及注释
1 If La.Top - Lb.Top = 900 And Lb.Left - La.Left = 300 Then
Lc.Top = La.Top - 900
Lc.Left = La.Left + 300
Lc.Visible = True
Timer1.Enabled = True (向某一方向发炮时只运行一个时钟)
Timer2.Enabled = False
Timer3.Enabled = False
Timer4.Enabled = False
2 ElseIf keyascii = 97 Then
La.Enabled = True
Lb.Enabled = True
Lb.Left = La.Left - 900
Lb.Top = La.Top + 300 (方向键控制转向和移动)
La.Height = 800
La.Width = 900 (转向时Lable重新定位)
Lb.Width = 900
Lb.Height = 200
If Lb.Left <= 0 Then
Lb.Enabled = False
La.Enabled = False
Else
La.Left = La.Left – 100 (炮筒和炮身相对位置不变的移动)
Lb.Left = Lb.Left - 100
End If
3 Private Sub Timer2_Timer()
Do While Lc.Left > 0
Lc.Left = Lc.Left - 2
Lc.Top = Lc.Top
If Lc.Left > Ld.Left And Lc.Left < Ld.Left + Ld.Width And Lc.Top > Ld.Top And Lc.Top < Ld.Top + Ld.Height Then
Ld.Visible = False
Lc.Visible = False
End If
Loop
Lc.Visible = False (当炮弹到达边界时时钟停止运行,炮弹消失)
Timer2.Enabled = False
End Sub
四、设计方案的完善及目前存在的问题
1.设计方案要完善的地方
①×××××
②×××××
③×××××
。。。。
2. 目前存在的问题
正文(宋体5号字,单倍行距)
①×××××
②×××××
③×××××
。。。
五、本次设计的收获及心得体会
通过本次设计,我感到加深了对VB算法和基本控件及其属性的理解,积累了书写代码的经验,培养了逻辑思维能力。
VB中一些看似复杂的程序其实可以归结为简单的方法,如此项问题中坦克各动作的执行都可归结为简单的属性变化或其他的指令执行。
六、对该题目和VB设计的意见和建议
1. 对该题目的意见和建议
该题目出的很好,是游戏,很有意思。
2.对本次设计的意见和建议
设计难度不大,控件用的不多,但涉及到逻辑顺序问题,培养了这方面的思维能力。