网站首页 > 文章中心 > 其它

vb.net简易贪吃蛇

作者:小编 更新时间:2023-12-21 12:38:26 浏览量:480人看过

vb.net编写的贪吃蛇游戏,带代码的

需用VB实现,代码如下

vb.net简易贪吃蛇-图1

'定义蛇的运动速度枚举值

Private Enum tpsSpeed

QUICKLY = 0

SLOWLY = 1

End Enum

'定义蛇的运动方向枚举值

Private Enum tpsDirection

Private Enum tpsForbiddenZone

'定义蛇头及身体初始化数枚举值

vb.net简易贪吃蛇-图2

Private Enum tpsSnake

SNAKEONE = 1

'定义蛇宽度的常量

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 = ""

End If

'该过程用于重新开始开始游戏

Private Sub cmdGameStart_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

Beep

'该过程用于暂停/运行游戏

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)"

'该过程用于显示游戏规则

Private Sub cmdGameRules_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

'该过程用于显示游戏开发信息

Private Sub cmdAbout_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

'该过程用于退出游戏

Private Sub cmdExit_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

Select Case msg

End

Exit Sub

End Select

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

'该共用过程用于处理窗体控制按钮组的相关操作_(锁定、最小化、退出)

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

Me.imgWindowTop.BorderStyle = 1

Me.imgWindowTop.Enabled = True

Case 1 '最小化

Me.WindowState = 1

Me.chkWindowButton(1).Value = 0

Me.Caption = "BS贪食蛇 — (V-" App.Major "." App.Minor "版本)"

'该过程用于设置蛇运动速度的快慢

Private Sub hsbGameSpeed_Change()

Me.tmrSnakeMove.Interval = Me.hsbGameSpeed.Value

'该过程用于通过键盘的方向键改变蛇的运动方向

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

g_intDirection = KeyCode

'该计时循环过程用于计算游戏耗费的秒数并显示

Private Sub tmrGameTime_Timer()

g_lngGameTime = g_lngGameTime + 1

Me.lblGameTime.Caption = g_lngGameTime "秒"

'该计时循环过程用于控制蛇的行动轨迹

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

'确认蛇头的运动方向并获取新的位置

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_CurY = g_udtSnake(SNAKEONE).Snake_CurY + SNAKEWIDTH

Case D_LEFT '向左运动

g_udtSnake(SNAKEONE).Snake_CurX = g_udtSnake(SNAKEONE).Snake_CurX - SNAKEWIDTH

Case D_RIGHT '向右运动

g_udtSnake(SNAKEONE).Snake_CurX = g_udtSnake(SNAKEONE).Snake_CurX + SNAKEWIDTH

'根据新的位置绘制蛇头

lngSnakeX = g_udtSnake(SNAKEONE).Snake_CurX

lngSnakeY = g_udtSnake(SNAKEONE).Snake_CurY

lngSnakeColor = g_udtSnake(SNAKEONE).Snake_Color

Me.picMoveArea.PSet (lngSnakeX, lngSnakeY), lngSnakeColor

'移动蛇身体其他部分的位置

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

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

Me.picMoveArea.Visible = False

'判断蛇在移动中是否碰到了自己的身体而导致游戏失败

If m_funTouchSnakeBody(g_udtSnake(SNAKEONE).Snake_CurX, g_udtSnake(SNAKEONE).Snake_CurY) Then

'判断蛇是否吃到了果子

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 '获取下一个果子的位置和颜色

'绘制果子

lngPointX = g_udtPoint.Point_X

lngPointY = g_udtPoint.Point_Y

lngPointColor = g_udtPoint.Point_Color

Me.picMoveArea.PSet (lngPointX, lngPointY), lngPointColor

'该私有子过程用于初始化游戏

Private Sub m_subGameInitialize()

Erase g_udtSnake '清空蛇的结构数组

g_intPlayerScore = 0 '清空粉丝的得分

g_lngGameTime = 0 '清空游戏耗费的秒数

g_intDirection = D_DOWN '设定蛇的初始运动方向为下

ReDim g_udtSnake(1 To g_intSnakeLength) '重新定义蛇的长度

'定义蛇头部的数据

With g_udtSnake(SNAKEONE)

.Snake_Color = vbBlack

End With

With g_udtSnake(SNAKETWO)

