VB实现点爆炸效果

news2025/3/2 4:11:52

在这里插入图片描述
'需在窗体放置以下 4 个控件,所有控件不用设置任何属性,均采用默认设置:
’ Picture1,Command1,Check1,Timer1

Option Explicit
Dim I

Dim ctD() As tyD, ctDs As Long, ctR As Single
Private Type tyD
x As Single
y As Single
toX As Single
toY As Single
Se As Long
Ci As Long
End Type

Private Sub Form_Load()
Me.Caption = “宇宙大爆炸 - 演示”
Command1.Caption = “开始演示”
Check1.Caption = “闪烁光点”
Timer1.Enabled = False
End Sub

Private Sub Command1_Click()
Dim nStr As String

Timer1.Interval = 20
Timer1.Enabled = Not Timer1.Enabled
If Timer1.Enabled Then
    Call Init '初始化喷发物
Else
    nStr = "已停止"
    Picture1.Font.Size = 72
    Picture1.ForeColor = &HFFFFFF
    Picture1.CurrentX = -Picture1.TextWidth(nStr) * 0.5
    Picture1.CurrentY = -Picture1.TextHeight(nStr) * 0.5
    Picture1.Print nStr
End If

End Sub

Private Sub Init()
Dim V As Single, J As Single

Picture1.FillStyle = 0
Picture1.BackColor = &H330000
Picture1.AutoRedraw = True

ctR = Picture1.ScaleWidth * 0.5 '红球收缩前的初始半径
ctDs = 1000
ReDim ctD(ctDs)    '初始化喷发物,ctDs 表示总个数

Randomize
For I = 1 To ctDs
    J = 3.1415926 * 2 * Rnd
    V = 0.01 + 5 * Rnd '喷发方向和速度
    ctD(I).toX = V * Sin(J)
    ctD(I).toY = V * Cos(J)
    ctD(I).Se = Rnd * &HFFFFFF '喷发物颜色
    ctD(I).Ci = Rnd * 3        '初始光点闪烁状态
Next

End Sub

Private Sub Form_Resize()
Dim L As Single, T As Single, H As Single, H1 As Single

'设置控件位置
H1 = Me.TextHeight("A")
L = H1 * 0.3
T = L
Command1.Move L, T, H1 * 6, H1 * 2
Check1.Move L * 3 + Command1.Width, T, H1 * 6, H1 * 2

T = T * 2 + Command1.Height
H = Me.ScaleHeight - T
If H > 0 Then Picture1.Move 0, T, Me.ScaleWidth, H

'将 Picture1 的中心设置为坐标原点
Picture1.ScaleMode = 3
Picture1.ScaleLeft = -Picture1.ScaleWidth * 0.5
Picture1.ScaleTop = -Picture1.ScaleHeight * 0.5

End Sub

Private Sub Timer1_Timer()
Call Blast
End Sub
Private Sub Blast()
'显示一次爆炸的瞬时状态
Dim I As Long, S As Long, Se As Long
Dim W As Single, W1 As Single, H1 As Single

Picture1.Cls

ctR = ctR * 0.9            '减小红球半径
If ctR > 10 Then GoTo Red1 '爆炸前,只显示收缩的红球
W1 = Picture1.ScaleWidth * 0.5
H1 = Picture1.ScaleHeight * 0.5

For I = 1 To ctDs
    '得到喷发物 ctD(I) 的新位置,并加速 2%
    ctD(I).x = ctD(I).x + ctD(I).toX
    ctD(I).y = ctD(I).y + ctD(I).toY
    ctD(I).toX = ctD(I).toX * 1.02
    ctD(I).toY = ctD(I).toY * 1.02

    '判断喷发物是否飞出可见区
    If ctD(I).x < -W1 Or ctD(I).x > W1 Then GoTo NextI
    If ctD(I).y < -H1 Or ctD(I).y > H1 Then GoTo NextI

    S = S + 1 '计数可见喷发物的个数
    W = 0.02 * Sqr((ctD(I).x) ^ 2 + (ctD(I).y) ^ 2) '根据与中心点的距离确定喷发物的大小
    If Check1.Value = 1 Then
        If ctD(I).Ci = 0 Then Se = 255
        If ctD(I).Ci = 1 Then Se = RGB(255, 255, 0)
        If ctD(I).Ci > 1 Then Se = ctD(I).Se
        ctD(I).Ci = ctD(I).Ci + 1
        If ctD(I).Ci > 2 Then ctD(I).Ci = 0
    Else
        Se = ctD(I).Se
    End If

    '画影子
    Picture1.FillColor = Se
    Picture1.Circle (ctD(I).x * 0.98, ctD(I).y * 0.98), W * 0.8, Se
    '画一个喷发物
    Picture1.Circle (ctD(I).x, ctD(I).y), W, Se

