小时候经典游戏用VB编地编写实例教程大全全Word文档格式.docx
《小时候经典游戏用VB编地编写实例教程大全全Word文档格式.docx》由会员分享,可在线阅读,更多相关《小时候经典游戏用VB编地编写实例教程大全全Word文档格式.docx(37页珍藏版)》请在冰豆网上搜索。
![小时候经典游戏用VB编地编写实例教程大全全Word文档格式.docx](https://file1.bdocx.com/fileroot1/2022-10/20/341f0a7d-9c70-45b0-a91e-a59fff62e55a/341f0a7d-9c70-45b0-a91e-a59fff62e55a1.gif)
VisualBasic是一个功能强大的工具,它有一大特点就是易学易用,下面我们就通过写一个“趣味撞球〞的程序来初步体会一下。
首先启动VB5,新建一个标准的EXE工程。
此时可以看到,工程包括一个Form1框体。
在Form1边框的右下角按住鼠标左键不放,拖动鼠标把Form1的面积改为适当大小,比如6930×
4320。
再在属性框中把Form1的ScaleMode属性改为3-Pixel,明确我们将以像素为我们的坐标计算单位,把Form1的StartUpPosition属性设为2-CenterScreen,使运行时窗体出现在屏幕正中。
现在,在控件面板上选取mandButton〔命令按钮〕控件,为Form1添加mand1和mand2两个按钮控件,把它们的大小设为121×
25,再在属性框中把mand1的Caption填为“&GO〞,把mand2的Caption填为“&QUIT〞,并把mand1放到框体的右上角,把mand2放到框体的右下角。
然后,在控件面板上选取Timer〔时钟〕控件,为Form1添加一个Timer1时钟控件。
再在属性框中把它的Enabled属性改为False,Interval属性改为50,前一个值表示该时钟控件是否激活,后一个值决定该时钟控件产生Timer事件的间隔时间,我们将用它来控制小球的移动频率。
到此为止,我们已经完成了全部的界面设计工作。
接下来要做的全部工作就是填入程序代码了。
DimBallXAsInteger
DimBallYAsInteger
DimAddXAsInteger
DimAddYAsInteger
DimHitXAsInteger
DimWAsInteger
DimHAsInteger
PrivateSubmand1_Click()
BallX=Int(Rnd
(1)*Form1.ScaleWidth/10)*5+25
BallY=Int((Form1.ScaleHeight)/10)*5
AddX=-5
AddY=-5
Form_Paint
Timer1.Enabled=True
EndSub
PrivateSubmand2_Click()
End
PrivateSubForm_MouseMove(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)
X=X-50
IfX<
15ThenX=15
IfX>
W-105ThenX=W-105
HitX=X
IfTimer1.Enabled=TrueThen
Line(16,H-5)-(W-6,H),&HC0C0C0,BF
Line(HitX,H)-(HitX+100,H-5),0,BF
EndIf
PrivateSubForm_Paint()
Cls
W=Int((ScaleWidth-140)/5)*5
H=Int((ScaleHeight-10)/5)*5
BackColor=&HC0C0C0
Line(10,10)-(15,H),0,BF
Line(W-5,10)-(W,H),0,BF
Line(10,10)-(W,15),0,BF
PrivateSubTimer1_Timer()
Form1.Circle(BallX,BallY),4,&HC0C0C0
BallX=BallX+AddX
BallY=BallY+AddY
Form1.Circle(BallX,BallY),4,0
IfBallX<
=20ThenAddX=-AddX
IfBallY<
=20ThenAddY=-AddY
IfBallX>
=W-10ThenAddX=-AddX
IfBallY>
=H-10Then
IfBallXHitX+100Then
Timer1.Enabled=False
AddY=-AddY
EndSub
一旦程序代码输入完毕,你就可以按F5开始执行它,或是在File菜单里选取Make来生成EXE执行文件了,瞧,小球已经在你的屏幕上蹦来蹦去了。
programfan文章yaozheng
简单的游戏往往更耐玩,就比如伴我度过高考的赛车游戏:
一切都是方块,所谓的赛车也只是四个方块。
第一步,绘制对象:
用函数drawcar()画赛车,drawway(n)画跑道的第n层。
第二步,承受控制:
Form的KeyPreview属性要设为true,在Form_KeyPress函数中通过改变全局变量cx来控制赛车的位置。
第三步,游戏循环:
作为即时游戏,必须要有一个Timer,并在其事件Timer1_Timer()中绘制所有对象和进展碰撞检测。
本例中,绘图局部写在了Timer1_Timer()中,碰撞测试放在了test()中。
……这也是所有即时游戏所共通的框架。
当然,我们往往还是根据具体的设计作一些变通,发挥一些技巧……比如这里设计的跑道是随机产生的的,这就要通过一点技巧以便既让玩家感到挑战,又不至于出现不可逾越的难关……
下面是全部源代码,窗体上只需放个按钮mand1就行了!
ConstD=100'
方格的宽度
ConstBT=3000'
跑道底部的y坐标
Diml1(22)AsInteger'
每层跑道左边有几个方块
Diml2(22)AsInteger'
每层跑道右边有几个方块
DimcxAsSingle'
赛车的在x轴的位置
cx=Width/2-3*D/2
cy=Height-D
drawcar
Fori=1To20
l1(i)=0
l2(i)=0
drawway(i)
Nexti
Timer1.Enabled=True
PrivateSubdrawcar()
Line(cx,BT-100)-Step(3*D,D),BackColor,BF
Line(cx+D,BT-200)-Step(D,D),BackColor,BF'
先擦
Line(cx,BT-100)-Step(3*D,D),RGB(225,0,0),BF
Line(cx+D,BT-200)-Step(D,D),RGB(225,0,0),BF
PrivateSubdrawway(n)
Line(Width/2-3*D/2-2*D,BT-n*D)-Step(7*D,D),BackColor,BF
'
先擦后画
Line(Width/2-3*D/2-2*D,BT-n*D)-Step(l1(n)*D,D),,BF
Line(Width/2-3*D/2+5*D,BT-n*D)-Step(-l2(n)*D,D),,BF
PrivateSubForm_KeyPress(KeyAsciiAsInteger)
SelectCaseKeyAscii
CaseAsc("
a"
),Asc("
A"
)
cx=cx-D
s"
S"
cx=cx+D
EndSelect
Randomize
Fori=1To19
l1(i)=l1(i+1)
l2(i)=l2(i+1)
Do
l1(20)=Int(Rnd*5)
l2(20)=Int(Rnd*5)
LoopUntil((l1(20)+l2(20)<
=4)And(l1(20)-l1(19)<
=1)And_
(l2(20)-l2(19)<
=1)And(l1(19)+l2(20)<
=4)And_
(l1(20)+l2(19)<
=4))'
这里生成新一层跑道,
注意要筛去玩家不可能通过的情况!
drawway(20)
以上画出跑道
test
PrivateSubtest()
If3.5*D-Width/2+cx<
l1
(1)*DThenTimer1.Enabled=False
If3.5*D-Width/2+cx+D<
l1
(2)*DThenTimer1.Enabled=False
If3.5*D-(cx+3*D-Width/2)<
l2
(1)*DThenTimer1.Enabled=False
If3.5*D-(cx+2*D-Width/2)<
l2
(2)*DThenTimer1.Enabled=False
相信不少读者都看过央视的《水浒》吧,林冲、武松、李逵等英雄好汉的音容笑貌仿佛还浮现在我的眼前,那么108将中你最喜欢谁呢?
我做了一个小程序来让电脑猜想你的心思,程序界面如下列图。
为了简化问题,我选择了其中的27将,将他们分成3组,每组9人。
如果你最喜欢其中的一个〔比如史进〕,他在第一组出现了,那么就按下按钮“第一组〞。
然后这27将会重新排列顺序,你再找史进在哪一组,比如发现他在第二组,就按下按钮“第二组〞,画面中的人物次序会再次打乱,再找史进所在组别……最多3次,电脑将会猜出你心中的英雄!
知道了玩法,下面我将介绍程序是如何实现的:
一、猜想的奥妙——推算原理
猜想的原理其实也不复杂,我们来模拟一下猜想的过程大家就清楚了。
程序初始化时是把1~27将随机打乱分别放入PageControl控件的三个选项卡中,每个选项卡放9X图片。
点击一次按钮后其实不是盲目地将顺序打乱,而是进展了筛选,把有用的图片〔就是点选的那组的9X图片〕筛选出来平均分配到PageControl控件的三个选项卡中,再把不需要的图片集中起来平均分配到PageControl控件的三个选项卡中,最后在各个选项卡中把有用的、无用的图片随机打乱再次重新排列显示出来,从而完成猜想。
用表1来说明:
点击按钮的次数选项卡1选项卡2选项卡3
1333
2111
3000
具体讲,当第一次按下按钮时,表示你相中的图片在其中一个选项卡的9X图片内。
于是把这9X图片均分成3份,每份3X,分别送入3个选项卡,其余的图片就不做考虑了。
当第二次按下按钮时,表示你相中的图片在其中一个选项卡的3X图片内,于是把这3X图片均分成3份,每份1X,分别送入3个选项卡,当第三次按下按钮时,表示你相中的图片在其中一个选项卡的