vb程序游戏设计.docx
《vb程序游戏设计.docx》由会员分享,可在线阅读,更多相关《vb程序游戏设计.docx(31页珍藏版)》请在冰豆网上搜索。
vb程序游戏设计
摘要
VisualBasic6.0是一款可视化的,面向对象和采用事件驱动方式的结构化高级程序设计语言,可用于开发windows环境下的种类应用程序。
它简单易学,效率高,且功能强大,可以与Windows专业开发工具相媲美。
在VisualBasic环境下,利用事出有因件驱动的编程机制,新颖易用的可视化工具,使用Windows部的广泛应用程序接口(API)函数,运用动态库(DLL),对象的与嵌入(OLE),开放式数据连接(ODBC)等技术,可以高效,可以快速地开发Windows环境不功能强大,图形界面丰富的程序。
为了适应信息化时代的需求,各高校对大多数专业都开设了一定的计算机语言课程,有的讲授VisualBasic语言。
VisualBasic以其语法简单,可视化设计,功能强大,为许多学校计算机语言课程的首选语言。
目前国各出版了大量的VisualBasic语言教程,它们都具有同样的特点:
介绍语言的语法等基本知识,再辅助一些简单的示例。
学生通过学习,可能能够考一个不错的成绩,但所掌握的仍然是一些支离破碎的知识,不能将所有的知识融会贯通,遇到具体的程序设计,还是无从下手。
这次我要做的是计算器,通过这样程序设计,我们可以学到好多关于VB语言的使方法,熟悉VisualBasic6.0的运行环境,快速掌握VB语言!
小小的计算器是我们学VB初级语言的最好课程 。
一功能描述3
1.功能3
2.实验目的3
二概要设计4
1.界面设计4
2.程序运行5
三设计结果6
四程序源代码7
五设计总结40
六参考文献41
一功能描述
1.功能
可以简单进行简单的坦克大战游戏,从而实现坦克战争的模拟。
2.实验目的
这次我要做的是坦克大战小游戏,通过这样程序设计,我们可以学到好多关于VB语言的使方法,熟悉VisualBasic6.0的运行环境,快速掌握VB语言!
二概要设计
1.界面设计
2.程序运行:
三、设计结果
生成可执行程序运行结果
四、程序源代码:
DimCChangeAsBoolean
DimOldXAsLong
DimOldYAsLong
DimWwWAsLong
DimWwW2AsLong
DimHP1AsLong
DimHP2AsLong
PrivateDeclareFunctionsndPlaySoundLib"winmm"Alias"sndPlaySoundA"(ByVallpszSoundNameAsString,ByValuFlagsAsLong)AsLong
PrivateConstSND_ASYNC=&H1
PrivateDeclareFunctionGetAsyncKeyStateLib"user32"(ByValvKeyAsLong)AsInteger
DimL(99999)Aserf
DimL2(99999)Aserf
DimW(9999)Aserf2
Dimw2(9999)Aserf2
DimP(9999)Aserf2
DimP2(9999)Aserf2
PrivateTypePos
XAsInteger
YAsInteger
EndType
PrivateTypeerf
YAsInteger
ColorAsLong
EndType
PrivateTypeerf2
GrowAsInteger
DamageAsInteger
XAsInteger
YAsInteger
OldXAsInteger
OldYAsInteger
XFAsInteger
YFAsInteger
ColorAsLong
typeAsLong
tagAsLong
activeAsBoolean
SizeAsLong
LifeAsInteger
GravAsInteger
EndType
DimMovementAsInteger
DimTurnAsBoolean
PrivateSubCommand1_Click()
Turn=True
EndSub
PrivateSubForm_Load()
DimTempAsInteger
'Pickswhichlayout
Temp=MsgBox("Grass-Dirt-Mars",vbYesNoCancel,"?
")
IfTemp=7Then
Me.BackColor=RGB(40,40,40)
EndIf
IfTemp=2Then
Me.BackColor=RGB(100,0,0)
EndIf
'Setsdefaults
Movement=50
HP1=100
HP2=100
Me.Height=Screen.Height
Me.Width=Screen.Width
Turn=True
Me.Cls
Me.Picture=Nothing
Me.Refresh
Me.AutoRedraw=True
'Setswheelpositions
Fori=0To3
W(i).XF=0
W(i).YF=0
W(i).X=i*10+100
W(i).Y=2
W(i).Color=RGB(125,125,125)
w2(i).XF=0
w2(i).YF=0
w2(i).X=i*10+Me.ScaleWidth-200
w2(i).Y=2
w2(i).Color=RGB(125,125,125)
Next
L(0).Y=Me.ScaleHeight/4*3
Randomize
'Me.Caption=Temp(DEBUG)
'Setsupground
Fori=1ToMe.Width
IfTemp=6Then
L(i).Y=L(i-1).Y+Int(Rnd*4)-Int(Rnd*4)
L(i).Color=RGB(0,160+Int(Rnd*25),0)
Else
IfTemp=7Then
L(i).Y=L(i-1).Y+Int(Rnd*6)-Int(Rnd*6)
L(i).Color=RGB(30+Int(Rnd*25)-Int(Rnd*25),30+Int(Rnd*25)-Int(Rnd*25),0)
Else
IfTemp=2Then
L(i).Y=L(i-1).Y+Int(Rnd*8)-Int(Rnd*8)
L(i).Color=RGB(160+Int(Rnd*25),0,0)
EndIf
EndIf
EndIf
Next
Fori=0To10
IfTemp=6Then
ff=Int(Rnd*Screen.Width)
BoomInt(ff),0,10,15,0,0,1
EndIf
IfTemp=7Then
ff=Int(Rnd*Screen.Width)
BoomInt(ff),0,20,20,0,0,1
EndIf
IfTemp=2Then
ff=Int(Rnd*Screen.Width)
BoomInt(ff),0,30,30,0,0,1
ff=Int(Rnd*Screen.Width)
BoomInt(ff),0,30,30,0,0,1
EndIf
Next
Fori=2ToMe.Width-8Step1
L(i).Y=(L(i-1).Y+L(i).Y+L(i+1).Y+L(i-2).Y+L(i+2).Y)/5
Next
Me.AutoRedraw=True
Fori=2ToMe.Width
Me.DrawWidth=3
Me.Line(i-2,L(i).Y)-(i-2,Me.ScaleHeight),L(i).Color
Next
Me.Refresh
Me.AutoRedraw=False
Timer1.Enabled=True
EndSub
PrivateSubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)
Movement=50
Turn=NotTurn
IfTurn=TrueThen
Shape1.Visible=True
Else
Shape2.Visible=True
EndIf
Line1.Visible=True
lblStrength.Visible=True
OldX=W(0).X'x
OldY=W(0).Y'y
IfTurn=TrueThen
Line1.X1=W(0).X+20
Line1.Y1=W(0).Y-30
Else
Line1.X1=w2(0).X+20
Line1.Y1=w2(0).Y-30
EndIf
Line1.X2=X
Line1.Y2=Y
IfTurn=TrueThen
Shape1.Left=Line1.X2-Shape1.Width/2
Shape1.Top=Line1.Y2-Shape1.Height/2
Else
Shape2.Left=Line1.X2-Shape1.Width/2
Shape2.Top=Line1.Y2-Shape1.Height/2
EndIf
DimPos1AsPos
DimPos2AsPos
Pos1.X=Line1.X2
Pos2.X=Line1.X1
Pos1.Y=Line1.Y2
Pos2.Y=Line1.Y1
lblStrength.MoveShape1.Left,Shape1.Top-lblStrength.Height
lblStrength.Caption="Strength:
"&((Abs(Line1.X1-Line1.X2)+Abs(Line1.Y1-Line1.Y2))/2&"|Angle"&GetAngle(Pos1,Pos2))
EndSub
PrivateSubForm_MouseMove(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)
IfButton<>0Then
Line1.X2=X
Line1.Y2=Y
If1=1Then'((Abs(Line1.X1-Line1.X2)+Abs(Line1.Y1-Line1.Y2))/2)<150Then
IfTurn=TrueThen
Line1.X1=W(0).X+20
Line1.Y1=W(0).Y-30
Else
Line1.X1=w2(0).X+20
Line1.Y1=w2(0).Y-30
EndIf
Line1.X2=X
Line1.Y2=Y
'Shape1.Left=Line1.X2-Shape1.Width/2
'Shape1.Top=Line1.Y2-Shape1.Height/2
IfTurn=TrueThen
Shape1.Left=Line1.X2-Shape1.Width/2
Shape1.Top=Line1.Y2-Shape1.Height/2
Else
Shape2.Left=Line1.X2-Shape1.Width/2
Shape2.Top=Line1.Y2-Shape1.Height/2
EndIf
IfTurn=TrueThen
lblStrength.MoveShape1.Left,Shape1.Top-lblStrength.Height
Else
lblStrength.MoveShape2.Left,Shape2.Top-lblStrength.Height
EndIf
DimPos1AsPos
DimPos2AsPos
Pos1.X=Line1.X2
Pos2.X=Line1.X1
Pos1.Y=Line1.Y2
Pos2.Y=Line1.Y1
lblStrength.Caption="Strength:
"&((Abs(Line1.X1-Line1.X2)+Abs(Line1.Y1-Line1.Y2))/2&"|Angle"&GetAngle(Pos1,Pos2))
EndIf
EndIf
EndSub
PrivateSubNewMissle(XAsInteger,YAsInteger,ColorAsLong,TypeeAsInteger,XFAsInteger,YFAsInteger)
'Createsanewmissle
Fori=0To99
IfP(i).active=FalseThen
P(i).X=X
P(i).Y=Y
P(i).XF=XF
P(i).YF=YF
P(i).type=Typee
P(i).Color=Color
P(i).active=True
IfTypee=1Then
P(i).Damage=10
EndIf
IfTypee=2Then
P(i).Damage=30
EndIf
IfTypee=3Then
P(i).Damage=10
EndIf
IfTypee=4Then
P(i).Damage=10
EndIf
IfTypee=5Then
P(i).Damage=5
EndIf
IfTypee=6Then
P(i).Damage=20
EndIf
ExitSub
EndIf
Next
EndSub
PrivateSubForm_MouseUp(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)
CallsndPlaySound(ByValApp.Path&"/boom.wav",SND_ASYNC)
DimTypeRAsInteger
TypeR=1
IfTurn=TrueThen
'Zorderswhichammoplayerthing;)
z=0
Label2(0).ZOrder0
Label3(0).ZOrder0
Label4(0).ZOrder0
Label5(0).ZOrder0
Label6(0).ZOrder0
Else
z=1
Label2
(1).ZOrder0
Label3
(1).ZOrder0
Label4
(1).ZOrder0
Label5
(1).ZOrder0
Label6
(1).ZOrder0
EndIf
Line1.Visible=False
lblStrength.Visible=False
IfOption2.Value=TrueThen
IfLabel2(z).Caption>0Then
TypeR=2
Label2(z).Caption=Label2(z).Caption-1
Else
Option1.Value=True
EndIf
EndIf
IfOption3.Value=TrueThen
IfLabel3(z).Caption>0Then
TypeR=3
Label3(z).Caption=Label3(z).Caption-1
Else
Option1.Value=True
EndIf
EndIf
IfOption4.Value=TrueThen
IfLabel4(z).Caption>0Then
TypeR=4
Label4(z).Caption=Label4(z).Caption-1
Else
Option1.Value=True
EndIf
EndIf
IfOption5.Value=TrueThen
IfLabel5(z).Caption>0Then
TypeR=5
Label5(z).Caption=Label5(z).Caption-1
Else
Option1.Value=True
EndIf
EndIf
IfOption6.Value=TrueThen
IfLabel6(z).Caption>0Then
TypeR=6
Label6(z).Caption=Label6(z).Caption-1
Else
Option1.Value=True
EndIf
EndIf
'Turn=False
WwW=6
IfTurn=TrueThen
NewMissleW(0).X+20,W(0).Y-10,vbRed,TypeR,(Line1.X2-Line1.X1)/10,(Line1.Y2-Line1.Y1)/10
IfTypeR=4Then
NewMissleW(0).X+20,W(0).Y-10,vbRed,TypeR,(Line1.X2-Line1.X1)/10+Int(Rnd*10)-Int(Rnd*10),(Line1.Y2-Line1.Y1)/10+Int(Rnd*10)-Int(Rnd*10)
NewMissleW(0).X+20,W(0).Y-10,vbRed,TypeR,(Line1.X2-Line1.X1)/10+Int(Rnd*10)-Int(Rnd*10),(Line1.Y2-Line1.Y1)/10+Int(Rnd*10)-Int(Rnd*10)
NewMissleW(0).X+20,W(0).Y-10,vbRed,TypeR,(Line1.X2-Line1.X1)/10+Int(Rnd*10)-Int(Rnd*10),(Line1.Y2-Line1.Y1)/10+Int(Rnd*10)-Int(Rnd*10)
NewMissleW(0).X+20,W(0).Y-10,vbRed,TypeR,(Line1.X2-Line1.X1)/10+Int(Rnd*10)-Int(Rnd*10),(Line1.Y2-Line1.Y1)/10+Int(Rnd*10)-Int(Rnd*10)
EndIf
Else
NewMisslew2(0).X+20,w2(0).Y-10,vbRed,TypeR,(Line1.X2-Line1.X1)/10,(Line1.Y2-Line1.Y1)/10
IfTypeR=4Then
NewMisslew2(0).X+20,w2(0).Y-10,vbRed,TypeR,(Line1.X2-Line1.X1)/10+Int(Rnd*10)-Int(Rnd*10),(Line1.Y2-Line1.Y1)/10+Int(Rnd*10)-Int(Rnd*10)
NewMisslew2(0).X+20,w2(0).Y-10,vbRed,TypeR,(Line1.X2-Line1.X1)/10+Int(Rnd*10)-Int(Rnd*10),(Line1.Y2-Line1.Y1)/10+Int(Rnd*10)-Int(Rnd*10)
NewMisslew2(0).X+20,w2(0).Y-10,vbRed,TypeR,(Line1.X2-Line1.X1)/10+Int(Rnd*10)-Int(Rnd*10),(Line1.Y2-Line1.Y1)/10+Int(Rnd*10)-Int(Rnd*10)
NewMisslew2(0).X+20,w2(0).Y-10,vbRed,TypeR,(Line1.X2-Line1.X1)/10+Int(Rnd*10)-Int(Rnd*10),(Line1.Y2-Line1.Y1)/10+Int(Rnd*10)-Int(Rnd*10)
EndIf
EndIf
EndSub
PrivateSubBoom(XAsInteger,YAsInteger,SizeAsInteger,digAsInteger,DamAsInteger,OptionalInvertAsInteger,OptionalNoDrawAsInteger)
IfX<1ThenExitSub
CallsndPlaySound(ByValApp.Path&"/boom2.wav",SND_ASYNC)
OnErrorResumeNext
IfX+Size/2>w2(0).XAndX-Size/2HP2=HP2-Dam
CallsndPlaySound(ByValApp.Path&"/hit.wav",SND_AS