vb程序游戏设计(48页).doc

上传人:1595****071 文档编号:35029093 上传时间:2022-08-20 格式:DOC 页数:48 大小:365KB
返回 下载 相关 举报
vb程序游戏设计(48页).doc_第1页
第1页 / 共48页
vb程序游戏设计(48页).doc_第2页
第2页 / 共48页
点击查看更多>>
资源描述

《vb程序游戏设计(48页).doc》由会员分享,可在线阅读,更多相关《vb程序游戏设计(48页).doc(48页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、-摘要VisualBasic 6.0 是一款可视化的,面向对象和采用事件驱动方式的结构化高级程序设计语言,可用于开发windows 环境下的种类应用程序。它简单易学,效率高,且功能强大,可以与Windows专业开发工具相媲美。在VisualBasic环境下,利用事出有因件驱动的编程机制,新颖易用的可视化工具,使用Windows内部的广泛应用程序接口(API)函数,运用动态链接库(DLL),对象的链接与嵌入(OLE),开放式数据连接(ODBC)等技术,可以高效,可以快速地开发Windows环境不功能强大,图形界面丰富的程序。为了适应信息化时代的需求,各高校对大多数专业都开设了一定的计算机语言课程

2、,有的讲授VisualBasic语言。VisualBasic以其语法简单,可视化设计,功能强大,为许多学校计算机语言课程的首选语言。目前国内各出版了大量的VisualBasic语言教程,它们都具有同样的特点:介绍语言的语法等基本知识,再辅助一些简单的示例。学生通过学习,可能能够考一个不错的成绩,但所掌握的仍然是一些支离破碎的知识,不能将所有的知识融会贯通,遇到具体的程序设计,还是无从下手。这次我要做的是计算器,通过这样程序设计,我们可以学到好多关于VB语言的使方法,熟悉VisualBasic 6.0的运行环境,快速掌握VB语言!小小的计算器是我们学VB初级语言的最好课程。目录一 功能描述31功

3、能32. 实验目的3二 概要设计41.界面设计42.程序运行5三 设计结果6四 程序源代码7五 设计总结40六 参考文献41一 功能描述1功能可以简单进行简单的坦克大战游戏,从而实现坦克战争的模拟。2.实验目的这次我要做的是坦克大战小游戏,通过这样程序设计,我们可以学到好多关于VB语言的使方法,熟悉VisualBasic 6.0的运行环境,快速掌握VB语言! 二 概要设计1.界面设计2.程序运行:三、设计结果生成可执行程序运行结果四、程序源代码:Dim CChange As BooleanDim OldX As LongDim OldY As LongDim WwW As LongDim Ww

4、W2 As LongDim HP1 As LongDim HP2 As LongPrivate Declare Function sndPlaySound Lib winmm Alias sndPlaySoundA (ByVal lpszSoundName As String, ByVal uFlags As Long) As LongPrivate Const SND_ASYNC = &H1Private Declare Function GetAsyncKeyState Lib user32 (ByVal vKey As Long) As IntegerDim L(99999) As er

5、fDim L2(99999) As erfDim W(9999) As erf2Dim w2(9999) As erf2Dim P(9999) As erf2Dim P2(9999) As erf2Private Type Pos X As Integer Y As IntegerEnd TypePrivate Type erf Y As Integer Color As LongEnd TypePrivate Type erf2 Grow As Integer Damage As Integer X As Integer Y As Integer OldX As Integer OldY A

6、s Integer XF As Integer YF As Integer Color As Long type As Long tag As Long active As Boolean Size As Long Life As Integer Grav As IntegerEnd TypeDim Movement As IntegerDim Turn As BooleanPrivate Sub Command1_Click()Turn = TrueEnd SubPrivate Sub Form_Load()Dim Temp As IntegerPicks which layout Temp

7、 = MsgBox(Grass - Dirt - Mars, vbYesNoCancel, ?) If Temp = 7 Then Me.BackColor = RGB(40, 40, 40) End If If Temp = 2 Then Me.BackColor = RGB(100, 0, 0) End If Sets defaultsMovement = 50HP1 = 100HP2 = 100Me.Height = Screen.HeightMe.Width = Screen.WidthTurn = TrueMe.ClsMe.Picture = NothingMe.RefreshMe.

8、AutoRedraw = TrueSets wheel positionsFor i = 0 To 3 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)NextL(0).Y = Me.ScaleHeight / 4 * 3RandomizeMe.Cap

