用vb编写简单小游戏

游戏 2019-03-29 14:59:12 5124

本文收集整理关于用vb编写简单小游戏的相关议题,使用内容导航快速到达。

内容导航:

  • Q1:怎样用VB编写打字小游戏?
  • Q2:求大神用vb帮忙编写一个简单的弹球小游戏
  • Q3:用Vb做一个小游戏
  • Q1:怎样用VB编写打字小游戏?

    我2年前写的,有点幼稚。别见笑
    VERSION 5.00
    Begin VB.Form Form1
    AutoRedraw=-1True
    Caption="打字游戏 小游戏而已"
    ClientHeight=4800
    ClientLeft=60
    ClientTop=750
    ClientWidth=5610、LinkTopic="Form1"
    ScaleHeight=4800
    ScaleWidth=5610、StartUpPosition =1所有者中心
    Begin VB.Timer Timer1
    Left=0
    Top=3600
    End
    Begin VB.Label Label1
    Caption="Label1"
    Height=735、Index=0
    Left=1320
    TabIndex=0
    Top=600
    Width=855、End
    Begin VB.Menu MenuGame
    Caption="数量 (&N)"
    Index=0
    End
    Begin VB.Menu MenuGame
    Caption="速度 (&P)"
    Index=1、End
    Begin VB.Menu MenuGame
    Caption="重置 (&R)"
    Index=2、End
    Begin VB.Menu MenuGame
    Caption="开始 (&S)"
    Index=3、End
    Begin VB.Menu MenuGame
    Caption="输赢 (&W)"
    Index=4、End
    Begin VB.Menu MenuGame
    Caption="帮助 (&H)"
    Index=5、End
    End
    Attribute VB_Name = "Form1"
    Attribute VB_GlobalNameSpace = False
    Attribute VB_Creatable = False
    Attribute VB_PredeclaredId = True
    Attribute VB_Exposed = False
    Dim StartPause As Boolean
    Dim n As Integer
    Dim Speed As Integer
    Dim Down As Integer, Hit As Integer
    Dim DownLost As Integer, HitWin As IntegerRem 自定义函数效率不高啊。。。
    Private Sub Form_Initialize()
    Speed = 10、DownLost = 100
    HitWin = 100
    End Sub
    Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    Randomize
    For Index = 0 To n
    If Chr(KeyCode) = Label1(Index).Caption Then
    With Label1(Index)
    .Top = Me.ScaleTop
    .Caption = Chr(Int(Rnd * 26) + 65)
    .Left = Rnd * (Me.ScaleWidth - Label1(Index).Width)
    .ForeColor = RGB(Rnd * 255, Rnd * 255, Rnd * 255)
    End With
    Hit = Hit + 1、Me.Caption = "打字游戏" & "掉落: " & Down & "命中: " & Hit
    End If
    Next Index
    End Sub
    Private Sub Form_Load()
    On Error Resume Next
    Timer1.Interval = 10、Timer1.Enabled = False
    Randomize
    With Label1(0)
    .Top = Me.ScaleTop
    .Caption = Chr(Int(Rnd * 26) + 65)
    .ForeColor = RGB(Rnd * 255, Rnd * 255, Rnd * 255)
    .Left = Rnd * (Me.ScaleWidth - Label1(0).Width)
    .FontSize = 30
    .BackStyle = 0
    End With
    For Index = 1 To n
    Load Label1(Index)
    With Label1(Index)
    .Visible = True
    .FontSize = 30
    .BackStyle = 0
    .Top = Me.ScaleTop
    .Caption = Chr(Int(Rnd * 26) + 65)
    .Left = Rnd * (Me.ScaleWidth - Label1(Index).Width)
    .ForeColor = RGB(Rnd * 255, Rnd * 255, Rnd * 255)
    End With
    Next Index
    End Sub
    Private Sub MenuGame_Click(Index As Integer)
    On Error Resume Next
    Select Case Index
    Case 0
    n = Int(InputBox("输入数量,建议输入1至5,如果输入0或者按取消,将会去缺省值1", "输入数量") - 1)
    Form_Load
    StartPause = False: MenuGame(3).Caption = "开始 (&S)"
    Case 1、Speed = Int(Val(InputBox("输入速度参数,建议5-20,如果输入0或按取消,将会取缺省值0,就是不会移动", "输入速度参数")))
    Timer1.Enabled = False
    StartPause = False: MenuGame(3).Caption = "开始 (&S)"
    Case 2、Hit = 0
    Down = 0
    Form_Load
    StartPause = False: MenuGame(3).Caption = "开始 (&S)"
    Case 3、StartPause = Not StartPause
    If StartPause = True Then
    MenuGame(3).Caption = "暂停 (&P)"
    Timer1.Enabled = True
    ElseIf StartPause = False Then
    MenuGame(3).Caption = "开始 (&S)"
    Timer1.Enabled = False
    End If
    Case 4、HitWin = Int(InputBox("输入数字,当命中数等于该数时即为胜利。", "输入数字"))
    DownLost = Int(InputBox("输入数字,当掉落数等于该数时即为胜利。", "输入数字"))
    Case 5、MsgBox "目前没有编辑帮助"
    End Select
    End Sub
    Private Sub Timer1_Timer()
    Randomize
    For Index = 0 To n
    Label1(Index).Top = Label1(Index).Top + Speed
    If Label1(Index).Top >= Me.ScaleHeight Then
    With Label1(Index)
    .Top = Me.ScaleTop
    .Caption = Chr(Int(Rnd * 26) + 65)
    .Left = Rnd * (Me.ScaleWidth - Label1(Index).Width)
    .ForeColor = RGB(Rnd * 255, Rnd * 255, Rnd * 255)
    End With
    Down = Down + 1、Me.Caption = "打字游戏" & "掉落 " & Down & "命中 " & Hit
    End If
    Next Index
    If Down >= DownLost Then MsgBox "你输啦!", vbOKOnly, "You lost": End
    If Hit >= HitWin Then MsgBox "你赢啦!", vbOKOnly, "You Win": End
    End Sub

    Q2:求大神用vb帮忙编写一个简单的弹球小游戏

    这个简单,就是
    1:无偿懒得做;2:即使写了也可能是无视不采纳,早没积极性了。

    Q3:用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 = https://www.yijitao.com/aldyjtapi/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 = https://www.yijitao.com/aldyjtapi/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 = https://www.yijitao.com/aldyjtapi/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 = https://www.yijitao.com/aldyjtapi/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
    该私有子过程用于返回获取的果子的位置和颜色信息
    Private Sub m_subGetPoint()
    Dim lngRedValue As Long, lngGreenValue As Long, lngBlueValue As Long
    Dim lngPointX As Long, lngPointY As Long, lngPointColor As Long
    随机获取果子的颜色
    lngRedValue = https://www.yijitao.com/aldyjtapi/Int((255 - 0 + 1) * Rnd + 0)
    lngGreenValue = https://www.yijitao.com/aldyjtapi/Int((255 - 0 + 1) * Rnd + 0)
    lngBlueValue = https://www.yijitao.com/aldyjtapi/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)
    Me.PSet (lngPointX, lngPointY), lngPointColor
    设置函数返回值
    With g_udtPoint
    .Point_X = lngPointX
    .Point_Y = lngPointY
    .Point_Color = lngPointColor
    End With
    End Sub

    相关文章
    matlab 编写m文件函数2019-02-19
    matlab编写函数m函数并计算2019-02-21
    excel自己编写计算公式2019-02-23
    如何用c语言编写软件2019-03-01
    怎么编写获得过的荣誉2019-03-11
    用高级程序设计语言编写的程序是2019-03-22
    c语言编写的小程序2019-05-07
    php编写1到100的素数2019-06-07
    mysql编写存储过程2019-06-08
    用switch语句编写分段函数2019-06-18