用Vb做一个小游戏

来自:    更新日期:早些时候
用vb做一个小游戏 希望每一步有详细解释~

做个贪吃蛇,flppy bird,纵向像素赛车,推箱子,水果机
这些都不难,运用到一些特殊游戏算法,

贪吃蛇:创建pictureBox控件数组, 然后加身子就load picture1(picture1.UBound+1)
在声明一个动态数2d数组,每个身子都有一个X,Y值每移动一次贪吃蛇,头部先走一步后面的身子就向前一个身子的位置X,Y移动

flppy bird:运用到加速度,重力物理学,以及柱子的碰撞检测

纵向赛车:随机下来几个pictureBox,如果有方块的纵坐标超过了一定量,那就再从顶部开始下滑(呈现赛车相对几个障碍物向上走的视觉效应)

推箱子:这个实现起来不容易,要把每一次箱子的位置映像成2D数组,然后根据2d数组坐标判断对的箱子,箱子和箱子,箱子和墙,箱子和目标,hero和箱子的几种关系要搞清,谁是主动,谁是被动,谁碰到谁再碰到谁就不能再碰哈哈

水果机:相对没什么技术含量,计数器累加再弄一个小球在屏幕上转圈滚动,滚动到事先生成的随机数等于累加的数字时,停止小球的滚动,停在了那里就用计数变量mod加分类别,最终该得多少分,输出在text里面。。

你说的贪吃蛇、推箱子都不简单,涉及到很多方面的设计,要花不少时间的。这里估计很少有人能帮得上你。祝你好运。

帮你做了一个简单的猜数游戏,代码如下:

'只需给窗体添加一个Command1的控件,单击它即可执行,允许多次执行
Private Sub Command1_Click()
Dim myArray(1 To 20) As Integer '储存用于猜测的数据
Dim rep As Boolean, cor As Boolean 'rep记录产生的随机数是否有重复的,有重复的,会剔除,cor记录是否猜中
Dim guess As Integer
Dim i As Integer, j As Integer

'开始随机生成用于猜测的20个数据,若出现重复的数,将重新生成新的数
Cls
Randomize
i = 1
Do While i < 21
rep = False
myArray(i) = 1 + Int(50 * Rnd)
For j = 1 To i - 1
If myArray(i) = myArray(j) Then rep = True: Exit For
Next
If rep = False Then i = i + 1
Loop

'为20个数据从小到大排序
For i = 1 To 20
For j = i + 1 To 20
If myArray(i) > myArray(j) Then t = myArray(i): myArray(i) = myArray(j): myArray(j) = t
Next
Next

'开始猜数,输入非数值型的数据,会被视为输入0
cor = False
guess = Val(InputBox("请输入1到50的某个自然数:", "猜数游戏", 0))
For i = 1 To 20
If guess = myArray(i) Then cor = True: Exit For
Next

'开始打印结果
Print "20个随机数如下所示:"
For i = 1 To 20
Print Format(myArray(i), "#####"),
If i Mod 5 = 0 Then Print
Next
Print
Print "您猜的数是" & guess & "," & IIf(cor, "恭喜您,猜中了!", "不好意思,没有这个数哦!")

End Sub

'定义蛇的运动速度枚举值
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

'该私有子过程用于返回获取的果子的位置和颜色信息
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 = 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)
Me.PSet (lngPointX, lngPointY), lngPointColor
'设置函数返回值
With g_udtPoint
.Point_X = lngPointX
.Point_Y = lngPointY
.Point_Color = lngPointColor
End With
End Sub

没有完全理解你的意思,是要点开始按钮,出现 个数字,然后再几秒后消失,自己在下边的五个框填,然后检查对错吗?

麻烦你在Case和数字中间加空格好吗?然后在数字和函数之间加回车换好好吗?最后把UserEnter( )改成UserEnter

Private Sub Form_Load()
Label1.Caption = "点不到我"
Timer1.Interval = 100
Timer1.Enabled = True
End Sub

Private Sub Label1_Click()
Label1.Caption = "你赢了"
Timer1.Enabled = False
End Sub

Private Sub Timer1_Timer()
Label1.Move Int(Rnd * Me.ScaleWidth), Int(Rnd * Me.ScaleHeight)
End Sub

添加一个标签 一个时钟控件 代码如上


用Vb做一个小游戏视频

