當前位置:成語大全網 - 漢語詞典 - VB蛇代碼

VB蛇代碼

定義蛇的移動速度的枚舉值。

私有枚舉速度

快速= 0

慢慢地= 1

結束枚舉

定義蛇移動方向的枚舉值

私有枚舉tpsDirection

D_UP = 38

D_DOWN = 40

左= 37

右= 39

結束枚舉

定義運動區域中四個禁區的枚舉值。

私有枚舉tpsForbiddenZone

FZ _托普= 30

FZ底部= 5330

FZ _左= 30

FZ右= 5730

結束枚舉

定義蛇頭和蛇身初始值設定項的枚舉值。

私有枚舉tpsSnake

SNAKEONE = 1

蛇二= 2

蛇三= 3

蛇四= 4

結束枚舉

定義蛇的寬度的常數

私有Const snake width As Integer = 100

這個程序用來顯示遊戲信息。

私有子窗體_Load()

我。顯示

Me.lblTitle = "BS Snake-(版本" &;App。專業與藝術。"."& ampApp。未成年人與未成年人。"."& ampApp。修訂版& amp")"

我。Caption = Me.lblTitle.Caption

frmSplash。顯示1

末端接頭

此過程用於將表單恢復到其原始大小。

私有子窗體_Resize()

如果我。WindowState & lt& gt那麽1

我。標題= " "

我。Height = 6405 '表單的高度是6405緹。

我。Width = 8535 '窗體的寬度是8535緹。

我。Left =(屏幕。寬度-寬度)\ 2

我。Top =(屏幕。高度-高度)\ 2

如果…就會結束

末端接頭

這個過程用於重新啟動遊戲。

private Sub cmdGameStart _ MouseDown(Button為整數,Shift為整數,X為Single,Y為Single)

嗶嗶聲

Msg = MsgBox("妳確定要重啟遊戲嗎?",4+32,《BS蛇》)

如果msg = 6,則調用m_subGameInitialize

末端接頭

這個程序用於暫停/運行遊戲。

private Sub chk pause _ MouseDown(Button為整數,Shift為整數,X為Single,Y為Single)

If Me.chkPause.Caption = "暫停& amp(&;p)“那麽

Me.tmrSnakeMove.Enabled = False

Me.tmrGameTime.Enabled = False

Me.picMoveArea.Enabled = False

Me.lblPauseLab.Visible = True

Me.chkPause.Caption = "繼續& amp(&;r)"

其他

Me.tmrSnakeMove.Enabled = True

Me.tmrGameTime.Enabled = True

Me.picMoveArea.Enabled = True

Me.lblPauseLab.Visible = False

Me.chkPause.Caption = "暫停& amp(&;p)"

如果…就會結束

末端接頭

這個程序是用來顯示遊戲規則的。

private Sub cmd gamerules _ MouseDown(Button為整數,Shift為整數,X為Single,Y為Single)

嗶嗶聲

壹個有趣的遊戲&用最簡單的規則,妳會使用鍵盤。Chr(13)_

屏幕上的四個方向鍵控制蛇的移動方向。運動過程中的蛇”&;Chr(13)_

“不能後退,蛇頭不能摸到運動區域邊線以外”&;Chr(13)_

“還有蛇自己的身體,否則遊戲會失敗。亂吃”&;Chr(13)_

“果實之後,蛇的身體會變長,越長越難纏。祝妳好運!!",0+64,《遊戲規則》

末端接頭

這個過程用於顯示遊戲開發信息。

private Sub cmd about _ MouseDown(Button為整數,Shift為整數,X為Single,Y為Single)

嗶嗶聲

MsgBox“BS蛇”&;”(V-& amp;App。專業與藝術。"."& ampApp。未成年人與未成年人。“版本)”&;Chr(13)Chr(13)_

”& ampChr(13)Chr(13)_

“PigheadPrince設計制作”&;Chr(13)_

"版權所有(c) 2002,bestsoft.tcg ",0,"關於此遊戲"

末端接頭

這個程序用於退出遊戲。

private Sub cmdExit _ MouseDown(Button為整數,Shift為整數,X為Single,Y為Single)

