大家好,如果您还对VB做游戏排行榜不太了解,没有关系,今天就由本站为大家分享VB做游戏排行榜的知识,包括VB可以做什么游戏的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!
1、'定义运动区域4个禁区的枚举值
2、'定义蛇头及身体初始化数枚举值
3、Private Const SNAKEWIDTH As Integer= 100
4、 Me.lblTitle="BS贪食蛇—(版本"& App.Major&"."& App.Minor&"."& App.Revision&")"
5、 Me.Caption= Me.lblTitle.Caption
6、'该过程用于使窗体恢复原始大小
7、 If Me.WindowState<> 1 Then
8、 Me.Height= 6405'窗体高度为 6405缇
9、 Me.Width= 8535'窗体宽度为 8535缇
10、 Me.Left=(Screen.Width- Width)\ 2
11、 Me.Top=(Screen.Height- Height)\ 2
12、'该过程用于重新开始开始游戏
13、Private Sub cmdGameStart_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
14、 msg= MsgBox("您确认要重新开始游戏吗?", 4+ 32,"BS贪食蛇")
15、 If msg= 6 Then Call m_subGameInitialize
16、Private Sub chkPause_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
17、 If Me.chkPause.Caption="暂停游戏(&P)" Then
18、 Me.tmrSnakeMove.Enabled= False
19、 Me.tmrGameTime.Enabled= False
20、 Me.picMoveArea.Enabled= False
21、 Me.chkPause.Caption="继续游戏(&R)"
22、 Me.tmrSnakeMove.Enabled= True
23、 Me.lblPauseLab.Visible= False
24、 Me.chkPause.Caption="暂停游戏(&P)"
25、Private Sub cmdGameRules_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
26、 MsgBox" BS贪食蛇:一个规则最简单的趣味游戏,您将用键盘"& Chr(13)& _
27、"上的4个方向键来控制蛇的运动方向。在运动过程中蛇"& Chr(13)& _
28、"不能后退,蛇的头部也不能接触到运动区域的边线以外"& Chr(13)& _
29、"和蛇自己的身体,否则就游戏失败。在吃掉随机出现的"& Chr(13)& _
30、"果子后,蛇的身体会变长,越长难度越大。祝您好运!!", 0+ 64,"游戏规则"
31、'该过程用于显示游戏开发信息
32、Private Sub cmdAbout_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
33、 MsgBox"BS贪食蛇"&"(V-"& App.Major&"."& App.Minor&"版本)"& Chr(13)& Chr(13)& _
34、"由PigheadPrince设计制作"& Chr(13)& _
35、"CopyRight(C)2002,BestSoft.TCG", 0,"关于本游戏"
36、Private Sub cmdExit_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
37、 msg= MsgBox("您要退出本游戏吗?", 4+ 32,"BS贪食蛇")
38、 Me.chkWindowButton(2).Value= 0
39、'该过程用于拖动窗体_(点击图标)
40、Private Sub imgWindowTop_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
41、 SendMessage Me.hwnd, WM_SYSCOMMAND, SC_MOVE, 0
42、'该共用过程用于处理窗体控制按钮组的相关操作_(锁定、最小化、退出)
43、Private Sub chkWindowButton_MouseUp(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
44、 If Button<> 1 Then Exit Sub
45、 If Me.chkWindowButton(0).Value= 1 Then
46、 Me.imgWindowTop.BorderStyle= 0
47、 Me.imgWindowTop.Enabled= False
48、 Me.imgWindowTop.BorderStyle= 1
49、 Me.imgWindowTop.Enabled= True
50、 Me.chkWindowButton(1).Value= 0
51、 Me.Caption="BS贪食蛇—(V-"& App.Major&"."& App.Minor&"版本)"
52、 msg= MsgBox("您要退出本游戏吗?", 4+ 32,"BS贪食蛇")
53、 Me.chkWindowButton(2).Value= 0
54、'该过程用于设置蛇运动速度的快慢
55、Private Sub hsbGameSpeed_Change()
56、 Me.tmrSnakeMove.Interval= Me.hsbGameSpeed.Value
57、'该过程用于通过键盘的方向键改变蛇的运动方向
58、Private Sub picMoveArea_KeyDown(KeyCode As Integer, Shift As Integer)
59、 If KeyCode= D_DOWN Then Exit Sub
60、 If KeyCode= D_UP Then Exit Sub
61、 If KeyCode= D_RIGHT Then Exit Sub
62、 If KeyCode= D_LEFT Then Exit Sub
63、'该计时循环过程用于计算游戏耗费的秒数并显示
64、Private Sub tmrGameTime_Timer()
65、 g_lngGameTime= g_lngGameTime+ 1
66、 Me.lblGameTime.Caption= g_lngGameTime&"秒"
67、'该计时循环过程用于控制蛇的行动轨迹
68、Private Sub tmrSnakeMove_Timer()
69、 Dim lngSnakeX As Long, lngSnakeY As Long, lngSnakeColor As Long
70、 Dim lngPointX As Long, lngPointY As Long, lngPointColor As Long
71、'确认蛇头的运动方向并获取新的位置
72、 g_udtSnake(SNAKEONE).Snake_CurX= g_udtSnake(SNAKEONE).Snake_OldX
73、 g_udtSnake(SNAKEONE).Snake_CurY= g_udtSnake(SNAKEONE).Snake_OldY
74、 g_udtSnake(SNAKEONE).Snake_CurY= g_udtSnake(SNAKEONE).Snake_CurY- SNAKEWIDTH
75、 g_udtSnake(SNAKEONE).Snake_CurX= g_udtSnake(SNAKEONE).Snake_OldX
76、 g_udtSnake(SNAKEONE).Snake_CurY= g_udtSnake(SNAKEONE).Snake_OldY
77、 g_udtSnake(SNAKEONE).Snake_CurY= g_udtSnake(SNAKEONE).Snake_CurY+ SNAKEWIDTH
78、 g_udtSnake(SNAKEONE).Snake_CurX= g_udtSnake(SNAKEONE).Snake_OldX
79、 g_udtSnake(SNAKEONE).Snake_CurX= g_udtSnake(SNAKEONE).Snake_CurX- SNAKEWIDTH
80、 g_udtSnake(SNAKEONE).Snake_CurY= g_udtSnake(SNAKEONE).Snake_OldY
81、 g_udtSnake(SNAKEONE).Snake_CurX= g_udtSnake(SNAKEONE).Snake_OldX
82、 g_udtSnake(SNAKEONE).Snake_CurX= g_udtSnake(SNAKEONE).Snake_CurX+ SNAKEWIDTH
83、 g_udtSnake(SNAKEONE).Snake_CurY= g_udtSnake(SNAKEONE).Snake_OldY
84、 lngSnakeX= g_udtSnake(SNAKEONE).Snake_CurX
85、 lngSnakeY= g_udtSnake(SNAKEONE).Snake_CurY
86、 lngSnakeColor= g_udtSnake(SNAKEONE).Snake_Color
87、 Me.picMoveArea.PSet(lngSnakeX, lngSnakeY), lngSnakeColor
88、 g_udtSnake(i).Snake_CurX= g_udtSnake(i- 1).Snake_OldX
89、 g_udtSnake(i).Snake_CurY= g_udtSnake(i- 1).Snake_OldY
90、 lngSnakeX= g_udtSnake(i).Snake_CurX
91、 lngSnakeY= g_udtSnake(i).Snake_CurY
92、 lngSnakeColor= g_udtSnake(i).Snake_Color
93、 Me.picMoveArea.PSet(lngSnakeX, lngSnakeY), lngSnakeColor
94、 g_udtSnake(j).Snake_OldX= g_udtSnake(j).Snake_CurX
95、 g_udtSnake(j).Snake_OldY= g_udtSnake(j).Snake_CurY
96、'判断蛇在移动中是否到了禁区而导致游戏失败
97、 If m_funMoveForbiddenZone(g_udtSnake(SNAKEONE).Snake_CurX, g_udtSnake(SNAKEONE).Snake_CurY) Then
98、 MsgBox"您的蛇移动到了禁区,游戏失败!", 0+ 16,"BS贪食蛇"
99、 Me.tmrSnakeMove.Enabled= False
100、 Me.tmrGameTime.Enabled= False
101、 Me.picMoveArea.Visible= False
102、'判断蛇在移动中是否碰到了自己的身体而导致游戏失败
103、 If m_funTouchSnakeBody(g_udtSnake(SNAKEONE).Snake_CurX, g_udtSnake(SNAKEONE).Snake_CurY) Then
104、 MsgBox"您的蛇在移动中碰到了自己的身体,游戏失败!", 0+ 16,"BS贪食蛇"
105、 Me.tmrSnakeMove.Enabled= False
106、 Me.tmrGameTime.Enabled= False
107、 Me.picMoveArea.Visible= False
108、 If m_funEatPoint(g_udtSnake(SNAKEONE).Snake_CurX, g_udtSnake(SNAKEONE).Snake_CurY) Then
109、'累加玩家的得分并刷新得分显示
110、 g_intPlayerScore= g_intPlayerScore+ 1
111、 Me.lblYourScore.Caption= g_intPlayerScore&"分"
112、 Call m_subAddSnake'加长蛇的身体
113、 Call m_subGetPoint'获取下一个果子的位置和颜色
114、 lngPointX= g_udtPoint.Point_X
115、 lngPointY= g_udtPoint.Point_Y
116、 lngPointColor= g_udtPoint.Point_Color
117、 Me.picMoveArea.PSet(lngPointX, lngPointY), lngPointColor
118、'该私有子过程用于初始化游戏
119、Private Sub m_subGameInitialize()
120、 Erase g_udtSnake'清空蛇的结构数组
121、 g_intPlayerScore= 0'清空玩家的得分
122、 g_lngGameTime= 0'清空游戏耗费的秒数
123、 g_intDirection= D_DOWN'设定蛇的初始运动方向为下
124、 g_intSnakeLength= 4'设定蛇的初始长度
125、 ReDim g_udtSnake(1 To g_intSnakeLength)'重新定义蛇的长度
126、 Me.lblYourScore.Caption= g_intPlayerScore&"分"
127、 Me.lblGameTime.Caption= g_lngGameTime&"秒"
128、 Me.tmrSnakeMove.Interval= Me.hsbGameSpeed.Value
129、 Me.tmrSnakeMove.Enabled= True
130、 Call m_subGetPoint'获取第一个果子的位置和颜色
131、'该私有子过程用于返回获取的果子的位置和颜色信息
132、 Dim lngRedValue As Long, lngGreenValue As Long, lngBlueValue As Long
133、 Dim lngPointX As Long, lngPointY As Long, lngPointColor As Long
134、 lngRedValue= Int((255- 0+ 1)* Rnd+ 0)
135、 lngGreenValue= Int((255- 0+ 1)* Rnd+ 0)
136、 lngBlueValue= Int((255- 0+ 1)* Rnd+ 0)
137、 lngPointColor= RGB(lngRedValue, lngGreenValue, lngBlueValue)
138、 lngPointX= Int((FZ_LEFT- FZ_RIGHT+ 1)* Rnd+ FZ_RIGHT)
139、 lngPointY= Int((FZ_TOP- FZ_BOTTOM+ 1)* Rnd+ FZ_BOTTOM)
140、 Me.PSet(lngPointX, lngPointY), lngPointColor
141、'该私有子过程用于加长蛇的身体
142、 Dim lngSnakeX As Long, lngSnakeY As Long, lngSnakeColor As Long
143、'备份蛇原先身体的数据并使蛇的身体加长
144、 ReDim udtSnakeTemp(1 To g_intSnakeLength)
145、.Snake_CurX= g_udtSnake(k).Snake_CurX
146、.Snake_CurY= g_udtSnake(k).Snake_CurY
147、.Snake_OldX= g_udtSnake(k).Snake_OldX
148、.Snake_OldY= g_udtSnake(k).Snake_OldY
149、.Snake_Color= g_udtSnake(k).Snake_Color
150、 g_intSnakeLength= g_intSnakeLength+ 1
151、 ReDim g_udtSnake(g_intSnakeLength)
152、'将备份蛇身体的数据返回到加长的蛇身数组中
153、 For l= 1 To g_intSnakeLength- 1
154、.Snake_CurX= udtSnakeTemp(l).Snake_CurX
155、.Snake_CurY= udtSnakeTemp(l).Snake_CurY
156、.Snake_OldX= udtSnakeTemp(l).Snake_OldX
157、.Snake_OldY= udtSnakeTemp(l).Snake_OldY
158、.Snake_Color= udtSnakeTemp(l).Snake_Color
159、 With g_udtSnake(g_intSnakeLength)
160、.Snake_OldX= g_udtSnake(g_intSnakeLength- 1).Snake_CurX+ SNAKEWIDTH
161、.Snake_OldY= g_udtSnake(g_intSnakeLength- 1).Snake_CurY
162、.Snake_Color= g_udtPoint.Point_Color
163、 With g_udtSnake(g_intSnakeLength)
164、.Snake_OldX= g_udtSnake(g_intSnakeLength- 1).Snake_CurX- SNAKEWIDTH
165、.Snake_OldY= g_udtSnake(g_intSnakeLength- 1).Snake_CurY
166、.Snake_Color= g_udtPoint.Point_Color
167、 With g_udtSnake(g_intSnakeLength)
168、.Snake_OldX= g_udtSnake(g_intSnakeLength- 1).Snake_CurX
169、.Snake_OldY= g_udtSnake(g_intSnakeLength- 1).Snake_CurY+ SNAKEWIDTH
170、.Snake_Color= g_udtPoint.Point_Color
171、 With g_udtSnake(g_intSnakeLength)
172、.Snake_OldX= g_udtSnake(g_intSnakeLength- 1).Snake_CurX
173、.Snake_OldY= g_udtSnake(g_intSnakeLength- 1).Snake_CurY- SNAKEWIDTH
174、.Snake_Color= g_udtPoint.Point_Color
175、 lngSnakeX= g_udtSnake(g_intSnakeLength).Snake_CurX
176、 lngSnakeY= g_udtSnake(g_intSnakeLength).Snake_CurY
177、 lngSnakeColor= g_udtSnake(g_intSnakeLength).Snake_Color
178、 Me.picMoveArea.PSet(lngSnakeX, lngSnakeY), lngSnakeColor
179、'该自定义函数用于返回运动的蛇是否到达禁区而导致游戏失败
180、Private Function m_funMoveForbiddenZone(SnakeX As Long, SnakeY As Long) As Boolean
181、 If(SnakeX>= FZ_LEFT And SnakeX<= FZ_RIGHT) And(SnakeY>= FZ_TOP And SnakeY<= FZ_BOTTOM) Then
182、 m_funMoveForbiddenZone= False
183、'该自定义函数用于返回运动的蛇是否碰到自己的身体而导致游戏失败
184、Private Function m_funTouchSnakeBody(SnakeX As Long, SnakeY As Long) As Boolean
185、 If SnakeX= g_udtSnake(m).Snake_CurX And SnakeY= g_udtSnake(m).Snake_CurY Then
186、'该自定义函数用于返回运动的蛇是否吃到了果子
187、Private Function m_funEatPoint(SnakeX As Long, SnakeY As Long) As Boolean
188、 If Abs(SnakeX- g_udtPoint.Point_X)<= SNAKEWIDTH And Abs(SnakeY- g_udtPoint.Point_Y)<= SNAKEWIDTH Then
189、'(API函数调用过程_用以实现无标题窗体的拖动操作)---------------------------------
190、'RleaseCapture函数用以释放鼠标捕获
191、 Public Declare Function ReleaseCapture Lib"user32"() As Long
192、'SendMessage函数用作向Windows发送移动窗体的消息
193、 Public Declare Function SendMessage Lib"user32" Alias"SendMessageA"(ByVal hwnd As _
194、 Long, ByVal wMsg As Long, ByVal wParam As Long, IParam As Any) As Long
195、 Public Const WM_SYSCOMMAND=&H112'声明向Windows发送消息的常量
196、 Public Const SC_MOVE=&HF012'声明控制移动窗体常量
197、'(游戏变量声明部分)-------------------------------------------------------------
198、 Public g_intSnakeLength As Integer
199、 Public g_lngSnakeColor As Long
200、 Public g_intDirection As Integer
201、 Public g_intPlayerScore As Integer
理论上讲,VB可以做任何游戏,游戏开发不是一言两语能说明白的,在这里可以给你简单的说一下,具体开发方法请仔细百度。
开发游戏你需要解决四个技术问题:
1:图像绘制。2:声音播放。3:用户输入控制。4:文件的读写。
其中2、3、4基本可以用VB的基础语言功能和操作系统提供的API解决,唯独绘图需要引擎来解决。除非是很小的小游戏,否则你不太可能用系统控件去做一个游戏,你也不能天才到啥都自己实现出来,你就算有那么天才,也没那个时间精力,也没有必要。做游戏用的绘图引擎一般是GDI或DIRECTX或OPENGL。VB6可以使用GDI或DIRECTX7、8,VB.net可以使用DIRECTX9以上的版本。其中GDI可以用来开发2D游戏,DIRECTX可以用于开发任何类型游戏,DIRECTX不但可以用来绘图,其还包含解决游戏中联网、用户输入控制、声音播放的专用模块推荐使用。
其实做3D游戏大部分都是代码,3Dmax只是做模型的。用程序贴上材质。+759812246。这里推荐下truevision3d 3D引擎。有很多中文教程贴上最简单的源码:忘了说,用vb6.0
Private TV As TVEngine'声明TV3D引擎对象
Private Scene As TVScene'声明场景TVScene对象
Private Mesh As TVMesh'声明网格TVMesh对象
Private InputE As TVInputEngine'声明输入(键盘、鼠标)对象
Set TV= New TVEngine'定义TV对象为TVEngine类的一个实例
TV.Init3DWindowedMode Form1.hWnd'调用TV3D的一个函数Init3DWindowedMode,初始化3D窗口。参数是当前窗口的句柄
Set InputE= New TVInputEngine'定义InputE对象为TVInputEngine类的一个实例
Set Scene= New TVScene'定义Scene对象为TVScene的一个实例
Set Mesh= Scene.CreateMeshBuilder'定义Mesh对象为TVMesh的一个实例,用Scene的CreateMeshBuilder方法生成
Scene.SetSceneBackGround 1, 0, 0'设置背景颜色
Mesh.CreateTeapot'建立茶壶模型
Mesh.SetPosition 0, 0, 10'Z越小,图像越大
DoEvents'用DoEvents函数,让Windows空出来作别的事
TV.Clear'清除缓冲区的内容
Mesh.Render'渲染Mesh(3D物件)
TV.RenderToScreen'把缓冲区的内容渲染到屏幕上
Loop Until InputE.IsKeyPressed(TV_KEY_ESCAPE)'直到用户按下了Esc,游戏终止运行
Set InputE= Nothing'释放InputE对象所占用的内存空间
Set TV= Nothing'释放TV对象所占用的内存空间
好了,文章到这里就结束啦,如果本次分享的VB做游戏排行榜和VB可以做什么游戏问题对您有所帮助,还望关注下本站哦!