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

news2025/1/23 2:20:00

文章目录:

一:效果演示

二:实现思路

三:代码实现

form1

效果图

代码

form2

效果图

代码


一:效果演示

效果图◕‿◕✌✌✌ 

代码下载

二:实现思路

窗口1 
    就是实现窗口的跳转和关闭



窗口2 
    1.先添加背景图片、小鸟、障碍物、timer、分数显示

    2.小鸟
        2.1 放好小鸟的位置,让它自己不停的下降
        2.2 通过键盘、鼠标单击双击改变top让小鸟上升

    3.障碍物
        3.1 每四个为一组,上面和下面一样的
        3.2 让每一个到左边的距离递减从而移动
        3.3 每出界一个障碍物,改变它的位置,让它在后面显示
        3.4 后面改变位置的障碍物,也通过随机函数改变高度

    4.有变动的都在timer里面控制

    5.如果碰到障碍物就退出游戏
        5.1 看是否相交来判断
            小鸟到左边的位置 与 障碍物到左边的距离
            小鸟的高度       与 障碍物的height/top
        5.2 若相交
            事件监听关闭
            弹出对话框提示,并显示分数
            关闭窗口2,跳转到开始游戏的窗口1

    6.工具箱右键添加音乐url:G:\Game\BirdClass\game.mp3
       放在主目录里面,不然可能识别不出来

三:代码实现

form1

效果图

代码

Option Explicit

Private Sub Command1_Click()
    Form1.Visible = False
    Form2.Visible = True
End Sub

Private Sub Command2_Click()
    End
End Sub

Private Sub Command3_Click()
    Dim rule As String
    rule = MsgBox("通过按键盘空格、鼠标单击或双击控制小鸟。如果触碰到障碍则游戏结束!", vbQuestion, "游戏规则说明:")
End Sub

Private Sub Form_Load()

End Sub

form2

效果图

代码

Option Explicit
Dim score As Integer


Private Sub Form_Click()
    bird.Top = bird.Top - 800   '控制鸟
End Sub

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = Asc(" ") Then bird.Top = bird.Top - 800  '控制鸟,键盘空格高度上升
End Sub

Private Sub Image3_Click()

End Sub


Private Sub Form_Load()
    'G:\Game\BirdClass\game.mp3
    'WindowsMediaPlayer1.URL = App.Path & "/G:/Game/BirdClass/game.mp3"
End Sub

Private Sub Label1_Click()
    Label1.Visible = False
    Timer1.Enabled = True
    
End Sub

Private Sub Label1_DblClick()
    bird.Top = bird.Top - 800   '控制鸟
End Sub

