vb小游戏制作

vb小游戏制作


2024年2月8日发(作者:)

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()

d = True

d = True

If d = True Then

n = "暂停"

End If

d = True

End Sub

Private Sub Command2_Click()

If d = True Then

MsgBox "请先结束游戏", 48, "警告"

Else

End

End If

End Sub

Private Sub Command3_Click()

d = False

n = "继续"

d = Not d

If d = True Then

n = "暂停"

End If

End Sub

Private Sub Command4_Click()

d = False

d = False

d = True

n = "射击:"

n = "平均得分:"

n = "环数:"

n = "总分:"

d = False

n = "暂停"

End Sub

Private Sub Form_Load()

Appear = False

d = 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

dth = 4

(X, Y), RGB(255, 0, 0)

Distance = Sqr((X - RandX) * (X - RandX) + (Y - RandY) * (Y - RandY))

If Appear And d Then

Thisscore = 5 - Int(Distance / 10)

If Thisscore <= 0 Then

Thisscore = 0

End If

Score = Score + Thisscore

Average = Int((Score / Shot) * 100) / 100

n = "射击:" + Str(Shot) + "发"

n = "平均得分:" & Format(Average, "0.00") & "环"

n = "环数:" + Str(Thisscore) + "环"

n = "总分:" + 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

draw = True

dth = 1

yle = 0

For i = 10 To 50 Step 10

(RandX, RandY), i, RGB(0, 0, 255)

Next i

(RandX - 60, RandY)-(RandX + 60, RandY)

(RandX, RandY - 60)-(RandX, RandY + 60)

Else

End If

End Sub

二、打飞机游戏

从作一个小游戏开始

指针

本文从制作一个简单的小游戏开始,通过扩展这游戏,讲解VB多媒体,键盘控制与一些相关技术。这是个类似打飞机的游戏,运行界面见图。

图1

这个游戏程式包括下列对象:

Table1

1、操作对象Fight的键盘控制:

VB中的窗口键盘控制可使用Form_KeyUp(松开)与Form_KepDown(窗口按下)事件,其语法是:

PrivateSubForm_KeyUp

PrivateSubForm_KeyDown

KeyCode参数是返回所按键的ASCII代码。在VB中可使用其预定义的常数来替代这些ASCII代码,如vbKeyLeft即指左箭头键的ASCII值37。

Shift参数是在响应SHIFT,CTRL和ALT键的状态的一个整数,分别对应于值1、2和4,即二进制得1,10,100。如果SHIFT、CTRL和ALT这三个键都被按下,则Shift的值为7(二进制111)。同理如果CTRL和ALT这两个键都被按下,则Shift的值为6。可对其进行位屏蔽,即二进制的特定位的‘与’运算来确定相应的键是否按下。如判断CTRL键其语法为ShiftAND2(可用预定义的vbCtrlMask常数替代)是否为真。

注意,当窗口的KeyPreview属性被设置为False时,Form_KeyUp、Form_KepDown事件将被忽略。

Fight对象的移动可通过修改LEFT属性设置对象内部的左边与窗口的左边之间的距离位置,Top属性设置对象的内顶部和窗口的顶边之间的距离来实现。

具体实现代码:

OptionExplicit

PrivateCtrldownAsBoolean‘CTRL键

PrivateSpeedAsInteger‘Fight对象的移动速度

在窗口的load事件中加入

view=True

Style=3‘将窗口设为固定对话框,不包含最大化和最小化按钮,不能改变尺寸。

窗口的Form_keydown事件包括.

PrivateSubForm_KeyDown

CtrlDown=‘判断CTRL键,用于加速

IfThen

Speed=80‘高速

Else

Speed=40‘低速

EndIf

SelectCaseKeyCode

CasevbKeyLeft注释:左键

IfThen

=-Speed

EndIf

CasevbKeyRight‘右键

IfThen‘Fight对象的右边缘不能超越窗口的右边缘

=+Speed

EndIf

EndSelect

EndSub

亦可使用VB针对控件的Object_KeyDown,Object_KeyUp事件,大同小异。注意,这种方式不能有效地识别同时按下多个按键,不能适应游戏的需求。

2、使用Timer时钟控件绘制运动着的图像

Timer可以有规律地隔一段时间执行一次代码。其间隔的时间由Interval属性设置,是一个整数,单位是毫秒既千分之一秒。执行的代码放置于Timer事件中。

目标Home的移动的策略不拘一格,本文给出一简单的随机变加速度算法。

PrivateSubTimerS_Timer

IfThen‘50%加或减速度,VB中rand总是正值

homespeed=homespeed+Rnd50

Else

homespeed=homespeed-Rnd50

EndIf

=+homespeed

IfThen注释:如目标右边缘小于窗口左边缘

=‘目标在窗口的右边出现

EndIf

IfThen‘如目标左边缘小于窗口右边缘

=-‘目标在窗口的左边出现

EndIf

EndSub

目标Home的移动的策略还可引入Fight对象的位置和速度的参数,实际上,目标Home与Fight对象的移动可以是二维的,只要修改其Top属性就可实现,此类游戏耐玩的关键在于其移动的策略,读者不妨自行定义一策略看看。

3、子弹的实现

在窗口的Load事件中加入

e=False注释:子弹不可见

HadShot=0‘命中次数

MaxShot=3‘摧毁目标的命中次数

在窗口的Form_KeyDown事件中加入

IfThen‘目标尚没摧毁

......

CasevbKeySpace

IfThen注释:发射子弹,后可加入声音,与减分

=+/2‘定位于Fight的正中

=‘定位于Fight的上方

e=True‘子弹可见

EndIf

.....

EndIf

EndSub

在TimerS的Timer事件中加入

PrivateSubTimerS_Timer

IfThen

IfThen‘子弹已发射

=-100

EndIf

IfThen‘子弹到达窗口顶端

e=False

Else

If)And_

>=)And_

+)And_

>=)And_

Then注释:子弹命中目标

e=False

HadShot=HadShot+1‘后可加入声音,与加分

EndIf

EndIf

.......

Else

注释:可加入声音

e=""‘显示摧毁后的图象

EndIf

EndSub

敌目标发射子弹的方式基本相同,此代码还可扩展至若干发子弹,不再熬诉。

4、加入多媒体特征

可使用API函数mciExecute实现多功能,语法为,先声明

PrivateDeclareFunctionmciExecuteLib""AsLong

然后在欲播放时加入下语句即可

x=mciExecute

还可使用Multimedia、MediaPlayerMediaPlayer多媒体控件,以Multimedia控件为例:在

欲播放时加入下语句

WithMultimedia控件名

.Filename="欲播放的多媒体文件"

.command="Open"

.command="Play"

EndWith

并在Multimedia控件名的Done事件中加入

Multimedia控件名.Command="Close"

Multimedia控件支持视频播放,可制作动画的启动封面,最简单的可在启动时隐藏其它控件,播放一视频文件,然后再关闭此视频文件,显示隐藏了的控件,有兴趣的话大可尝试一番。

此外本程式还包括一菜单,下设Play,Option,Exit三功能,比较简单,读者可自行完成。VB并不是制作游戏的最佳工具,制作这个简单的游戏仅仅是为了介绍VB一些基本的技术,希望读者能从扩展这个游戏中得到乐趣。


发布者:admin,转转请注明出处:http://www.yc00.com/web/1707358647a1495813.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信