相关评论:
  • 19165753944如何用vb编写小游?
    鲁祁胥要使用VB编写一个小游戏,首先需要在Visual Basic环境中创建一个新的Windows Forms应用程序。点击“文件”菜单,选择“新建项目”,在弹出的窗口中选择“Windows Forms应用程序”。在新打开的项目中,你可以看到一个空白的窗体。在这个窗体上可以添加各种控件,例如按钮、文本框、图片框等,以构建游戏界面。...

  • 19165753944如何用vb做一个小游戏
    鲁祁胥1、首先双击桌面图标启动 visual basic 6.0。2、然后新建工程,选择标准EXE。3、选择完工程后,点击打开,就可以新建一个exe工程了。4、然后双击 FORM1 窗体,在弹出的代码窗体中复制该代码到 Form_Click() 事件中。5、代码:If a * 100 + b * 10 + c = a ^ 3 + b ^ 3 + c ^...

  • 19165753944上学期VB挂科了 老师让我补做一个VB小游戏 可是我一点都没学 朋友们...
    鲁祁胥temp1[1-3]+temp4[1-6]赋给first[1-9]并打乱 temp2[1-3]+temp4[7-12]赋给second[1-9] 并打乱 temp3[1-3]+temp4[13-18]赋给third[1-9] 并打乱 3.第二次按钮事件(假设选中的是第二个选项卡)temp2[1-3]打乱后赋给temp5[1]、 temp6[1] 、temp7[1]temp1[1-3]+temp3...

  • 19165753944用VB怎么做一个小游戏啊?
    鲁祁胥MsgBox " BS贪食蛇:一个规则最简单的趣味游戏,您将用键盘" & Chr(13) & _ "上的4个方向键来控制蛇的运动方向。在运动过程中蛇" & Chr(13) & _ "不能后退,蛇的头部也不能接触到运动区域的边线以外" & Chr(13) & _ "和蛇自己的身体,否则就游戏失败。在吃掉随机出现的" & Chr(13) & _ "果子...

  • 19165753944VB编写小游戏的全过程谁告诉我?
    鲁祁胥第一步,要做成这个游戏的话必须能使小球有一个判断性的运动,然而如何处理小球的运动呢,很显然delay&cls的方法不再适用,因为整个程序运行时不停的清屏效果将很差,所以我想到了用shape控件来替代用circle命令画的小球,接着要使小球运动起来,这个问题很简单,因为 shape控件有left和top的属性,可以...

  • 19165753944做一个VB的小游戏,难度不用太高,程序十句左右就够了,只要简单的和case语...
    鲁祁胥' 锤子剪刀布 Private Sub Command1_Click()Iguess = Int(Rnd * 3) + 1 Do YouGuess = Val(InputBox("我已想好了,你出什么?(1=锤子, 2=剪刀,3=布:", "猜拳"))Loop Until YouGuess <= 3 And YouGuess >= 1 If Iguess = YouGuess Then k = 1 ElseIf Iguess < YouGuess...

  • 19165753944vb游戏代码大全vb小游戏源代码
    鲁祁胥关于vb游戏代码大全,vb小游戏源代码这个很多人还不知道,今天来为大家解答以上的问题,现在让我们一起来看看吧!1、Rem 窗体创建三个单选框按钮,OptionOption2、Option3 Private Sub Form_Activate() Option1.Caption = "石头" Option2.Caption = "剪刀" Option3.Caption = "布" Option1.Value =...

  • 19165753944用vb做网络小游戏
    鲁祁胥VB做游戏可以是可以。可视化强。主要要学习一下网络操作。呵呵。如果不用控件。你可多看一些网络操作的API。还有,如果是大游戏,你要专用的服务器。其它的问题就太BT了。思路可以这样。用winsock控件联接。可以多联接和单连。然后通过发送数据包。比如。发送一个“jiafen 800”的数据。那么接收端就用 if...

  • 19165753944如何编写一套完整的VB小游戏程序
    鲁祁胥如果只是几百或者1千行并且不是太复杂的小游戏的话,并且不希望非常大的扩展下去,那就随便画画草图脑子有个大概思路就差不多可以开始了.如果楼主想用vb做,那可能不太合适,本人也只是用过它做过一些俄罗斯方块,贪食蛇之类的小游戏还有类似斗地主那样的牌类游戏.简单的说吧,首先你要知道你想做什么,并且...

  • 19165753944如何使用VB做小游戏
    鲁祁胥第1,学会在窗口上绘制图片 第2,运用Timer控件 第3,组合Timer控件控制动画绘制,比如每隔50毫秒绘制一张图 不好意思,我手上的VB程序都不在了,只能提供上述思路.

  • 相关主题精彩

    版权声明:本网站为非赢利性站点,内容来自于网络投稿和网络,若有相关事宜,请联系管理员

    Copyright © 喜物网