.Snake_Color = vbGreen

With g_udtSnake(SNAKETHREE)

.Snake_Color = vbYellow

With g_udtSnake(SNAKEFOUR)

.Snake_Color = vbRed

Me.picMoveArea.Visible = True

Call m_subGetPoint '获取第一个果子的位置和颜色

怎样用vb编写贪吃蛇游戏

①.、向上前进的时候,对代码进行一个详解.

VB 做一个非常简单的贪吃蛇程序

代码中自动生成了Timer1,Label1控件.以及几个函数(Randomize,Circle,Line,Erase...) 相信这些对于你来说很简单,只是没想到用这些方法来实现而已,现在你开始看看效果吧!

代码如下:

'贪吃蛇代码(无控件、全代码)

Private WithEvents Timer1 As Timer

Private WithEvents Label1 As Label

Dim GFangXiang As Boolean

Dim HWB As Single

Dim She() As ShenTi

Dim X As Long, Y As Long

Private Type ShenTi

F As Long

X As Long

Y As Long

End Type

'按键反应 ←↑↓→

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)

Dim C As Long

If Timer1.Enabled = True Then '空格暂停

Timer1.Enabled = False

Label1.Visible = True

Else '空格开始

Timer1.Enabled = True

Label1.Visible = False

C = UBound(She)

If GFangXiang = True Then Exit Sub

Select Case KeyCode

She(C).F = 0

GFangXiang = True

She(C).F = 1

If She(C).F = 0 Then Exit Sub

If She(C).F = 1 Then Exit Sub

Me.AutoRedraw = True

Me.BackColor = HC000

Me.FillStyle = 0

Set Timer1 = Controls.Add("VB.Timer", "Timer1")

Set Label1 = Controls.Add("VB.Label", "Label1")

Label1.AutoSize = True

Label1.BackStyle = 0

Label1 = "暂停"

ChuShiHua '初始化

On Error GoTo 1:

With Me

If .WindowState 1 Then

.Cls

HWB = .ScaleHeight / .ScaleWidth

HuaTu

①.:

Private Sub Timer1_Timer()

Dim C As Long, I As Long

QingChu '清图

Select Case She(C).F

Case 0

C = C + 1

ReDim Preserve She(C)

She(C).F = She(C - 1).F

She(C).X = She(C - 1).X - 1

She(C).Y = She(C - 1).Y

ChanShengShiWu

GoTo 1:

ElseIf ZhuangTai(She(C).X - 1, She(C).Y) = 1 Then

Case 1

She(C).X = She(C - 1).X

She(C).Y = She(C - 1).Y - 1

ElseIf ZhuangTai(She(C).X, She(C).Y - 1) = 1 Then

She(C).X = She(C - 1).X + 1

ElseIf ZhuangTai(She(C).X + 1, She(C).Y) = 1 Then

She(C).Y = She(C - 1).Y + 1

ElseIf ZhuangTai(She(C).X, She(C).Y + 1) = 1 Then

ZhuangTai(She(0).X, She(0).Y) = 0

For I = 0 To C

Select Case She(I).F

She(I).X = She(I).X - 1

She(I).Y = She(I).Y - 1

She(I).X = She(I).X + 1

She(I).Y = She(I).Y + 1

Next

TiaoZheng

GFangXiang = False

ZhuangTai(She(C).X, She(C).Y) = 1

ChuShiHua

'初始化

Private Sub ChuShiHua()

Me.Cls

Erase ZhuangTai

She(0).Y = 11

She(1).X = 10

She(1).Y = 11

ZhuangTai(10, 11) = 1

ZhuangTai(11, 11) = 1

HuaTu '画图

'清图

Private Sub QingChu()

Dim I As Long

For I = 0 To UBound(She)

Me.Line (She(I).X, She(I).Y)-(She(I).X + 1, She(I).Y + 1), Me.BackColor, BF

'画图 蛇

Private Sub HuaTu()

Private Sub TiaoZheng()

For I = 0 To UBound(She) - 1

She(I).F = She(I + 1).F

'随机产生食物

Private Sub ChanShengShiWu()

Randomize Timer

If ZhuangTai(X, Y) 0 Then GoTo 1:

以上就是土嘎嘎小编为大家整理的vb.net简易贪吃蛇相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章