VB小游戏设计(二):迷你坦克大战

感谢VB吧的@季小麦,我对他提供的游戏(VB射击小游戏源码+地图编辑器)进行了全方位的改编和升级,最终设计将原 2D CS 加强版 设计成了 迷你坦克大战

部分升级内容:

  1. 添加了游戏开始界面,新增了游戏角色(现在有3个)
  2. 对敌人种类进行了细分(现有3种敌人),修改了敌人AI
  3. 主角和敌人都新增了参数
  4. 修改了游戏地图,进行了游戏难度调整
  5. 添加了游戏音效
  6. 放大了界面,优化了主角和敌人的模型

游戏信息及资源

游戏介绍:《迷你坦克大战》(Mini Tank War)是一款画面简洁的射击类游戏。游戏机制参考了《2D CS》和经典的《坦克大战》,加上了作者自己的创意内容最终做成了这款游戏。游戏地图中分布着大量敌人,玩家需要操控自己的坦克击败所有敌人,从而进入下一关。在战斗中可以不断拾取补给包强化玩家的坦克,以对付比前一关更强大的敌人。游戏一共十关,有四幅不同的地图。

游戏信息:《迷你坦克大战》开发环境为Visual Basic 6.0,采用Visual Basic编写,最新版本总代码约为900行。

开发背景:软件学院小学期作业

游戏效果:

游戏源代码和相关资源:

CSDN下载:VB游戏设计:迷你坦克大战(Mini Tank War.zip) 

百度网盘链接: Mini Tank War.zip 提取码: i9c4

游戏编写过程分析

1.游戏界面(窗体)设计

2.控件添加

3.模块解析

4.窗体代码分析

                                                           先把坑挖出来,未完待续。。。


2022.08.17回来说几句

现在我已经完全不用VB了,这个坑就迷迷糊糊填一下吧。

这个项目是大一刚结束后的暑假小学期作品。当时会的东西不多,参考了VB吧的一个作品,靠着从初中开始自学的VB知识,花了大概六天完成了这个小游戏。

前三天是在分析原项目 2D CS 加强版,把代码结构和运行逻辑基本上看懂了。后面三天是根据自己的设想开始对项目进行改造。

这个项目的核心逻辑是:

  1. 用自定义数据类型储存玩家、敌人、子弹、障碍物等数据(位置信息、生命值、速度,等等)
  2. 根据储存的信息将玩家、敌人、子弹、障碍物等画面在屏幕上绘制出来
  3. 每隔30毫秒计算一次玩家、敌人、子弹的变化,这部分需要考虑很多因素(玩家的操作导致玩家位置变化,敌人位置变化是由AI控制的,子弹变化由子弹速度、是否击中目标或障碍物决定,等等)
  4. 根据新的数据重新绘制玩家、敌人、子弹、障碍物

感觉现在开发已经很少用VB了,但是如果还有读者对这个项目感兴趣,想搞懂这个项目,可以参考上面的核心逻辑,花时间去阅读源代码。在搞懂大部分源代码后,你就可以根据自己的需要进一步优化这个项目了。

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
vb做一个简单的射击游戏 Option Explicit Dim RandX As Single Dim RandY As Single Dim Score As Single Dim Thisscore As Single Dim Average As Single Dim Shot As Integer Dim Appear As Boolean Dim Distance As Single Private Sub Command1_Click() Timer1.Enabled = True Command3.Enabled = True If Command1.Enabled = True Then Command3.Caption = "暂停" End If Command4.Enabled = True End Sub Private Sub Command2_Click() If Command4.Enabled = True Then MsgBox "请先结束游戏", 48, "警告" Else End End If End Sub Private Sub Command3_Click() Command1.Enabled = False Command3.Caption = "继续" Timer1.Enabled = Not Timer1.Enabled If Timer1.Enabled = True Then Command3.Caption = "暂停" End If End Sub Private Sub Command4_Click() Timer1.Enabled = False Command3.Enabled = False Command1.Enabled = True Picture1.Cls Label1.Caption = "射击:" Label2.Caption = "平均得分:" Label3.Caption = "环数:" Label4.Caption = "总分:" Command4.Enabled = False Command3.Caption = "暂停" End Sub Private Sub Form_Load() Appear = False Timer1.Enabled = False Thisscore = 0 Score = 0 Shot = 0 End Sub Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Beep Shot = Shot + 1 Picture1.DrawWidth = 4 Picture1.PSet (X, Y), RGB(255, 0, 0) Distance = Sqr((X - RandX) * (X - RandX) + (Y - RandY) * (Y - RandY)) If Appear And Timer1.Enabled Then Thisscore = 5 - Int(Distance / 10) If Thisscore <= 0 Then Thisscore = 0 End If Score = Score + Thisscore Average = Int((Score / Shot) * 100) / 100 Label1.Caption = "射击:" + Str(Shot) + "发" Label2.Caption = "平均得分:" & Format(Average, "0.00") & "环" Label3.Caption = "环数:" + Str(Thisscore) + "环" Label4.Caption = "总分:" + Str(Score) + "环" End If End Sub Private Sub Timer1_Timer() Dim i As Integer Appear = Appear Xor True RandX = 500 * Rnd() RandY = 370 * Rnd() If Appear Then Form1.Picture1.AutoRedraw = True Picture1.DrawWidth = 1 Picture1.DrawStyle = 0 For i = 10 To 50 Step 10 Picture1.Circle (RandX, RandY), i, RGB(0, 0, 255) Next i Picture1.Line (RandX - 60, RandY)-(RandX + 60, RandY) Picture1.Line (RandX, RandY - 60)-(RandX, RandY + 60) Else Picture1.Cls End If End Sub

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值