
正文
vb.net做游戏 vbs小游戏
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
vb.net编写的贪吃蛇游戏,带代码的
需用VB实现,代码如下
'定义蛇的运动速度枚举值
Private Enum tpsSpeed
QUICKLY = 0
SLOWLY = 1
End Enum
'定义蛇的运动方向枚举值
Private Enum tpsDirection
D_UP = 38
D_DOWN = 40
D_LEFT = 37
D_RIGHT = 39
End Enum
'定义运动区域4个禁区的枚举值
Private Enum tpsForbiddenZone
FZ_TOP = 30
FZ_BOTTOM = 5330
FZ_LEFT = 30
FZ_RIGHT = 5730
End Enum
'定义蛇头及身体初始化数枚举值
Private Enum tpsSnake
SNAKEONE = 1
SNAKETWO = 2
SNAKETHREE = 3
SNAKEFOUR = 4
End Enum
'定义蛇宽度的常量
Private Const SNAKEWIDTH As Integer = 100
'该过程用于显示游戏信息
Private Sub Form_Load()
Me.Show
Me.lblTitle = "BS贪食蛇 — (版本 " App.Major "." App.Minor "." App.Revision ")"
Me.Caption = Me.lblTitle.Caption
frmSplash.Show 1
End Sub
'该过程用于使窗体恢复原始大小
Private Sub Form_Resize()
If Me.WindowState 1 Then
Me.Caption = ""
Me.Height = 6405 '窗体高度为 6405 缇
Me.Width = 8535 '窗体宽度为 8535 缇
Me.Left = (Screen.Width - Width) \ 2
Me.Top = (Screen.Height - Height) \ 2
End If
End Sub
'该过程用于重新开始开始游戏
Private Sub cmdGameStart_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Beep
msg = MsgBox("您确认要重新开始游戏吗?", 4 + 32, "BS贪食蛇")
If msg = 6 Then Call m_subGameInitialize
End Sub
'该过程用于暂停/运行游戏
Private Sub chkPause_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Me.chkPause.Caption = "暂停游戏(P)" Then
Me.tmrSnakeMove.Enabled = False
Me.tmrGameTime.Enabled = False
Me.picMoveArea.Enabled = False
Me.lblPauseLab.Visible = True
Me.chkPause.Caption = "继续游戏(R)"
Else
Me.tmrSnakeMove.Enabled = True
Me.tmrGameTime.Enabled = True
Me.picMoveArea.Enabled = True
Me.lblPauseLab.Visible = False
Me.chkPause.Caption = "暂停游戏(P)"
End If
End Sub
'该过程用于显示游戏规则
Private Sub cmdGameRules_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Beep
MsgBox " BS贪食蛇:一个规则最简单的趣味游戏,您将用键盘" Chr(13) _
"上的4个方向键来控制蛇的运动方向。在运动过程中蛇" Chr(13) _
"不能后退,蛇的头部也不能接触到运动区域的边线以外" Chr(13) _
"和蛇自己的身体,否则就游戏失败。在吃掉随机出现的" Chr(13) _
"果子后,蛇的身体会变长,越长难度越大。祝您好运!!", 0 + 64, "游戏规则"
End Sub
'该过程用于显示游戏开发信息
Private Sub cmdAbout_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Beep
MsgBox "BS贪食蛇" "(V-" App.Major "." App.Minor "版本)" Chr(13) Chr(13) _
"" Chr(13) Chr(13) _
"由PigheadPrince设计制作" Chr(13) _
"CopyRight(C)2002,BestSoft.TCG", 0, "关于本游戏"
End Sub
'该过程用于退出游戏
Private Sub cmdExit_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Beep
msg = MsgBox("您要退出本游戏吗?", 4 + 32, "BS贪食蛇")
Select Case msg
Case 6
End
Case 7
Me.chkWindowButton(2).Value = 0
Exit Sub
End Select
End Sub
'该过程用于拖动窗体_(点击图标)
Private Sub imgWindowTop_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
ReleaseCapture
SendMessage Me.hwnd, WM_SYSCOMMAND, SC_MOVE, 0
End Sub
'该共用过程用于处理窗体控制按钮组的相关操作_(锁定、最小化、退出)
Private Sub chkWindowButton_MouseUp(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button 1 Then Exit Sub
Select Case Index
Case 0 '锁定窗体
If Me.chkWindowButton(0).Value = 1 Then
Me.imgWindowTop.BorderStyle = 0
Me.imgWindowTop.Enabled = False
Else
Me.imgWindowTop.BorderStyle = 1
Me.imgWindowTop.Enabled = True
End If
Case 1 '最小化
Me.WindowState = 1
Me.chkWindowButton(1).Value = 0
Me.Caption = "BS贪食蛇 — (V-" App.Major "." App.Minor "版本)"
Case 2 '退出
Beep
msg = MsgBox("您要退出本游戏吗?", 4 + 32, "BS贪食蛇")
Select Case msg
Case 6
End
Case 7
Me.chkWindowButton(2).Value = 0
Exit Sub
End Select
End Select
End Sub
'该过程用于设置蛇运动速度的快慢
Private Sub hsbGameSpeed_Change()
Me.tmrSnakeMove.Interval = Me.hsbGameSpeed.Value
End Sub
'该过程用于通过键盘的方向键改变蛇的运动方向
Private Sub picMoveArea_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case g_intDirection
Case D_UP
If KeyCode = D_DOWN Then Exit Sub
Case D_DOWN
If KeyCode = D_UP Then Exit Sub
Case D_LEFT
If KeyCode = D_RIGHT Then Exit Sub
Case D_RIGHT
If KeyCode = D_LEFT Then Exit Sub
End Select
g_intDirection = KeyCode
End Sub
'该计时循环过程用于计算游戏耗费的秒数并显示
Private Sub tmrGameTime_Timer()
g_lngGameTime = g_lngGameTime + 1
Me.lblGameTime.Caption = g_lngGameTime "秒"
End Sub
'该计时循环过程用于控制蛇的行动轨迹
Private Sub tmrSnakeMove_Timer()
Dim lngSnakeX As Long, lngSnakeY As Long, lngSnakeColor As Long
Dim lngPointX As Long, lngPointY As Long, lngPointColor As Long
Randomize
Me.picMoveArea.SetFocus
Me.picMoveArea.Cls
'确认蛇头的运动方向并获取新的位置
Select Case g_intDirection
Case D_UP '向上运动
g_udtSnake(SNAKEONE).Snake_CurX = g_udtSnake(SNAKEONE).Snake_OldX
g_udtSnake(SNAKEONE).Snake_CurY = g_udtSnake(SNAKEONE).Snake_OldY
g_udtSnake(SNAKEONE).Snake_CurY = g_udtSnake(SNAKEONE).Snake_CurY - SNAKEWIDTH
Case D_DOWN '向下运动
g_udtSnake(SNAKEONE).Snake_CurX = g_udtSnake(SNAKEONE).Snake_OldX
g_udtSnake(SNAKEONE).Snake_CurY = g_udtSnake(SNAKEONE).Snake_OldY
g_udtSnake(SNAKEONE).Snake_CurY = g_udtSnake(SNAKEONE).Snake_CurY + SNAKEWIDTH
Case D_LEFT '向左运动
g_udtSnake(SNAKEONE).Snake_CurX = g_udtSnake(SNAKEONE).Snake_OldX
g_udtSnake(SNAKEONE).Snake_CurX = g_udtSnake(SNAKEONE).Snake_CurX - SNAKEWIDTH
g_udtSnake(SNAKEONE).Snake_CurY = g_udtSnake(SNAKEONE).Snake_OldY
Case D_RIGHT '向右运动
g_udtSnake(SNAKEONE).Snake_CurX = g_udtSnake(SNAKEONE).Snake_OldX
g_udtSnake(SNAKEONE).Snake_CurX = g_udtSnake(SNAKEONE).Snake_CurX + SNAKEWIDTH
g_udtSnake(SNAKEONE).Snake_CurY = g_udtSnake(SNAKEONE).Snake_OldY
End Select
'根据新的位置绘制蛇头
lngSnakeX = g_udtSnake(SNAKEONE).Snake_CurX
lngSnakeY = g_udtSnake(SNAKEONE).Snake_CurY
lngSnakeColor = g_udtSnake(SNAKEONE).Snake_Color
Me.picMoveArea.PSet (lngSnakeX, lngSnakeY), lngSnakeColor
'移动蛇身体其他部分的位置
For i = 2 To g_intSnakeLength
g_udtSnake(i).Snake_CurX = g_udtSnake(i - 1).Snake_OldX
g_udtSnake(i).Snake_CurY = g_udtSnake(i - 1).Snake_OldY
lngSnakeX = g_udtSnake(i).Snake_CurX
lngSnakeY = g_udtSnake(i).Snake_CurY
lngSnakeColor = g_udtSnake(i).Snake_Color
Me.picMoveArea.PSet (lngSnakeX, lngSnakeY), lngSnakeColor
Next i
'更新蛇旧的坐标位置
For j = 1 To g_intSnakeLength
g_udtSnake(j).Snake_OldX = g_udtSnake(j).Snake_CurX
g_udtSnake(j).Snake_OldY = g_udtSnake(j).Snake_CurY
Next j
'判断蛇在移动中是否到了禁区而导致游戏失败
If m_funMoveForbiddenZone(g_udtSnake(SNAKEONE).Snake_CurX, g_udtSnake(SNAKEONE).Snake_CurY) Then
Beep
MsgBox "您的蛇移动到了禁区,游戏失败!", 0 + 16, "BS贪食蛇"
Me.tmrSnakeMove.Enabled = False
Me.tmrGameTime.Enabled = False
Me.picMoveArea.Visible = False
Exit Sub
End If
'判断蛇在移动中是否碰到了自己的身体而导致游戏失败
If m_funTouchSnakeBody(g_udtSnake(SNAKEONE).Snake_CurX, g_udtSnake(SNAKEONE).Snake_CurY) Then
Beep
MsgBox "您的蛇在移动中碰到了自己的身体,游戏失败!", 0 + 16, "BS贪食蛇"
Me.tmrSnakeMove.Enabled = False
Me.tmrGameTime.Enabled = False
Me.picMoveArea.Visible = False
Exit Sub
End If
'判断蛇是否吃到了果子
If m_funEatPoint(g_udtSnake(SNAKEONE).Snake_CurX, g_udtSnake(SNAKEONE).Snake_CurY) Then
'累加玩家的得分并刷新得分显示
g_intPlayerScore = g_intPlayerScore + 1
Me.lblYourScore.Caption = g_intPlayerScore "分"
Call m_subAddSnake '加长蛇的身体
Call m_subGetPoint '获取下一个果子的位置和颜色
Else
'绘制果子
lngPointX = g_udtPoint.Point_X
lngPointY = g_udtPoint.Point_Y
lngPointColor = g_udtPoint.Point_Color
Me.picMoveArea.PSet (lngPointX, lngPointY), lngPointColor
End If
End Sub
'该私有子过程用于初始化游戏
Private Sub m_subGameInitialize()
Erase g_udtSnake '清空蛇的结构数组
g_intPlayerScore = 0 '清空玩家的得分
g_lngGameTime = 0 '清空游戏耗费的秒数
g_intDirection = D_DOWN '设定蛇的初始运动方向为下
g_intSnakeLength = 4 '设定蛇的初始长度
ReDim g_udtSnake(1 To g_intSnakeLength) '重新定义蛇的长度
'定义蛇头部的数据
With g_udtSnake(SNAKEONE)
.Snake_OldX = 530
.Snake_OldY = 530
.Snake_Color = vbBlack
End With
'定义蛇身第2节的数据
With g_udtSnake(SNAKETWO)
.Snake_OldX = 530
.Snake_OldY = 430
.Snake_Color = vbGreen
End With
'定义蛇身第3节的数据
With g_udtSnake(SNAKETHREE)
.Snake_OldX = 530
.Snake_OldY = 330
.Snake_Color = vbYellow
End With
'定义蛇身第4节的数据
With g_udtSnake(SNAKEFOUR)
.Snake_OldX = 530
.Snake_OldY = 230
.Snake_Color = vbRed
End With
Me.picMoveArea.Visible = True
Me.lblYourScore.Caption = g_intPlayerScore "分"
Me.lblGameTime.Caption = g_lngGameTime "秒"
Me.tmrSnakeMove.Interval = Me.hsbGameSpeed.Value
Me.tmrSnakeMove.Enabled = True
Me.tmrGameTime.Enabled = True
Call m_subGetPoint '获取第一个果子的位置和颜色
End Sub
相关问答
Q1: VB.NET可以制作游戏吗?
可以
做中小游戏
但它有个缺点,游戏比专业软件开发的运行速度要慢
大游戏,最好使用专业游戏开发软件
Q2: vb.net做石头剪刀布小游戏
我也是新手vb.net做游戏,随便做个玩玩。把RadioButton0vb.net做游戏,1,2放一个容器里vb.net做游戏!
Public Class Form1
Dim win1 As Integer = 0
Dim win2 As Integer = 0
Dim i As Integer
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim str As Integer
Dim rand As New Random()
str =rand.Next(3)'随机数
If str = 0 Then
RadioButton0.Checked = True
ElseIf str = 1 Then
RadioButton1.Checked = True
ElseIf str = 2 Then
RadioButton2.Checked = True
End If
If RadioButton3.Checked = True Then
i = 0
ElseIf RadioButton4.Checked = True Then
i = 1
ElseIf RadioButton5.Checked = True Then
i = 2
Else
MsgBox("请选择要出的拳法!")
End If
If (str = 0 And i = 1) Or (str = 1 And i = 2) Or (str = 2 And i = 0) Then
win1 += 1
TextBox1.Text = "玩家胜利"
ElseIf (str = 0 And i = 2) Or (str = 1 And i = 0) Or (str = 2 And i = 1) Then
win2 += 1
TextBox1.Text = "电脑胜利"
Else
TextBox1.Text = "平手"
End If'判断胜利者
TextBox2.Text = win1
TextBox3.Text = win2
If win1 = 5 Then
MsgBox("最终胜利者是玩家!恭喜!")
win1 = 0
win2 = 0
For i = 0 To Me.Controls.Count - 1
If TypeOf (Me.Controls(i)) Is TextBox Then
Me.Controls(i).Text = ""
End If'清空过时信息
Next
ElseIf win2 = 5 Then
MsgBox("最终胜利者是电脑!")
win1 = 0
win2 = 0
For i = 0 To Me.Controls.Count - 1
If TypeOf (Me.Controls(i)) Is TextBox Then
Me.Controls(i).Text = ""
End If'清空过时信息
Next
End If
End Sub
End Class
纯属新手,高手毋笑!
Q3: VB.NET做拼图游戏需要的控件,如何让小图片移动
给你提供一个思路,
你既然知道BITBLT,基础不会太差的,我就简单明了的说下.
从你的问题看,最简单的方法,其实只需要一个picturebox.
然后定义一个4*3的Image数组img(3,2).横4纵3.
img(0,0)装入第一张图片,
img(1,0)装入第二张图片,
img(3,0)不使用.
以此类推,img(3,1)也不使用,
####但是,img(3,2)虽然不装入图片,
####其功能却和你思路中的"没图片的picturebox"相同.
我们可以定义两个变量x
,
y
As
Integer
初始的时候x=3,y=2,应该看出来了吧?这两个变量用来保存空白image的位置,方便你移动图片.
有了这种结构,剩下的工作就很简单了.
写一个方法来处理按键消息.例如:
如果此时x=1,y=1,用户按下了"上键",那么img(x,y)和Image(x,y-1)交换.然后y=y-1
如果此时x=1,y=1,用户按下了"左键",那么img(x,y)和image(x-1,y)交换.然后x=x-1
其实就是移动空白位置的方法.但是要注意,img(3,0),img(3,1),img(3,2)这三个特殊位置要做特殊处理.
最后,写个for循环,把img数组显示到picturebox上面就可以了.
很简单吧?不知道我说得是否清楚?
希望对你有所帮助.
Q4: 如何用vb.net开发游戏?如何控制人物移动?我只会控制图片移动。
单纯用.netvb.net做游戏的技术来做非常麻烦vb.net做游戏,涉及到vb.net做游戏了大量的GUI绘图工作,但这个偏偏还是基础。所以建议用WPF来处理,虽然也比较麻烦,但要比GUI容易理解的多。
而原理实际上都是一样的。本质上都是图片的移动。只不过移动的那张图片有变化。
譬如vb.net做游戏你要做一个沿直线跑步的小人。在起始的位置画一个站立的人物图,然后将图片移动到下一个位置,并把图片换成迈出左腿并挥臂的图;再将图片移动一下,绘制收左腿迈右腿的图,一直下去。
说白了就是vb.net做游戏你需要将人物移动的动作分解,并在合适的位置上绘制出合适的图,分解的越细,动画的连贯性就越高。
其实就是制作动画,然后再把它用到游戏中
Q5: VB可以做什么游戏
理论上讲,VB可以做任何游戏,游戏开发不是一言两语能说明白的,在这里可以给你简单的说一下,具体开发方法请仔细百度。
开发游戏你需要解决四个技术问题:
1:图像绘制。2:声音播放。3:用户输入控制。4:文件的读写。
其中2、3、4基本可以用VB的基础语言功能和操作系统提供的API解决,唯独绘图需要引擎来解决。除非是很小的小游戏,否则你不太可能用系统控件去做一个游戏,你也不能天才到啥都自己实现出来,你就算有那么天才,也没那个时间精力,也没有必要。做游戏用的绘图引擎一般是GDI或DIRECTX或OPENGL。VB6可以使用GDI或DIRECTX7、8,VB.net可以使用DIRECTX9以上的版本。其中GDI可以用来开发2D游戏,DIRECTX可以用于开发任何类型游戏,DIRECTX不但可以用来绘图,其还包含解决游戏中联网、用户输入控制、声音播放的专用模块推荐使用。
关于vb.net做游戏和vbs小游戏的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。