NextI:
Next
If S < 1 Then Call Init '所有喷发物已飞出可见区,重新初始化喷发物

Red1:
'画收缩的红球
If ctR >= 1 Then Picture1.FillColor = 255: Picture1.Circle (0, 0), ctR, 255
End Sub

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

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

相关文章

java单元测试(二)H2数据库篇

java单元测试&#xff08;二&#xff09;H2数据库篇一、什么是H2&#xff1f;二、Springboot项目集成H22.1、引入H2依赖2.2、初始化spring配置文件application.test.xml2.3、初始化H2数据库DDL/DML语句三、编写单元测试3.1、首先我们创建测试类3.2、编写测试用例3.3、测试用例一…

elasticsearch集群搭建(ES集群搭建)

目录一、下载Elasticsearch1.选择你要下载的Elasticsearch版本二、采用通用搭建集群的方法三、配置三台es1.上传压缩包到任意一台虚拟机中2.解压并修改配置文件(配置单台es)3.配置三台es集群一、下载Elasticsearch 1.选择你要下载的Elasticsearch版本 es下载地址 这里我下载…

Mysql架构以及Mysql引擎

Mysql架构1.连接层&#xff1a;负责接收客户端的连接请求最上层是一些客户端和连接服务&#xff0c;包含本地 sock 通信和大多数基于客户端/服务端工具实现的类似于 tcp/ip 的通信。主要完成一些类似于连接处理、授权认证、及相关的安全方案。2.服务层&#xff1a;sql接口接收s…

【UEFI实战】BIOS与IPMI

KCS KCS全称是Keyboard Controller Style&#xff0c;关于这个名称不用过多的追究&#xff0c;只需要知道它是系统&#xff08;BIOS和OS&#xff09;和BMC通信的一种基本方式即可。本文将介绍BIOS下的KCS接口&#xff0c;包括接口使用方式和数据。内容参考自《ipmi-second-gen…

[LeetCode周赛复盘] 第 99 场双周赛20230304

[LeetCode周赛复盘] 第 99 场双周赛20230304 一、本周周赛总结二、 [Easy] 2578. 最小和分割1. 题目描述2. 思路分析3. 代码实现三、[Medium] 2579. 统计染色格子数1. 题目描述2. 思路分析3. 代码实现四、[Medium] 2580. 统计将重叠区间合并成组的方案数1. 题目描述2. 思路分析…

DALL·E 2 论文阅读笔记

《Hierarchical Text-Conditional Image Generation with CLIP Latents》Paper: https://cdn.openai.com/papers/dall-e-2.pdfProject: https://openai.com/product/dall-e-2Author: OpenAI闲言碎语时间线&#xff1a;2021.01推出DALLE&#xff0c;2021年底推出GLIDE&#xff0…

锦正茂风冷系列电源JCP-10-80的技术参数

JCP-10-80为高稳定度的双极性恒流电源&#xff0c;广泛应用于电磁铁、亥姆霍兹线圈等感性负载的励磁。电源采用线性电源结构&#xff0c;输出电流稳定度高&#xff0c;纹波和噪声低。电源输出电流可在正负额定电流*值之间连续变化&#xff0c;电流平滑连续过零&#xff0c;可使…

引出生命周期、生命周期_挂载流程、生命周期_更新流程、生命周期_销毁流程、生命周期_总结——Vue

目录 一、引出生命周期 二、生命周期_挂载流程 三、生命周期_更新流程 四、生命周期_销毁流程 五、生命周期_总结 一、引出生命周期 生命周期&#xff1a; 1.又名&#xff1a;生命周期回调函数、生命周期函数、生命周期钩子。 2.是什么&#xff1a;Vue在关键时刻帮我们调…

centos安装 jenkins

目录 一、安装 jdk 二、安装 maven 三、安装 jenkins 官网地址&#xff1a;Jenkins 一、安装 jdk 首先检索包含 java 的列表 yum list java* 检索1.8的列表 yum list java-1.8* 安装 1.8.0 的所有文件 yum install java-1.8.0-openjdk* -y使用命令检查是否安装成功 …

Git图解-IDEA中的Git操作