嗶嗶聲

Msg = MsgBox("妳想退出這個遊戲嗎?",4+32,《BS蛇》)

選擇案例消息

案例6

結束

案例7

Me.chkWindowButton(2)。值= 0

出口接頭

結束選擇

末端接頭

本程序用於拖動表單_(點擊圖標)

private Sub imgWindowTop _ MouseDown(Button為整數,Shift為整數,X為Single,Y為Single)

釋放捕獲

發送消息Me.hwnd,WM_SYSCOMMAND,SC_MOVE,0

末端接頭

這個* * *程序用於處理窗體控件按鈕組的相關操作(鎖定、最小化和退出)。

private Sub chkWindowButton _ MouseUp(Index為整數,Button為整數,Shift為整數,X為Single,Y為Single)

If按鈕& lt& gt1然後退出接頭

選擇案例索引

大小寫為0的鎖形式

If Me.chkWindowButton(0)。那麽值= 1

Me.imgWindowTop.BorderStyle = 0

Me.imgWindowTop.Enabled = False

其他

me . imgwindowtop . border style = 1

Me.imgWindowTop.Enabled = True

如果…就會結束

案例1 '最小化

我。WindowState = 1

Me.chkWindowButton(1)。值= 0

我。Caption = "BS蛇-(v-" &;App。專業與藝術。"."& ampApp。未成年人與未成年人。"版本)"

案例2 '出口

嗶嗶聲

Msg = MsgBox("妳想退出這個遊戲嗎?",4+32,《BS蛇》)

選擇案例消息

案例6

結束

案例7

Me.chkWindowButton(2)。值= 0

出口接頭

結束選擇

結束選擇

末端接頭

該程序用於設置蛇移動的速度。

私有Sub hsbGameSpeed_Change()

me . tmrsnakemove . interval = me . hsbgamespeed . value

末端接頭

這個過程是用來通過鍵盤的方向鍵來改變蛇的移動方向。

private Sub picMoveArea _ KeyDown(key code為整數,Shift為整數)

選擇案例g_intDirection

案例D_UP

如果KeyCode = D_DOWN,則退出Sub

案例D_DOWN

如果KeyCode = D_UP,則退出Sub

案例D _左

如果KeyCode = D_RIGHT,則退出Sub

案例D _右

如果KeyCode = D_LEFT,則退出Sub

結束選擇

g_intDirection = KeyCode

末端接頭

這個計時循環過程用於計算和顯示遊戲消耗的秒數。

私有Sub tmrGameTime_Timer()

g _ lngGameTime = g _ lngGameTime+1

me . lblgametime . caption = g _ lngGameTime & amp;"秒"

末端接頭

這個定時循環過程用來控制蛇的動作軌跡。

私有Sub tmrSnakeMove_Timer()

Dim lngSnakeX壹樣長,lngSnakeY壹樣長,lngSnakeColor壹樣長

Dim lngPointX為Long,lngPointY為Long,lngPointColor為Long

使不規則化

Me.picMoveArea.SetFocus

Me.picMoveArea.Cls

確認蛇頭的移動方向,獲得新的位置。

選擇案例g_intDirection

格D_UP上移。

g_udtSnake(SNAKEONE)。Snake_CurX = g_udtSnake(SNAKEONE)。Snake_OldX

g_udtSnake(SNAKEONE)。Snake_CurY = g_udtSnake(SNAKEONE)。蛇老了

g_udtSnake(SNAKEONE)。Snake_CurY = g_udtSnake(SNAKEONE)。蛇形寬度

案例D_DOWN向下移動。

g_udtSnake(SNAKEONE)。Snake_CurX = g_udtSnake(SNAKEONE)。Snake_OldX

g_udtSnake(SNAKEONE)。Snake_CurY = g_udtSnake(SNAKEONE)。蛇老了

g_udtSnake(SNAKEONE)。Snake_CurY = g_udtSnake(SNAKEONE)。Snake_CurY +蛇寬

案例D_LEFT '移動到左邊。

