利用vb控件做个坦克大战类的游戏即可,炮弹和坦克都用控件实现就行。唯一难点是控制控件移动以及炮弹击中目标的碰撞检测判断。给你一个简单实现代码
这是一种碰撞检测方法,下述属于简化的矩形碰撞检测,若是需要复杂碰撞可以用一个数组来记录大量需要碰撞检测的物体
image1里读入坦克的图片
image2里读入地雷的图片
然后用下面代码即可实现
Private
Sub
Form_KeyPress(KeyAscii
As
Integer)
'按键盘A和D键控制猫图片image1左右移动
If
KeyAscii
=
97
Then
Image1.Left
=
Image1.Left
-
10
If
KeyAscii
=
100
Then
Image1.Left
=
Image1.Left
+
10
'如果坦克图片与地雷图片相遇则提示碰撞到了
If
Image1.Left
+
Image1.Width
>
Image2.Left
Then
If
Image1.Left
<
Image2.Left
+
Image2.Width
Then
If
Image1.Top
+
Image1.Height
>
Image2.Top
Then
If
Image1.Top
<
Image2.Top
+
Image2.Height
Then
MsgBox
"坦克碰到地雷,已经被炸毁了"
End
If
End
If
End
If
End
If
End
Sub
我2年前写的,有点幼稚。别见笑
VERSION 5.00
Begin VB.Form Form1
AutoRedraw=-1'True
Caption="打字游戏小游戏而已"
ClientHeight= 4800
ClientLeft= 60
ClientTop= 750
ClientWidth= 5610
LinkTopic="Form1"
ScaleHeight= 4800
ScaleWidth= 5610
StartUpPosition= 1'所有者中心
Begin VB.Timer Timer1
Left= 0
Top= 3600
End
Begin VB.Label Label1
Caption="Label1"
Height= 735
Index= 0
Left= 1320
TabIndex= 0
Top= 600
Width= 855
End
Begin VB.Menu MenuGame
Caption="数量(&N)"
Index= 0
End
Begin VB.Menu MenuGame
Caption="速度(&P)"
Index= 1
End
Begin VB.Menu MenuGame
Caption="重置(&R)"
Index= 2
End
Begin VB.Menu MenuGame
Caption="开始(&S)"
Index= 3
End
Begin VB.Menu MenuGame
Caption="输赢(&W)"
Index= 4
End
Begin VB.Menu MenuGame
Caption="帮助(&H)"
Index= 5
End
End
Attribute VB_Name="Form1"
Attribute VB_GlobalNameSpace= False
Attribute VB_Creatable= False
Attribute VB_PredeclaredId= True
Attribute VB_Exposed= False
Dim StartPause As Boolean
Dim n As Integer
Dim Speed As Integer
Dim Down As Integer, Hit As Integer
Dim DownLost As Integer, HitWin As Integer
Rem自定义函数效率不高啊。。。
Private Sub Form_Initialize()
Speed= 10
DownLost= 100
HitWin= 100
End Sub
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Randomize
For Index= 0 To n
If Chr(KeyCode)= Label1(Index).Caption Then
With Label1(Index)
.Top= Me.ScaleTop
.Caption= Chr(Int(Rnd* 26)+ 65)
.Left= Rnd*(Me.ScaleWidth- Label1(Index).Width)
.ForeColor= RGB(Rnd* 255, Rnd* 255, Rnd* 255)
End With
Hit= Hit+ 1
Me.Caption="打字游戏"&"掉落:"& Down&"命中:"& Hit
End If
Next Index
End Sub
Private Sub Form_Load()
On Error Resume Next
Timer1.Interval= 10
Timer1.Enabled= False
Randomize
With Label1(0)
.Top= Me.ScaleTop
.Caption= Chr(Int(Rnd* 26)+ 65)
.ForeColor= RGB(Rnd* 255, Rnd* 255, Rnd* 255)
.Left= Rnd*(Me.ScaleWidth- Label1(0).Width)
.FontSize= 30
.BackStyle= 0
End With
For Index= 1 To n
Load Label1(Index)
With Label1(Index)
.Visible= True
.FontSize= 30
.BackStyle= 0
.Top= Me.ScaleTop
.Caption= Chr(Int(Rnd* 26)+ 65)
.Left= Rnd*(Me.ScaleWidth- Label1(Index).Width)
.ForeColor= RGB(Rnd* 255, Rnd* 255, Rnd* 255)
End With
Next Index
End Sub
Private Sub MenuGame_Click(Index As Integer)
On Error Resume Next
Select Case Index
Case 0
n= Int(InputBox("输入数量,建议输入1至5,如果输入0或者按取消,将会去缺省值1","输入数量")- 1)
Form_Load
StartPause= False: MenuGame(3).Caption="开始(&S)"
Case 1
Speed= Int(Val(InputBox("输入速度参数,建议5-20,如果输入0或按取消,将会取缺省值0,就是不会移动","输入速度参数")))
Timer1.Enabled= False
StartPause= False: MenuGame(3).Caption="开始(&S)"
Case 2
Hit= 0
Down= 0
Form_Load
StartPause= False: MenuGame(3).Caption="开始(&S)"
Case 3
StartPause= Not StartPause
If StartPause= True Then
MenuGame(3).Caption="暂停(&P)"
Timer1.Enabled= True
ElseIf StartPause= False Then
MenuGame(3).Caption="开始(&S)"
Timer1.Enabled= False
End If
Case 4
HitWin= Int(InputBox("输入数字,当命中数等于该数时即为胜利。","输入数字"))
DownLost= Int(InputBox("输入数字,当掉落数等于该数时即为胜利。","输入数字"))
Case 5
MsgBox"目前没有编辑帮助"
End Select
End Sub
Private Sub Timer1_Timer()
Randomize
For Index= 0 To n
Label1(Index).Top= Label1(Index).Top+ Speed
If Label1(Index).Top>= Me.ScaleHeight Then
With Label1(Index)
.Top= Me.ScaleTop
.Caption= Chr(Int(Rnd* 26)+ 65)
.Left= Rnd*(Me.ScaleWidth- Label1(Index).Width)
.ForeColor= RGB(Rnd* 255, Rnd* 255, Rnd* 255)
End With
Down= Down+ 1
Me.Caption="打字游戏"&"掉落"& Down&"命中"& Hit
End If
Next Index
If Down>= DownLost Then MsgBox"你输啦!", vbOKOnly,"You lost": End
If Hit>= HitWin Then MsgBox"你赢啦!", vbOKOnly,"You Win": End
End Sub
做个贪吃蛇,flppy bird,纵向像素赛车,推箱子,水果机
这些都不难,运用到一些特殊游戏算法,
贪吃蛇:创建pictureBox控件数组,然后加身子就load picture1(picture1.UBound+1)
在声明一个动态数2d数组,每个身子都有一个X,Y值每移动一次贪吃蛇,头部先走一步后面的身子就向前一个身子的位置X,Y移动
flppy bird:运用到加速度,重力物理学,以及柱子的碰撞检测
纵向赛车:随机下来几个pictureBox,如果有方块的纵坐标超过了一定量,那就再从顶部开始下滑(呈现赛车相对几个障碍物向上走的视觉效应)
推箱子:这个实现起来不容易,要把每一次箱子的位置映像成2D数组,然后根据2d数组坐标判断对的箱子,箱子和箱子,箱子和墙,箱子和目标,hero和箱子的几种关系要搞清,谁是主动,谁是被动,谁碰到谁再碰到谁就不能再碰哈哈
水果机:相对没什么技术含量,计数器累加再弄一个小球在屏幕上转圈滚动,滚动到事先生成的随机数等于累加的数字时,停止小球的滚动,停在了那里就用计数变量mod加分类别,最终该得多少分,输出在text里面。。
上一篇:up冷知识抖音玩游戏
下一篇:vivo小知识打游戏看不见人