目录 一、配置Idea 二、项目克隆 三、文件状态识别 四、Git操作 4.1 git add--添加暂存区 4.2 git commit--提交本地仓库 4.3 git push--推送远程仓库 4.4 git pull--更新本地仓库 五、完整开发流程 5.1 步骤1&#xff1a;克隆项目 5.2 步骤2&#xff1a;创建自己开发…

呆头鹅批量剪辑软件,一天制作1000+视频过审神器,0基础批量操作

当我们需要处理大量的视频时&#xff0c;怎么样才能够让工作变得更加简单&#xff1f;可以来试试呆头鹅批量剪辑软件&#xff0c;软件功能非常强大&#xff0c;支持批量剪辑视频&#xff0c;剪辑的过程中可以设置输出的位置和分辨率&#xff0c;同时可以对视频进行一些编辑处理…

CentOS定时任务——crontab

crontab Linux crontab 是用来定期执行程序的命令。 crond 命令每分钟会定期检查是否有要执行的工作&#xff0c;如果有要执行的工作便会自动执行该工作。 注意&#xff1a;新创建的 cron 任务&#xff0c;不会马上执行&#xff0c;至少要过 2 分钟后才可以&#xff0c;当然你…

软件测试16

在桌面上打开终端窗口, 执行如下操作: 将根目录下所有文件的详细信息输出到 demo 文件中查看 demo 文件前 5 行内容查看 demo 文件后 5 行内容将 ping www.itheima.com 的信息输出到 ping_log 文件中重新开启一个终端窗口, 动态查看 ping_log 文件中的信息 查看日志文件内容…

unity3D基础操作之01--unity3d窗口界面介绍

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录最常使用5种窗口1、Scene场景编辑窗口2、Game游戏运行窗口需要注意的是3、Hierarchy场景物体列表窗口4、Project项目资源列表窗口需要注意的是5、Inspector属性编辑列…

4.Spring Cloud (Hoxton.SR8) 学习笔记—Nacos微服务治理、Nacos配置管理

本文目录如下&#xff1a;一、Nacos微服务治理Nacos 下载 与 启动Spring Cloud 集成 NacosIDEA 同一个 Application 启动多次Nacos - 配置集群Nacos - 设置负载均衡Nacos - 设置服务实例的权重二、Nacos 配置管理Nacos - 合理的把配置信息迁移到 Nacos 中Nacos - 如何使用 Naco…

自然语言处理中数据增强(Data Augmentation)技术最全盘点

与“计算机视觉”中使用图像数据增强的标准做法不同&#xff0c;在NLP中&#xff0c;文本数据的增强非常少见。这是因为对图像的琐碎操作&#xff08;例如将图像旋转几度或将其转换为灰度&#xff09;不会改变其语义。语义上不变的转换的存在是使增强成为Computer Vision研究中…

【Java开发】设计模式 03:建造者模式

1 建造者模式介绍建造者模式使用多个简单的对象一步一步构建成一个复杂的对象。当一个类的构造函数参数个数超过4个&#xff0c;而且这些参数有些是可选的参数&#xff0c;考虑使用构造者模式。&#x1f4cc; 场景当一个类的构造函数参数超过4个&#xff0c;而且这些参数有些是…

【论文研读 上】基于开源软件的无人机飞行仿真 鹿珂珂,刘登攀,王超

基于开源软件的无人机飞行仿真 摘 要 飞行控制算法设计和仿真是无人机研制的关键步骤。为了缩短无人机飞行控制算法设计周期和试验成本&#xff0c;对无人 机纵向和侧向控制算法进行了设计&#xff0c;并基于开源软件开发了固定翼无人机可视化的飞行仿真系统&#xff0c; 固定…

Kafka入门教程

1 Kafka安装 1.1 压缩包安装 1.1.1 JDK环境安装 Kafka是依赖JDK环境的,所以需要事先安装好JDK 下载JDK安装包: Oracle JDK8下载SSH上传到想要安装的目录,比如 /opt.然后使用tar -zxvf jdk-8u351-linux-x64.tar.gz命令解压 添加环境变量 vi /etc/profile,输入如下内容保存后…

【9.数据页结构】

概述 InnoDB 的数据是按「数据页」为单位来读写的&#xff0c;也就是说&#xff0c;当需要读一条记录的时候&#xff0c;并不是将这个记录本身从磁盘读出来&#xff0c;而是以页为单位&#xff0c;将其整体读入内存。数据库的 I/O 操作的最小单位是页&#xff0c;InnoDB 数据页…