9、tion = Temp (DEBUG)Sets up groundFor i = 1 To Me.Width If Temp = 6 Then L(i).Y = L(i - 1).Y + Int(Rnd * 4) - Int(Rnd * 4) L(i).Color = RGB(0, 160 + Int(Rnd * 25), 0) Else If Temp = 7 Then 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(

10、Rnd * 25) - Int(Rnd * 25), 0) Else If Temp = 2 Then L(i).Y = L(i - 1).Y + Int(Rnd * 8) - Int(Rnd * 8) L(i).Color = RGB(160 + Int(Rnd * 25), 0, 0) End If End If End IfNextFor i = 0 To 10 If Temp = 6 Then ff = Int(Rnd * Screen.Width) Boom Int(ff), 0, 10, 15, 0, 0, 1 End If If Temp = 7 Then ff = Int(Rn

11、d * Screen.Width) Boom Int(ff), 0, 20, 20, 0, 0, 1End If If Temp = 2 Then ff = Int(Rnd * Screen.Width) Boom Int(ff), 0, 30, 30, 0, 0, 1 ff = Int(Rnd * Screen.Width) Boom Int(ff), 0, 30, 30, 0, 0, 1 End IfNextFor i = 2 To Me.Width - 8 Step 1 L(i).Y = (L(i - 1).Y + L(i).Y + L(i + 1).Y + L(i - 2).Y + L

12、(i + 2).Y) / 5NextMe.AutoRedraw = TrueFor i = 2 To Me.Width Me.DrawWidth = 3 Me.Line (i - 2, L(i).Y)-(i - 2, Me.ScaleHeight), L(i).ColorNext Me.Refresh Me.AutoRedraw = False Timer1.Enabled = TrueEnd SubPrivate Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Movement

13、 = 50 Turn = Not Turn If Turn = True Then Shape1.Visible = True Else Shape2.Visible = True End IfLine1.Visible = TruelblStrength.Visible = TrueOldX = W(0).X xOldY = W(0).Y yIf Turn = True Then Line1.X1 = W(0).X + 20 Line1.Y1 = W(0).Y - 30Else Line1.X1 = w2(0).X + 20 Line1.Y1 = w2(0).Y - 30End IfLine

14、1.X2 = XLine1.Y2 = YIf Turn = True Then Shape1.Left = Line1.X2 - Shape1.Width / 2 Shape1.Top = Line1.Y2 - Shape1.Height / 2Else Shape2.Left = Line1.X2 - Shape1.Width / 2 Shape2.Top = Line1.Y2 - Shape1.Height / 2End IfDim Pos1 As PosDim Pos2 As PosPos1.X = Line1.X2Pos2.X = Line1.X1Pos1.Y = Line1.Y2Po

15、s2.Y = Line1.Y1lblStrength.Move Shape1.Left, Shape1.Top - lblStrength.HeightlblStrength.Caption = Strength: & (Abs(Line1.X1 - Line1.X2) + Abs(Line1.Y1 - Line1.Y2) / 2 & | Angle & GetAngle(Pos1, Pos2)End SubPrivate Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)If Bu

16、tton 0 Then Line1.X2 = X Line1.Y2 = YIf 1 = 1 Then (Abs(Line1.X1 - Line1.X2) + Abs(Line1.Y1 - Line1.Y2) / 2) 0 ThenTypeR = 2Label2(z).Caption = Label2(z).Caption - 1ElseOption1.Value = TrueEnd IfEnd IfIf Option3.Value = True ThenIf Label3(z).Caption 0 ThenTypeR = 3Label3(z).Caption = Label3(z).Capti

17、on - 1ElseOption1.Value = TrueEnd IfEnd IfIf Option4.Value = True ThenIf Label4(z).Caption 0 ThenTypeR = 4Label4(z).Caption = Label4(z).Caption - 1ElseOption1.Value = TrueEnd IfEnd IfIf Option5.Value = True ThenIf Label5(z).Caption 0 ThenTypeR = 5Label5(z).Caption = Label5(z).Caption - 1ElseOption1.

