• 实战项目:VB实现小鸟快跑小游戏


    文章目录:

    一:效果演示

    二:实现思路

    三:代码实现

    form1

    效果图

    代码

    form2

    效果图

    代码


    一:效果演示

    效果图◕‿◕✌✌✌ 

    代码下载

    二:实现思路

    1. 窗口1
    2. 就是实现窗口的跳转和关闭
    3. 窗口2
    4. 1.先添加背景图片、小鸟、障碍物、timer、分数显示
    5. 2.小鸟
    6. 2.1 放好小鸟的位置,让它自己不停的下降
    7. 2.2 通过键盘、鼠标单击双击改变top让小鸟上升
    8. 3.障碍物
    9. 3.1 每四个为一组,上面和下面一样的
    10. 3.2 让每一个到左边的距离递减从而移动
    11. 3.3 每出界一个障碍物,改变它的位置,让它在后面显示
    12. 3.4 后面改变位置的障碍物,也通过随机函数改变高度
    13. 4.有变动的都在timer里面控制
    14. 5.如果碰到障碍物就退出游戏
    15. 5.1 看是否相交来判断
    16. 小鸟到左边的位置 与 障碍物到左边的距离
    17. 小鸟的高度 与 障碍物的height/top
    18. 5.2 若相交
    19. 事件监听关闭
    20. 弹出对话框提示,并显示分数
    21. 关闭窗口2,跳转到开始游戏的窗口1
    22. 6.工具箱右键添加音乐url:G:\Game\BirdClass\game.mp3
    23. 放在主目录里面,不然可能识别不出来

    三:代码实现

    form1

    效果图

    代码

    1. Option Explicit
    2. Private Sub Command1_Click()
    3. Form1.Visible = False
    4. Form2.Visible = True
    5. End Sub
    6. Private Sub Command2_Click()
    7. End
    8. End Sub
    9. Private Sub Command3_Click()
    10. Dim rule As String
    11. rule = MsgBox("通过按键盘空格、鼠标单击或双击控制小鸟。如果触碰到障碍则游戏结束!", vbQuestion, "游戏规则说明:")
    12. End Sub
    13. Private Sub Form_Load()
    14. End Sub

    form2

    效果图

    代码

    1. Option Explicit
    2. Dim score As Integer
    3. Private Sub Form_Click()
    4. bird.Top = bird.Top - 800 '控制鸟
    5. End Sub
    6. Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    7. If KeyCode = Asc(" ") Then bird.Top = bird.Top - 800 '控制鸟,键盘空格高度上升
    8. End Sub
    9. Private Sub Image3_Click()
    10. End Sub
    11. Private Sub Form_Load()
    12. 'G:\Game\BirdClass\game.mp3
    13. 'WindowsMediaPlayer1.URL = App.Path & "/G:/Game/BirdClass/game.mp3"
    14. End Sub
    15. Private Sub Label1_Click()
    16. Label1.Visible = False
    17. Timer1.Enabled = True
    18. End Sub
    19. Private Sub Label1_DblClick()
    20. bird.Top = bird.Top - 800 '控制鸟
    21. End Sub
    22. Private Sub Timer1_Timer()
    23. '鸟的位置
    24. bird.Top = bird.Top + 400
    25. '上面移动
    26. shang1.Left = shang1.Left - 80
    27. shang2.Left = shang2.Left - 80
    28. shang3.Left = shang3.Left - 80
    29. shang4.Left = shang4.Left - 80
    30. score = score + 1
    31. Label2.Caption = score
    32. '下面移动
    33. xia1.Left = shang1.Left
    34. xia2.Left = shang2.Left
    35. xia3.Left = shang3.Left
    36. xia4.Left = shang4.Left
    37. '上面变动
    38. If shang1.Left + shang1.Width < 0 Then '出界了
    39. shang1.Left = shang4.Left + shang4.Width + 800 '加一栏
    40. Randomize
    41. shang1.Height = Int(Rnd * 3000 + 800) '改变高度
    42. End If
    43. If shang2.Left + shang2.Width < 0 Then
    44. shang2.Left = shang1.Left + shang1.Width + 800
    45. Randomize
    46. shang2.Height = Int(Rnd * 3000 + 800)
    47. End If
    48. If shang3.Left + shang3.Width < 0 Then
    49. shang3.Left = shang2.Left + shang2.Width + 800
    50. Randomize
    51. shang3.Height = Int(Rnd * 3000 + 800)
    52. End If
    53. If shang4.Left + shang4.Width < 0 Then
    54. shang4.Left = shang3.Left + shang3.Width + 800
    55. Randomize
    56. shang4.Height = Int(Rnd * 3000 + 800)
    57. End If
    58. '下面变动
    59. xia1.Top = shang1.Height + 3500
    60. xia2.Top = shang2.Height + 3500
    61. xia3.Top = shang3.Height + 3500
    62. xia4.Top = shang4.Height + 3500
    63. '碰撞
    64. '上面超出
    65. If bird.Left + bird.Width > shang1.Left And bird.Top < shang1.Height Then
    66. Timer1.Enabled = False
    67. Dim a1 As String
    68. a1 = MsgBox("非常遗憾,本局游戏 您输了哦!" + "您的得分为:" + Str(score) + "分", vbExclamation, "尊敬的玩家您好!")
    69. Form1.Show
    70. Form2.Hide
    71. End If
    72. If bird.Left + bird.Width > shang2.Left And bird.Top < shang2.Height Then
    73. Timer1.Enabled = False
    74. Dim a2 As String
    75. a2 = MsgBox("非常遗憾,本局游戏 您输了哦!" + "您的得分为:" + Str(score) + "分", vbExclamation, "尊敬的玩家您好!")
    76. Form1.Show
    77. Form2.Hide
    78. End If
    79. If bird.Left + bird.Width > shang3.Left And bird.Top < shang3.Height Then
    80. Timer1.Enabled = False
    81. Dim a3 As String
    82. a3 = MsgBox("非常遗憾,本局游戏 您输了哦!" + "您的得分为:" + Str(score) + "分", vbExclamation, "尊敬的玩家您好!")
    83. Form1.Show
    84. Form2.Hide
    85. End If
    86. '下面超出
    87. If bird.Left + bird.Width > xia1.Left And bird.Top > xia1.Top Then
    88. Timer1.Enabled = False
    89. Dim b1 As String
    90. b1 = MsgBox("非常遗憾,本局游戏 您输了哦!", vbExclamation, "尊敬的玩家您好!")
    91. Form1.Show
    92. Form2.Hide
    93. End If
    94. If bird.Left + bird.Width > xia2.Left And bird.Top > xia2.Top Then
    95. Timer1.Enabled = False
    96. Dim b2 As String
    97. b2 = MsgBox("非常遗憾,本局游戏 您输了哦!", vbExclamation, "尊敬的玩家您好!")
    98. Form1.Show
    99. Form2.Hide
    100. End If
    101. If bird.Left + bird.Width > xia3.Left And bird.Top > xia3.Top Then
    102. Timer1.Enabled = False
    103. Dim b3 As String
    104. b3 = MsgBox("非常遗憾,本局游戏 您输了哦!", vbExclamation, "尊敬的玩家您好!")
    105. Form1.Show
    106. Form2.Hide
    107. End If
    108. End Sub
  • 相关阅读:
    JS中的事件
    C和C++教程
    基于Python的人脸互换系统设计与实现
    nodejs excel操作(读取和生成)
    智慧食堂这个技术,有点秀
    Spring Boot(Vue3+ElementPlus+Axios+MyBatisPlus+Spring Boot 前后端分离)【七】
    【C++】替代--whole-archive的一种方式
    算法训练Day28 | LeetCode93.复原IP地址(回溯算法中的切割问题2);78 子集(每个节点都收集结果);90.子集II(子集问题+去重)
    Torch截断一部分后是否能梯度回传
    【数据结构】—— 链表/队列/栈/单调栈/单调队列
  • 原文地址:https://blog.csdn.net/liu17234050/article/details/133245542