g_udtSnake(SNAKEONE)。Snake_CurX = g_udtSnake(SNAKEONE)。Snake_OldX

g_udtSnake(SNAKEONE)。Snake_CurX = g_udtSnake(SNAKEONE)。Snake_CurX -蛇寬

g_udtSnake(SNAKEONE)。Snake_CurY = g_udtSnake(SNAKEONE)。蛇老了

“事例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)。蛇老了

結束選擇

根據新的位置畫蛇頭。

lngSnakeX = g_udtSnake(SNAKEONE)。Snake_CurX

lngSnakeY = g_udtSnake(SNAKEONE)。Snake_CurY

lngSnakeColor = g _ udtSnake(snake one)。蛇的顏色

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

移動蛇身體的其他部分。

對於i = 2到g_intSnakeLength

g_udtSnake(i)。snake _ CurX = g _ udtSnake(I-1)。Snake_OldX

g_udtSnake(i)。snake _ CurY = g _ udtSnake(I-1)。蛇老了

lngSnakeX = g_udtSnake(i)。Snake_CurX

lngSnakeY = g_udtSnake(i)。Snake_CurY

lngSnakeColor = g_udtSnake(i)。蛇的顏色

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

接下來我

更新蛇的舊坐標位置

對於j = 1到g_intSnakeLength

g_udtSnake(j)。Snake_OldX = g_udtSnake(j)。Snake_CurX

g_udtSnake(j)。Snake_OldY = g_udtSnake(j)。Snake_CurY

下壹個j

判斷蛇在移動過程中是否在禁區內,導致遊戲失敗。

if m _ funMoveForbiddenZone(g _ udtSnake(snake one)。Snake_CurX,g_udtSnake(SNAKEONE)。Snake_CurY)那麽

嗶嗶聲

MsgBox“妳的蛇移動到了禁區,遊戲失敗!”0+16,“BS蛇”

Me.tmrSnakeMove.Enabled = False

Me.tmrGameTime.Enabled = False

Me.picMoveArea.Visible = False

出口接頭

如果…就會結束

判斷蛇是否在運動中觸碰到自己的身體導致遊戲失敗。

if m _ funTouchSnakeBody(g _ udtSnake(snake one)。Snake_CurX,g_udtSnake(SNAKEONE)。Snake_CurY)那麽

嗶嗶聲

MsgBox“妳的蛇在移動的時候碰到了自己的身體,遊戲失敗!”0+16,“BS蛇”

Me.tmrSnakeMove.Enabled = False

Me.tmrGameTime.Enabled = False

Me.picMoveArea.Visible = False

出口接頭

如果…就會結束

判斷蛇是否吃了水果。

if m _ funEatPoint(g _ udtSnake(snake one)。Snake_CurX,g_udtSnake(SNAKEONE)。Snake_CurY)那麽

累積玩家分數,刷新分數顯示。

g _ intPlayerScore = g _ intPlayerScore+1

me . lblyourscore . caption = g _ intPlayerScore & amp;“分”

叫m_subAddSnake '加長蛇的身體。

調用m_subGetPoint '獲取下壹個水果的位置和顏色。

其他

畫水果

lngPointX = g_udtPoint。X點

lngPointY = g_udtPoint。Y點

lngPointColor = g_udtPoint。點顏色

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

如果…就會結束

末端接頭

這個私有子進程用於初始化遊戲。

私有Sub m_subGameInitialize()

' Erase g_udtSnake '清空蛇的結構數組。

' G_intPlayerScore = 0 '清除玩家的分數。

G_lngGameTime = 0 '秒清除遊戲。

' G_intDirection = D_DOWN '設置蛇的初始移動方向為向下。

G_intSnakeLength = 4 '設置蛇的初始長度。

redim g _ udt snake(1 tog _ intsnakelength)'重新定義了蛇的長度。

定義蛇頭的數據

用g_udtSnake(SNAKEONE)

。Snake_OldX = 530

。蛇老= 530

。Snake_Color = vbBlack

以…結尾

定義蛇體第2節的數據。

用g_udtSnake(SNAKETWO)

。Snake_OldX = 530

。Snake_OldY = 430