18、Value = TrueEnd IfEnd IfIf Option6.Value = True ThenIf Label6(z).Caption 0 ThenTypeR = 6Label6(z).Caption = Label6(z).Caption - 1ElseOption1.Value = TrueEnd IfEnd IfTurn = FalseWwW = 6If Turn = True ThenNewMissle W(0).X + 20, W(0).Y - 10, vbRed, TypeR, (Line1.X2 - Line1.X1) / 10, (Line1.Y2 - Line1.Y

19、1) / 10If TypeR = 4 ThenNewMissle W(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)NewMissle W(0).X + 20, W(0).Y - 10, vbRed, TypeR, (Line1.X2 - Line1.X1) / 10 + Int(Rnd * 10) - Int(Rnd * 10)

20、, (Line1.Y2 - Line1.Y1) / 10 + Int(Rnd * 10) - Int(Rnd * 10)NewMissle W(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)NewMissle W(0).X + 20, W(0).Y - 10, vbRed, TypeR, (Line1.X2 - Line1.X1)

21、/ 10 + Int(Rnd * 10) - Int(Rnd * 10), (Line1.Y2 - Line1.Y1) / 10 + Int(Rnd * 10) - Int(Rnd * 10)End IfElseNewMissle w2(0).X + 20, w2(0).Y - 10, vbRed, TypeR, (Line1.X2 - Line1.X1) / 10, (Line1.Y2 - Line1.Y1) / 10If TypeR = 4 ThenNewMissle w2(0).X + 20, w2(0).Y - 10, vbRed, TypeR, (Line1.X2 - Line1.X

22、1) / 10 + Int(Rnd * 10) - Int(Rnd * 10), (Line1.Y2 - Line1.Y1) / 10 + Int(Rnd * 10) - Int(Rnd * 10)NewMissle w2(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)NewMissle w2(0).X + 20, w2(0).Y

