'定义蛇的运动速度枚举值Private Enum tpsSpeedQUICKLY = 0SLOWLY = 1End Enum'定义蛇的运动方向枚举值Private Enum tpsDirectionD_UP = 38D_DOWN = 40D_LEFT = 37D_RIGHT = 39End Enum'定义运动区域4个禁区的枚举值Private Enum tpsForbiddenZoneFZ_TOP = 30FZ_BOTTOM = 5330FZ_LEFT = 30FZ_RIGHT = 5730End Enum'定义蛇头及身体初始化数枚举值Private Enum tpsSnakeSNAKEONE = 1SNAKETWO = 2SNAKETHREE = 3SNAKEFOUR = 4End Enum'定义蛇宽度的常量Private Const SNAKEWIDTH As Integer = 100'该过程用于显示游戏信息Private Sub Form_Load() = "BS贪食蛇 — (版本 " & & "." & & "." & & ")" = 1End Sub'该过程用于使窗体恢复原始大小Private Sub Form_Resize()If > 1 = "" = 6405 '窗体高度为 6405 缇 = 8535 '窗体宽度为 8535 缇 = ( - Width) \ = ( - Height) \ 2End IfEnd Sub'该过程用于重新开始开始游戏Private Sub cmdGameStart_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)Beepmsg = MsgBox("您确认要重新开始游戏吗?", 4 + 32, "BS贪食蛇")If msg = 6 Then Call m_subGameInitializeEnd Sub'该过程用于暂停/运行游戏Private Sub chkPause_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)If = "暂停游戏(&P)" = = = = = "继续游戏(&R)" = = = = = "暂停游戏(&P)"End IfEnd Sub'该过程用于显示游戏规则Private Sub cmdGameRules_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)BeepMsgBox " 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)BeepMsgBox "BS贪食蛇" & "(V-" & & "." & & "版本)" & Chr(13) & Chr(13) & _"" & Chr(13) & Chr(13) & _"由PigheadPrince设计制作" & Chr(13) & _"CopyRight(C)2002,", 0, "关于本游戏"End Sub'该过程用于退出游戏Private Sub cmdExit_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)Beepmsg = MsgBox("您要退出本游戏吗?", 4 + 32, "BS贪食蛇")Select Case msgCase 6EndCase (2).Value = 0Exit SubEnd SelectEnd Sub'该过程用于拖动窗体_(点击图标)Private Sub imgWindowTop_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)ReleaseCaptureSendMessage , WM_SYSCOMMAND, SC_MOVE, 0End 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 SubSelect Case IndexCase 0 '锁定窗体If (0).Value = 1 = = = = TrueEnd IfCase 1 '最小化 = (1).Value = = "BS贪食蛇 — (V-" & & "." & & "版本)"Case 2 '退出Beepmsg = MsgBox("您要退出本游戏吗?", 4 + 32, "BS贪食蛇")Select Case msgCase 6EndCase (2).Value = 0Exit SubEnd SelectEnd SelectEnd Sub'该过程用于设置蛇运动速度的快慢Private Sub hsbGameSpeed_Change() = Sub'该过程用于通过键盘的方向键改变蛇的运动方向Private Sub picMoveArea_KeyDown(KeyCode As Integer, Shift As Integer)Select Case g_intDirectionCase D_UPIf KeyCode = D_DOWN Then Exit SubCase D_DOWNIf KeyCode = D_UP Then Exit SubCase D_LEFTIf KeyCode = D_RIGHT Then Exit SubCase D_RIGHTIf KeyCode = D_LEFT Then Exit SubEnd Selectg_intDirection = KeyCodeEnd Sub'该计时循环过程用于计算游戏耗费的秒数并显示Private Sub tmrGameTime_Timer()g_lngGameTime = g_lngGameTime + = g_lngGameTime & "秒"End Sub'该计时循环过程用于控制蛇的行动轨迹Private Sub tmrSnakeMove_Timer()Dim lngSnakeX As Long, lngSnakeY As Long, lngSnakeColor As LongDim lngPointX As Long, lngPointY As Long, lngPointColor As '确认蛇头的运动方向并获取新的位置Select Case g_intDirectionCase D_UP '向上运动g_udtSnake(SNAKEONE).Snake_CurX = g_udtSnake(SNAKEONE).Snake_OldXg_udtSnake(SNAKEONE).Snake_CurY = g_udtSnake(SNAKEONE).Snake_OldYg_udtSnake(SNAKEONE).Snake_CurY = g_udtSnake(SNAKEONE).Snake_CurY - SNAKEWIDTHCase D_DOWN '向下运动g_udtSnake(SNAKEONE).Snake_CurX = g_udtSnake(SNAKEONE).Snake_OldXg_udtSnake(SNAKEONE).Snake_CurY = g_udtSnake(SNAKEONE).Snake_OldYg_udtSnake(SNAKEONE).Snake_CurY = g_udtSnake(SNAKEONE).Snake_CurY + SNAKEWIDTHCase D_LEFT '向左运动g_udtSnake(SNAKEONE).Snake_CurX = g_udtSnake(SNAKEONE).Snake_OldXg_udtSnake(SNAKEONE).Snake_CurX = g_udtSnake(SNAKEONE).Snake_CurX - SNAKEWIDTHg_udtSnake(SNAKEONE).Snake_CurY = g_udtSnake(SNAKEONE).Snake_OldYCase D_RIGHT '向右运动g_udtSnake(SNAKEONE).Snake_CurX = g_udtSnake(SNAKEONE).Snake_OldXg_udtSnake(SNAKEONE).Snake_CurX = g_udtSnake(SNAKEONE).Snake_CurX + SNAKEWIDTHg_udtSnake(SNAKEONE).Snake_CurY = g_udtSnake(SNAKEONE).Snake_OldYEnd Select'根据新的位置绘制蛇头lngSnakeX = g_udtSnake(SNAKEONE).Snake_CurXlngSnakeY = g_udtSnake(SNAKEONE).Snake_CurYlngSnakeColor = g_udtSnake(SNAKEONE). (lngSnakeX, lngSnakeY), lngSnakeColor'移动蛇身体其他部分的位置For i = 2 To g_intSnakeLengthg_udtSnake(i).Snake_CurX = g_udtSnake(i - 1).Snake_OldXg_udtSnake(i).Snake_CurY = g_udtSnake(i - 1).Snake_OldYlngSnakeX = g_udtSnake(i).Snake_CurXlngSnakeY = g_udtSnake(i).Snake_CurYlngSnakeColor = g_udtSnake(i). (lngSnakeX, lngSnakeY), lngSnakeColorNext i'更新蛇旧的坐标位置For j = 1 To g_intSnakeLengthg_udtSnake(j).Snake_OldX = g_udtSnake(j).Snake_CurXg_udtSnake(j).Snake_OldY = g_udtSnake(j).Snake_CurYNext j'判断蛇在移动中是否到了禁区而导致游戏失败If m_funMoveForbiddenZone(g_udtSnake(SNAKEONE).Snake_CurX, g_udtSnake(SNAKEONE).Snake_CurY) ThenBeepMsgBox "您的蛇移动到了禁区,游戏失败!", 0 + 16, "BS贪食蛇" = = = FalseExit SubEnd If'判断蛇在移动中是否碰到了自己的身体而导致游戏失败If m_funTouchSnakeBody(g_udtSnake(SNAKEONE).Snake_CurX, g_udtSnake(SNAKEONE).Snake_CurY) ThenBeepMsgBox "您的蛇在移动中碰到了自己的身体,游戏失败!", 0 + 16, "BS贪食蛇" = = = FalseExit SubEnd If'判断蛇是否吃到了果子If m_funEatPoint(g_udtSnake(SNAKEONE).Snake_CurX, g_udtSnake(SNAKEONE).Snake_CurY) Then'累加玩家的得分并刷新得分显示g_intPlayerScore = g_intPlayerScore + = g_intPlayerScore & "分"Call m_subAddSnake '加长蛇的身体Call m_subGetPoint '获取下一个果子的位置和颜色Else'绘制果子lngPointX = = = (lngPointX, lngPointY), lngPointColorEnd IfEnd 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 = = = vbBlackEnd With'定义蛇身第2节的数据With g_udtSnake(SNAKETWO).Snake_OldX = = = vbGreenEnd With'定义蛇身第3节的数据With g_udtSnake(SNAKETHREE).Snake_OldX = = = vbYellowEnd With'定义蛇身第4节的数据With g_udtSnake(SNAKEFOUR).Snake_OldX = = = vbRedEnd = = g_intPlayerScore & "分" = g_lngGameTime & "秒" = = = TrueCall m_subGetPoint '获取第一个果子的位置和颜色End Sub'该私有子过程用于返回获取的果子的位置和颜色信息Private Sub m_subGetPoint()Dim lngRedValue As Long, lngGreenValue As Long, lngBlueValue As LongDim lngPointX As Long, lngPointY As Long, lngPointColor As 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_LEFT - FZ_RIGHT + 1) * Rnd + FZ_RIGHT)lngPointY = Int((FZ_TOP - FZ_BOTTOM + 1) * Rnd + FZ_BOTTOM) (lngPointX, lngPointY), lngPointColor'设置函数返回值With = = = lngPointColorEnd WithEnd Sub