。Snake _ Color =格林

以…結尾

定義蛇體第3節的數據。

用g_udtSnake(SNAKETHREE)

。Snake_OldX = 530

。Snake_OldY = 330

。Snake _ Color =黃色

以…結尾

定義蛇體第4節的數據。

用g_udtSnake(SNAKEFOUR)

。Snake_OldX = 530

。Snake_OldY = 230

。Snake_Color = vbRed

以…結尾

Me.picMoveArea.Visible = True

me . lblyourscore . caption = g _ intPlayerScore & amp;“分”

me . lblgametime . caption = g _ lngGameTime & amp;"秒"

me . tmrsnakemove . interval = me . hsbgamespeed . value

Me.tmrSnakeMove.Enabled = True

Me.tmrGameTime.Enabled = True

調用m_subGetPoint '獲取第壹個水果的位置和顏色。

末端接頭

這個私有子進程用於返回獲得的水果的位置和顏色信息。

私有Sub m_subGetPoint()

Dim lngRedValue為長整型,lngGreenValue為長整型,lngBlueValue為長整型

Dim lngPointX為Long,lngPointY為Long,lngPointColor為Long

隨機獲取水果的顏色。

lngRedValue = Int((255-0+1)* Rnd+0)

lngGreenValue = Int((255-0+1)* Rnd+0)

lngBlueValue = Int((255-0+1)* Rnd+0)

lngPointColor = RGB(lngRedValue,lngGreenValue,lngBlueValue)

隨機獲取水果的位置

lngPointX = Int((FZ _左-FZ _右+1)* Rnd+FZ _右)

lngPointY = Int((FZ _頂-FZ _底+1)* Rnd+FZ _底)

我。PSet (lngPointX,lngPointY),lngPointColor

設置函數返回值

使用g_udtPoint

。Point_X = lngPointX

。Point_Y = lngPointY

。Point_Color = lngPointColor

以…結尾

末端接頭

這個私有的子過程用於延長蛇的身體

私有Sub m_subAddSnake()

Dim udtSnakeTemp() As Snake

Dim lngSnakeX壹樣長,lngSnakeY壹樣長,lngSnakeColor壹樣長

備份蛇原身體的數據,加長蛇的身體

ReDim udtSnakeTemp(1到g_intSnakeLength)

對於k = 1到g_intSnakeLength

帶有udtSnakeTemp(k)

。Snake_CurX = g_udtSnake(k)。Snake_CurX

。Snake_CurY = g_udtSnake(k)。Snake_CurY

。Snake_OldX = g_udtSnake(k)。Snake_OldX

。Snake_OldY = g_udtSnake(k)。蛇老了

。Snake_Color = g_udtSnake(k)。蛇的顏色

以…結尾

下壹個k

g _ intSnakeLength = g _ intSnakeLength+1

ReDim g _ udtSnake(g _ intSnakeLength)

將備份蛇體的數據返回到加長蛇體數組中。

對於l = 1到g_intSnakeLength - 1

用g_udtSnake(l)

。Snake_CurX = udtSnakeTemp(l)。Snake_CurX

。Snake_CurY = udtSnakeTemp(l)。Snake_CurY

。Snake_OldX = udtSnakeTemp(l)。Snake_OldX

。Snake_OldY = udtSnakeTemp(l)。蛇老了

。Snake_Color = udtSnakeTemp(l)。蛇的顏色

以…結尾

下壹個l

寫入新添加的正文數據

選擇案例g_intDirection

案例D_UP

with g _ udtSnake(g _ intSnakeLength)

。snake _ OldX = g _ udtSnake(g _ intSnakeLength-1)。Snake_CurX + SNAKEWIDTH

。snake _ OldY = g _ udtSnake(g _ intSnakeLength-1)。Snake_CurY

。Snake_Color = g_udtPoint。點顏色

以…結尾

案例D_DOWN

with g _ udtSnake(g _ intSnakeLength)

。snake _ OldX = g _ udtSnake(g _ intSnakeLength-1)。Snake_CurX -蛇寬

。snake _ OldY = g _ udtSnake(g _ intSnakeLength-1)。Snake_CurY