Private Sub Timer1_Timer()
    '鸟的位置
    bird.Top = bird.Top + 400
       
    '上面移动
    shang1.Left = shang1.Left - 80
    shang2.Left = shang2.Left - 80
    shang3.Left = shang3.Left - 80
    shang4.Left = shang4.Left - 80
    score = score + 1
    Label2.Caption = score
    
    
    '下面移动
    xia1.Left = shang1.Left
    xia2.Left = shang2.Left
    xia3.Left = shang3.Left
    xia4.Left = shang4.Left
    
    '上面变动
        If shang1.Left + shang1.Width < 0 Then  '出界了
            shang1.Left = shang4.Left + shang4.Width + 800  '加一栏
                Randomize
                shang1.Height = Int(Rnd * 3000 + 800)   '改变高度
        End If
        
        If shang2.Left + shang2.Width < 0 Then
            shang2.Left = shang1.Left + shang1.Width + 800
                Randomize
                shang2.Height = Int(Rnd * 3000 + 800)
        End If
        
        If shang3.Left + shang3.Width < 0 Then
            shang3.Left = shang2.Left + shang2.Width + 800
                Randomize
                shang3.Height = Int(Rnd * 3000 + 800)
        End If
        
        If shang4.Left + shang4.Width < 0 Then
            shang4.Left = shang3.Left + shang3.Width + 800
                Randomize
                shang4.Height = Int(Rnd * 3000 + 800)
        End If
        
    '下面变动
        xia1.Top = shang1.Height + 3500
        xia2.Top = shang2.Height + 3500
        xia3.Top = shang3.Height + 3500
        xia4.Top = shang4.Height + 3500
        
    '碰撞
        '上面超出
            If bird.Left + bird.Width > shang1.Left And bird.Top < shang1.Height Then
                Timer1.Enabled = False
                
                Dim a1 As String
                a1 = MsgBox("非常遗憾,本局游戏 您输了哦!" + "您的得分为:" + Str(score) + "分", vbExclamation, "尊敬的玩家您好!")
                    Form1.Show
                    Form2.Hide
                    
            End If
            
            If bird.Left + bird.Width > shang2.Left And bird.Top < shang2.Height Then
                Timer1.Enabled = False
                
                Dim a2 As String
                a2 = MsgBox("非常遗憾,本局游戏 您输了哦!" + "您的得分为:" + Str(score) + "分", vbExclamation, "尊敬的玩家您好!")
                    Form1.Show
                    Form2.Hide
            End If
            
            If bird.Left + bird.Width > shang3.Left And bird.Top < shang3.Height Then
                Timer1.Enabled = False
                
                Dim a3 As String
                a3 = MsgBox("非常遗憾,本局游戏 您输了哦!" + "您的得分为:" + Str(score) + "分", vbExclamation, "尊敬的玩家您好!")
                    Form1.Show
                    Form2.Hide
            End If
        '下面超出
            If bird.Left + bird.Width > xia1.Left And bird.Top > xia1.Top Then
            
                Timer1.Enabled = False
                
                Dim b1 As String
                b1 = MsgBox("非常遗憾,本局游戏 您输了哦!", vbExclamation, "尊敬的玩家您好!")
                    Form1.Show
                    Form2.Hide
            End If
            
            If bird.Left + bird.Width > xia2.Left And bird.Top > xia2.Top Then
            
                Timer1.Enabled = False
                
                Dim b2 As String
                b2 = MsgBox("非常遗憾,本局游戏 您输了哦!", vbExclamation, "尊敬的玩家您好!")
                    Form1.Show
                    Form2.Hide
            End If
            
            If bird.Left + bird.Width > xia3.Left And bird.Top > xia3.Top Then
            
                Timer1.Enabled = False
                
                Dim b3 As String
                b3 = MsgBox("非常遗憾,本局游戏 您输了哦!", vbExclamation, "尊敬的玩家您好!")
                    Form1.Show
                    Form2.Hide
            End If
    
End Sub

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1046067.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【接口测试】Chrome浏览器F12调试工具抓包详细分析(超细)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 调试时使用最多的…

Docker网络+资源控制

一、Docker网络 Docker 网络实现原理 Docker使用Linux桥接&#xff0c;在宿主机虚拟一个Docker容器网桥(docker0)&#xff0c;Docker启动一个容器时会根据Docker网桥的网段分配给容器一个IP地址&#xff0c;称为Container-IP&#xff0c;同时Docker网桥是每个容器的默认网关。…

【计算机网络】IP数据报首部格式、最大传输单元MTU、最大分段大小MSS

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; 更多计算机网络知识专栏&#xff1a;计算机网络&#x1f525; 给大家跳段…

【生育险报销】

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学…

计算机视觉与深度学习-图像分割-视觉识别任务03-实例分割-【北邮鲁鹏】

目录 参考定义Mark R-CNN结构思路Mask R-CNN训练阶段使用的Mask样例Mask R-CNN实例分割结果Mask R-CNN检测姿态 参考 论文题目&#xff1a;Mask R-CNN 论文链接&#xff1a;论文下载 论文代码&#xff1a;Facebook代码链接&#xff1b;Tensorflow版本代码链接&#xff1b; K…

51单片机3【单片机的种类】

1.51单片机发展史 1. 发展史 &#xff08;1&#xff09;总结&#xff1a;早期是不分单片机和其他CPU的&#xff0c;早期都是一起的&#xff0c;后来应用级别的高端CPU相继推出用于别的行业&#xff08;PC&#xff0c;手机&#xff09;其中一支专用与低性能&#xff0c;低价格作…

Java基础简单整理

文章目录 Java语言具有以下特点&#xff1a;Java SE vs Java EEJVM vs JDK vs JRE为什么说 Java 语言编译与解释并存&#xff1f;Java 和 C 的区别?Java注释用法&#xff1a;Java标识符Java基本数据类型链接Java字符串类型链接基本类型和包装类型的区别&#xff1f;静态方法为…

Unity实现设计模式——观察者模式

Unity实现设计模式——观察者模式 观察者设计模式定义了对象间的一种一对多的组合关系&#xff0c;以便一个对象的状态发生变化时&#xff0c;所有依赖于它的对象都得到通知并自动刷新。 简单来说就是某个人需要收到通知只需要订阅这个通知&#xff0c;当通知发送时会发送到每…