23、 - 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)NewMissle w2(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(

24、Rnd * 10)End IfEnd IfEnd SubPrivate Sub Boom(X As Integer, Y As Integer, Size As Integer, dig As Integer, Dam As Integer, Optional Invert As Integer, Optional NoDraw As Integer)If X w2(0).X And X - Size / 2 W(0).X And X - Size / 2 W(3).X ThenHP1 = HP1 - DamCall sndPlaySound(ByVal App.Path & /hit.wav

25、, SND_ASYNC)End IfMe.DrawWidth = 1For i = 0 To Screen.WidthL2(i).Y = L(i).YNextFor i = 0 To SizeIf Invert = 1 ThenL(X + i).Y = L(X + i).Y - digElseL(X + i).Y = L(X + i).Y + dig - iEnd IfNextFor i = 1 To SizeIf Invert = 1 ThenL(X - i).Y = L(X - i).Y - digElseL(X - i).Y = L(X - i).Y + dig - iEnd IfNex

26、tMe.AutoRedraw = FalseMe.ClsMe.Picture = NothingMe.RefreshMe.AutoRedraw = TrueIf NoDraw 1 ThenFor i = 2 To Me.Width Step 1If L2(i).Y L(i).Y ThenL2(i).Y = (L2(i - 1).Y + L2(i).Y + L2(i + 1).Y + L2(i - 2).Y + L2(i + 2).Y) / 5Me.Line (i - 2, 0)-(i - 2, Me.ScaleHeight), Me.BackColorMe.Line (i - 2, L(i).

27、Y)-(i - 2, Me.ScaleHeight), L(i).ColorEnd IfNextEnd IfMe.AutoRedraw = FalseEnd SubPrivate Sub NewPart(Sizee As Integer, X As Integer, Y As Integer, OX As Integer, OY As Integer, Grow As Integer, Color As Long, XF As Long, YF As Long, Life As Integer, Grav As Integer)For i = 0 To 900If P2(i).active =

28、 False ThenP2(i).active = TrueP2(i).Size = SizeeP2(i).X = XP2(i).Y = YP2(i).XF = XFP2(i).YF = YFP2(i).OldX = OXP2(i).OldY = OYP2(i).Grow = GrowP2(i).Color = ColorP2(i).Life = LifeP2(i).Grav = GravExit ForEnd IfNextEnd SubPrivate Sub Timer1_Timer()If HP1 0 ThenMsgBox Player 2 Wins!HP1 = 0EndEnd IfIf

29、HP2 0 ThenMsgBox Player 1 Wins!HP2 = 0EndEnd IfL(2).Y = 999If hp11.Caption Health: & HP1 Thenhp11.Caption = Health: & HP1End IfIf hp22.Caption Health: & HP2 Thenhp22.Caption = Health: & HP2End IfIf CChange = True ThenMe.RefreshEnd IfCChange = FalseIf HP1 0 ThenIf GetAsyncKeyState(vbKeyRight) ThenMov

30、ement = Movement - 1CChange = TrueIf Movement 0 ThenIf Turn = False ThenFor i = 0 To 3If L(W(3).X - 2).Y - 10 L(W(i).X - 2).Y ThenW(i).Y = L(W(i).X - 2).Y - 1End IfNextElseFor i = 0 To 3If L(w2(3).X - 2).Y - 10 L(w2(i).X - 2).Y Thenw2(i).Y = L(w2(i).X - 2).Y - 1End IfNextEnd IfEnd IfEnd IfIf GetAsyn

31、cKeyState(vbKeyLeft) ThenMovement = Movement - 1CChange = TrueIf Movement 0 ThenIf Turn = False ThenFor i = 0 To 3On Error Resume NextIf L(W(0).X - 2).Y - 8 L(W(i).X - 2).Y ThenW(i).Y = L(W(i).X - 2).Y - 1End IfNextElseFor i = 0 To 3On Error Resume NextIf L(w2(0).X - 2).Y - 8 L(w2(i).X - 2).Y Thenw2

32、(i).Y = L(w2(i).X - 2).Y - 1End IfNextEnd IfEnd IfEnd IfEnd IfFor i = 0 To 3W(i).X = W(i).X + W(i).XF / 2W(i).XF = W(i).XF * 0.5If i = 1 ThenIf W(i).Y - 20 W(0).Y ThenW(i).Y = W(0).Y + 20W(i).YF = 0 W(i).Yf / 2W(i).Y = (W(i).Y + W(i + 1).Y) / 2End IfEnd IfIf i = 2 ThenIf W(i).Y - 20 W(3).Y ThenW(i).

33、Y = W(3).Y + 20W(i).YF = 0 W(i).Yf / 2End IfEnd IfOn Error Resume NextIf W(i).Y + W(i).YF 3 ThenW(i).Y = L(W(i).X - 2).Y - 1W(i).YF = -W(i).YF * 0.5CChange = TrueEnd IfEnd IfMe.DrawWidth = 8Me.Line (W(i).X, W(i).Y)-(W(i).X, W(i).Y), W(i).Colorw2(i).X = w2(i).X + w2(i).XF / 2w2(i).XF = w2(i).XF * 0.5

34、If w2(i).Y + w2(i).YF 3 Thenw2(i).Y = L(w2(i).X - 2).Y - 1w2(i).YF = -w2(i).YF * 0.5End IfEnd IfMe.DrawWidth = 8Me.Line (w2(i).X, w2(i).Y)-(w2(i).X, w2(i).Y), w2(i).ColorNextMe.DrawWidth = 1For i = 0 To 2For z = 0 To 2If HP1 0 ThenMe.Line (W(i).X, W(i).Y)-(W(i + 1).X, W(i + 1).Y), vbBlackEnd IfMe.Li

35、ne (w2(i).X, w2(i).Y)-(w2(i + 1).X, w2(i + 1).Y), vbBlackNextNextIf HP1 0 ThenMe.Line (W(0).X, W(0).Y)-(W(0).X, W(0).Y - 15), vbBlackMe.Line (W(3).X, W(3).Y)-(W(3).X, W(3).Y - 15), vbBlackMe.Line (W(0).X, W(0).Y - 5)-(W(3).X, W(3).Y - 5), vbBlackEnd IfMe.Line (w2(0).X, w2(0).Y)-(w2(0).X, w2(0).Y - 15), vbBlackMe.Line (w2(3).X, w2(3).Y)-(w2(3).X, w2(3

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 单元课程

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com