。Snake_Color = g_udtPoint。點顏色

以…結尾

案例D _左

with g _ udtSnake(g _ intSnakeLength)

。snake _ OldX = g _ udtSnake(g _ intSnakeLength-1)。Snake_CurX

。snake _ OldY = g _ udtSnake(g _ intSnakeLength-1)。Snake_CurY +蛇寬

。Snake_Color = g_udtPoint。點顏色

以…結尾

案例D _右

with g _ udtSnake(g _ intSnakeLength)

。snake _ OldX = g _ udtSnake(g _ intSnakeLength-1)。Snake_CurX

。snake _ OldY = g _ udtSnake(g _ intSnakeLength-1)。蛇形寬度

。Snake_Color = g_udtPoint。點顏色

以…結尾

結束選擇

lngSnakeX = g _ udtSnake(g _ intSnakeLength)。Snake_CurX

lngSnakeY = g _ udtSnake(g _ intSnakeLength)。Snake_CurY

lngSnakeColor = g _ udtSnake(g _ intSnakeLength)。蛇的顏色

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

末端接頭

這個自定義函數用於返回移動的蛇是否到達禁區,遊戲是否失敗。

私有函數m _ funMoveForbiddenZone(SnakeX As Long,SnakeY As Long)為布爾值

如果(SnakeX & gt= FZ _左和SnakeX & lt= FZ _右)和(蛇& gt= FZ _托普和蛇& lt= FZ _底部)然後

m_funMoveForbiddenZone = False

其他

m_funMoveForbiddenZone = True

如果…就會結束

結束功能

這個自定義函數用於返回移動的蛇是否觸碰到自己的身體,遊戲失敗。

私有函數m _ funTouchSnakeBody(SnakeX As Long,SnakeY As Long)為布爾值

對於m = 2到g_intSnakeLength

如果SnakeX = g_udtSnake(m)。Snake_CurX和SnakeY = g_udtSnake(m)。那麽Snake_CurY

m_funTouchSnakeBody = True

為...退出

其他

m_funTouchSnakeBody = False

如果…就會結束

下壹個m

結束功能

這個自定義函數用於返回移動的蛇是否吃了水果。

私有函數m_funEatPoint(SnakeX As Long,SnakeY As Long)為布爾值

如果Abs(SnakeX - g_udtPoint。point _ X)& lt;= SNAKEWIDTH和Abs(SnakeY - g_udtPoint。point _ Y)& lt;=那麽蛇的寬度

m_funEatPoint = True

其他

m_funEatPoint = False

如果…就會結束

結束功能

(API函數調用過程_用於實現無標題表單的拖動操作)-。

RleaseCapture函數用於釋放鼠標捕獲。

公共聲明函數ReleaseCapture Lib "user32 "()為Long

“SendMessage”函數用於發送消息,將表單移動到Windows。

公共聲明函數SendMessage Lib“user 32”別名“SendMessage a”(ByVal hwnd As _

Long、ByVal wMsg壹樣長、ByVal wParam壹樣長、IParam壹樣長)

公共Const WM _ SYSCOMMAND = & amp“H112”聲明了壹個用於向Windows發送消息的常數。

公共Const SC _ MOVE = & amp“HF012”聲明了控制移動窗體的常數。

(遊戲變量聲明部分)-。

定義snakes的數據類型結構。

公共型蛇

Snake_OldX壹樣長

蛇壹樣長

Snake_CurX壹樣長

Snake_CurY壹樣長

蛇_顏色壹樣長

結束類型

定義水果的數據類型結構。

公共類型點

點X壹樣長

點Y壹樣長

點顏色壹樣長

結束類型

定義壹個動態蛇數組

Public g_udtSnake() As Snake

定義水果

公共g_udtPoint作為點

定義蛇的長度。

Public g_intSnakeLength為整數

定義蛇的顏色

Public g_lngSnakeColor As Long

定義蛇移動的方向

Public g_intDirection為整數

定義玩家的分數

Public g_intPlayerScore為整數

定義遊戲花費的秒數。

Public g_lngGameTime As Long