自定义热加载:如何不停机实现核心代码更新

文章目录 1. 常见的几种实现代码热更新的几种方式对于开发环境我们可以使用部署环境1. 使用 Arthas 的 redefine 命令来加载新的 class 文件2. 利用 URLClassLoader 动态加载3. 通过Java的Instrumentation API 也是可以实现的 2. 实现1. ClassScanner扫描目录和加载类2. 定时任…

system trace

adb shell stopadb shell start //重启adb 数据会干净点adb shell //也试过在adb shell 外面dump system trace&#xff0c;但是同样的参数dump出来看不到如此详细&#xff0c;比如makeApplication的时长&#xff0c;线程执行被中断等atrace -z -b 40000 am wm view res ss g…

常用接口测试工具

首先&#xff0c;什么是接口呢&#xff1f; 接口一般来说有两种&#xff0c;一种是程序内部的接口&#xff0c;一种是系统对外的接口。 系统对外的接口&#xff1a;比如你要从别的网站或服务器上获取资源或信息&#xff0c;别人肯定不会把数据库共享给你&#xff0c;他只能给你…

如何使用ASO优化来提高应用的安装率

应用程序的成功并非一蹴而就&#xff0c;它需要大量的时间和工作&#xff0c;而这一切都取决于对流程的深入理解、对结果的衡量以及对执行的某些营销活动的有效性进行分析。但哪些优化在App Store或Google Play上取得成功最关键&#xff1f;为了取得成功&#xff0c;我们必须跟…

2023/9/27 -- ARM

【汇编语言相关语法】 1.汇编语言的组成部分 1.伪操作&#xff1a;不参与程序的执行&#xff0c;但是用于告诉编译器程序该怎么编译 .text .global .end .if .else .endif .data2.汇编指令 编译器将一条汇编指令编译成一条机器码&#xff0c;在内存里一条指令占4字节内…

服务断路器_Resilience4j重试机制

重试机制比较简单&#xff0c;当服务端处理客户端请求异常时&#xff0c;服务端将会开启重试机制&#xff0c;重试期间内&#xff0c;服务端将每隔一段时间重试业务逻辑处理。 如果最大重试次数内成功处理业务&#xff0c;则停止重试&#xff0c;视为处理成功。如果在最大重试次…

手动关闭Spring定时任务

一、问题 比如我写了一个这样的定时任务类&#xff0c;该定时任务很简单&#xff1a;每秒打印一行craneing… 那么后期我想中途关闭和开启这个定时任务应该怎么处理&#xff1f; 二、解决 spring定时任务依赖 ThreadPoolTaskScheduler 这个类&#xff0c;我们只需要顶掉这个…

UE蓝图学习(从Unity3D而来)

一、UE组件对比Unity3D&#xff0c;从Unity3D过渡来学的角度出发&#xff0c;可以理解为在 空物体下放置子物体。UE没有U3D那种可以将组件挂在自身空物体上面。 二、UE 蓝图的情境提示&#xff0c;必须先找到相应的类型&#xff0c;对象对象、事件事件&#xff0c;才能找到相应…

案例题概述

案例题概述 考点 考点 新教材的新增考点 第一题必做&#xff0c;之后是4选2 感觉都是记忆的&#xff0c;课件完整一些&#xff0c;之后以看课件为主了&#xff0c;不在做详细笔记了

Scrapy框架Splash渲染

Scrapy框架是一款强大而灵活的Python网络爬虫框架&#xff0c;用于快速、高效地爬取和提取网页数据。然而&#xff0c;对于一些使用动态渲染技术的网站&#xff0c;Scrapy在处理JavaScript生成的内容上可能会有些困难。为了应对这种情况&#xff0c;Scrapy提供了Splash渲染服务…

数码产品数码配件无线键盘等出口欧盟CE-RED认证测试办理

数码产品数码配件无线键盘CE-RED认证测试办理 无线产品CE-RED认证进入东欧市场规定&#xff1a; 在通信终端设备和无线产品在这些/地区合法销售之前&#xff0c;必须按照 RED 指令进行测试&#xff0c;并且还必须提供 CE 标志。无线远程控制产品必须符合 RED 指令的 REDEU 要…

unittest单元测试框架使用

什么是unittest 这里我们将要用的unittest是python的单元测试框架&#xff0c;它的官网是 25.3. unittest — Unit testing framework — Python 2.7.18 documentation&#xff0c;在这里我们可以得到全面的信息。 当我们写的用例越来越多时&#xff0c;我们就需要考虑用例编写…