VB实现点爆炸效果

'需在窗体放置以下 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 ThenCall Init '初始化喷发物
ElsenStr = "已停止"Picture1.Font.Size = 72Picture1.ForeColor = &HFFFFFFPicture1.CurrentX = -Picture1.TextWidth(nStr) * 0.5Picture1.CurrentY = -Picture1.TextHeight(nStr) * 0.5Picture1.Print nStr
End If
End Sub
Private Sub Init()
Dim V As Single, J As Single
Picture1.FillStyle = 0
Picture1.BackColor = &H330000
Picture1.AutoRedraw = TruectR = Picture1.ScaleWidth * 0.5 '红球收缩前的初始半径
ctDs = 1000
ReDim ctD(ctDs) '初始化喷发物,ctDs 表示总个数Randomize
For I = 1 To ctDsJ = 3.1415926 * 2 * RndV = 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 * 2T = 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.ClsctR = ctR * 0.9 '减小红球半径
If ctR > 10 Then GoTo Red1 '爆炸前,只显示收缩的红球
W1 = Picture1.ScaleWidth * 0.5
H1 = Picture1.ScaleHeight * 0.5For I = 1 To ctDs'得到喷发物 ctD(I) 的新位置,并加速 2%ctD(I).x = ctD(I).x + ctD(I).toXctD(I).y = ctD(I).y + ctD(I).toYctD(I).toX = ctD(I).toX * 1.02ctD(I).toY = ctD(I).toY * 1.02'判断喷发物是否飞出可见区If ctD(I).x < -W1 Or ctD(I).x > W1 Then GoTo NextIIf ctD(I).y < -H1 Or ctD(I).y > H1 Then GoTo NextIS = S + 1 '计数可见喷发物的个数W = 0.02 * Sqr((ctD(I).x) ^ 2 + (ctD(I).y) ^ 2) '根据与中心点的距离确定喷发物的大小If Check1.Value = 1 ThenIf ctD(I).Ci = 0 Then Se = 255If ctD(I).Ci = 1 Then Se = RGB(255, 255, 0)If ctD(I).Ci > 1 Then Se = ctD(I).SectD(I).Ci = ctD(I).Ci + 1If ctD(I).Ci > 2 Then ctD(I).Ci = 0ElseSe = ctD(I).SeEnd If'画影子Picture1.FillColor = SePicture1.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
相关文章:
VB实现点爆炸效果
需在窗体放置以下 4 个控件,所有控件不用设置任何属性,均采用默认设置: ’ Picture1,Command1,Check1,Timer1 Option Explicit Dim I Dim ctD() As tyD, ctDs As Long, ctR As Single Private Type tyD x…...
ICG-alkyne,吲哚菁绿-炔基结构式,实验室科研试剂,CAS号:1622335-41-4
ICG-alkyne,吲哚菁绿-炔基 中文名称:吲哚菁绿-炔基 CAS号:1622335-41-4 英文名称:ICG-alkyne 英文别名:ICG-alk 性状:绿色粉末 化学式:C48H53N3O4S 分子量:768.03 溶剂:溶于…...
【并发编程】volatile的原理我好像又懂了
文章目录优秀引用1、概述2、可见性保证2.1、什么是可见性2.2、例子举证2.3、结果解析3、有序性保证3.1、什么是有序性3.2、什么是重排序3.3、例子举证4、无法保证原子性4.1、什么是原子性4.2、例子举证5、内存屏障5.1、什么是内存屏障5.2、不同内存屏障的作用6、volatile和sync…...
【已更新实例】Java网络爬虫-HttpClient工具类
关于用Java进行爬虫的资料网上实在少之又少,但作为以一名对Java刚刚初窥门径建立好兴趣的学生怎么能静得下心用新学的Python去写,毕竟Java是世界上最好的语言嘛 (狗头)关于Java爬虫最受欢迎的一个框架Jsoup常常搭配HttpClient来使用,因为Jsou…...
7.2 向量的坐标
🙌作者简介:数学与计算机科学学院出身、在职高校高等数学专任教师,分享学习经验、生活、 努力成为像代码一样有逻辑的人! 🌙个人主页:阿芒的主页 ⭐ 高等数学专栏介绍:本专栏系统地梳理高等数学…...
公式编写1000问21-22
21.问: 求助——(周,日,60分钟,30分钟)MACD同时向上的公式怎么表达 答(知无不言): z:“macd.dea#week”; r:“macd.dea#day”; f:“macd.dea#min60”; f1:“macd.dea#min30”; rz:“macd.dea##week”; rr:“macd.dea##day”; rf:“…...
1041 考试座位号
每个 PAT 考生在参加考试时都会被分配两个座位号,一个是试机座位,一个是考试座位。正常情况下,考生在入场时先得到试机座位号码,入座进入试机状态后,系统会显示该考生的考试座位号码,考试时考生需要换到考试…...
2023年3月北京/广州/杭州/深圳数据治理工程师认证DAMA-CDGA/CDGP
DAMA认证为数据管理专业人士提供职业目标晋升规划,彰显了职业发展里程碑及发展阶梯定义,帮助数据管理从业人士获得企业数字化转型战略下的必备职业能力,促进开展工作实践应用及实际问题解决,形成企业所需的新数字经济下的核心职业…...
【AICG】2、扩散模型 | 到底什么是扩散模型?
文章目录一、什么是扩散模型二、扩散模型相关定义2.1 符号和定义2.2 问题规范化三、可以提升的点参考论文:A Survey on Generative Diffusion Model github:https://github.com/chq1155/A-Survey-on-Generative-Diffusion-Model 一、什么是扩散模型 已…...
高等数学——多元函数微分学
文章目录多元函数微分学多元函数的极限多元函数的连续性偏导数定义高阶偏导数全微分定义全微分存在的必要条件全微分存在的充分条件多元函数的微分法复合函数微分法隐函数微分法多元函数的极值与最值无约束极值条件极值及拉格朗日乘数法最大值最小值二重积分概念性质计算利用直…...
一文打通Sleuth+Zipkin 服务链路追踪
1、为什么用 微服务架构是一个分布式架构,它按业务划分服务单元,一个分布式系统往往有很多个服务单元。由于服务单元数量众多,业务的复杂性,如果出现了错误和异常,很难去定位。主要体现在,一个请求可能需要…...
牛客刷题第一弹
1.异常处理 都是Throwable的子类: ①.Exception(异常):是程序本身可以处理的异常。 ②.Error(错误): 是程序无法处理的错误。这些错误表示故障发生于虚拟机自身、或者发生在虚拟机试图执行应用时,一般不需…...
K8s:通过 Kubeshark 体验 大白鲨(Wireshark)/TCPDump 监控 Kubernetes 集群
写在前面 分享一个 k8s 集群流量查看器很轻量的一个工具,监控方便博文内容涉及: Kubeshark 简单介绍Windows、Linux 下载运行监控DemoKubeshark 特性功能介绍 理解不足小伙伴帮忙指正 对每个人而言,真正的职责只有一个:找到自我。…...
MySQL查询索引原则
文章目录 等值匹配原则最左前缀匹配原则范围查找规则等值匹配+范围查找Order By + limit 优化分组查询优化总结MySQL 是如何帮我们维护非主键索引的等值匹配原则 我们现在已经知道了如果是【主键索引】,在插入数据的时候是根据主键的顺序依次往后排列的,一个数据页不够就会分…...
布谷鸟优化算法C++
#include <iostream> #include <vector> #include <cmath> #include <random> #include <time.h> #include <fstream> #define pi acos(-1) //5只布谷鸟 constexpr int NestNum 40; //pi值 //规定X,Y 的取值范围 constexpr double X_…...
三体到底是啥?用Python跑一遍就明白了
文章目录拉格朗日方程推导方程组微分方程算法化求解画图动图绘制温馨提示,只想看图的画直接跳到最后一节拉格朗日方程 此前所做的一切三体和太阳系的动画,都是基于牛顿力学的,而且直接对微分进行差分化,从而精度非常感人…...
Golang-Hello world
目录 安装 Go(如果尚未安装) 编写Hello world 使用Golang的外部包 自动下载需要的外部包...
this指针C++
🐶博主主页:ᰔᩚ. 一怀明月ꦿ ❤️🔥专栏系列:线性代数,C初学者入门训练,题解C,C的使用文章 🔥座右铭:“不要等到什么都没有了,才下定决心去做” …...
SpringBoot+WebSocket实时监控异常
# 写在前面此异常非彼异常,标题所说的异常是业务上的异常。最近做了一个需求,消防的设备巡检,如果巡检发现异常,通过手机端提交,后台的实时监控页面实时获取到该设备的信息及位置,然后安排员工去处理。因为…...
Baumer工业相机堡盟相机如何使用自动曝光功能(自动曝光优点和行业应用)(C++)
项目场景 Baumer工业相机堡盟相机是一种高性能、高质量的工业相机,可用于各种应用场景,如物体检测、计数和识别、运动分析和图像处理。 Baumer的万兆网相机拥有出色的图像处理性能,可以实时传输高分辨率图像。此外,该相机还具…...
【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力
引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...
【算法训练营Day07】字符串part1
文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接:344. 反转字符串 双指针法,两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...
Rust 异步编程
Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...
CMake 从 GitHub 下载第三方库并使用
有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...
Spring数据访问模块设计
前面我们已经完成了IoC和web模块的设计,聪明的码友立马就知道了,该到数据访问模块了,要不就这俩玩个6啊,查库势在必行,至此,它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据(数据库、No…...
Springboot社区养老保险系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,社区养老保险系统小程序被用户普遍使用,为方…...
视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)
前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块,…...
Mysql8 忘记密码重置,以及问题解决
1.使用免密登录 找到配置MySQL文件,我的文件路径是/etc/mysql/my.cnf,有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...
Chrome 浏览器前端与客户端双向通信实战
Chrome 前端(即页面 JS / Web UI)与客户端(C 后端)的交互机制,是 Chromium 架构中非常核心的一环。下面我将按常见场景,从通道、流程、技术栈几个角度做一套完整的分析,特别适合你这种在分析和改…...
stm32wle5 lpuart DMA数据不接收
配置波特率9600时,需要使用外部低速晶振...
