软件价值14-碰撞弹球

晶振匹配电容容值计算方法 在使用晶振时,应仔细参考晶振规格书,以确保正确选择匹配电容,从而获得稳定和精准的时钟源。 阅读详情

用html及javascript实现的碰撞弹球。鼠标点击一次就会生成一个小球,小球停止跳动后就会消失。

代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Bouncing Balls Which Eventually Fade Out with Screen Border Adaptation</title>
    <style>
        body, html {
            margin: 0;
            padding: 0;
            overflow: hidden;
            height: 100%;
        }
        canvas {
            background-color: white;
            display: block;
            width: 100%;
            height: 100%;
        }
    </style>
</head>
<body>
<canvas id="gameCanvas"></canvas>
<script>
    document.addEventListener('DOMContentLoaded', () => {
    const canvas = document.getElementById('gameCanvas');
    const ctx = canvas.getContext('2d');
    canvas.width = window.innerWidth;
    canvas.height = window.innerHeight;

    let balls = []; // Store all balls

    function addBall(x, y) {
        let ball = {
            x: x,
            y: y,
            radius: 20,
            velocityX: (Math.random() - 0.5) * 10,
            velocityY: (Math.random() - 0.5) * 10,
            gravity: 0.5,
            damping: 0.9,
            opacity: 1, // New property for managing the fade-out effect
            onGround: false, // Tracks whether the ball is on the ground
        };
        balls.push(ball);
    }

    canvas.addEventListener('click', function(event) {
        addBall(event.clientX, event.clientY); // Add a new ball at the click position
    });

    function updateBall(ball, index) {
        if(ball.opacity <= 0){ // Remove ball if it's fully transparent
            balls.splice(index, 1);
            return;
        }

        ball.velocityY += ball.gravity;
        ball.y += ball.velocityY;
        ball.x += ball.velocityX;

        // Bounce off the floor
        if (ball.y + ball.radius > canvas.height) {
            ball.y = canvas.height - ball.radius;
            ball.velocityY *= -ball.damping;
            // Check if the ball is barely moving to start fading it out
            if(Math.abs(ball.velocityY) < 1) ball.onGround = true;
        }

        // Bounce off the walls
        if (ball.x + ball.radius > canvas.width || ball.x - ball.radius < 0) {
            ball.velocityX *= -ball.damping;
        }

        // Fade out if on the ground
        if(ball.onGround) ball.opacity -= 0.05;
    }

    function drawBall(ball) {
        ctx.fillStyle = `rgba(0, 0, 0, ${ball.opacity})`;
        ctx.beginPath();
        ctx.arc(ball.x, ball.y, ball.radius, 0, Math.PI * 2);
        ctx.fill();
    }

    function animate() {
        ctx.clearRect(0, 0, canvas.width, canvas.height); // Clear canvas

        balls.forEach((ball, index) => {
            updateBall(ball, index);
            if(ball) drawBall(ball); // Check if ball wasn't removed
        });

        requestAnimationFrame(animate);
    }

    animate();
});
</script>
</body>
</html>

这段代码是一个简单的 HTML、CSS 和 JavaScript 组合,用于创建一个交互式的画布动画,实现了以下功能:

1. 在画布中点击鼠标时,会生成一个圆球,圆球的位置由鼠标点击位置决定。
2. 圆球会在画布中自由移动,并且具有重力和碰撞的物理效果。
3. 圆球在接触到画布边界时会发生反弹,保证不会越出画布范围。
4. 圆球会随着时间逐渐变淡,最终消失。

具体解释:

  • HTML 部分定义了一个画布元素 <canvas>,用于绘制动画。在 <body> 中的 <canvas> 元素有一个唯一的 ID gameCanvas。
  • CSS 部分设置了 <body> 和 <html> 的样式,将页面的外边距和内边距都设为 0,同时隐藏页面的滚动条,并将画布元素铺满整个页面。
  • JavaScript 部分负责实现画布动画的逻辑。它包括以下几个关键步骤:
    1. 在页面加载完成后,获取画布元素的上下文对象 getContext('2d') 并设置画布的宽度和高度等于窗口的宽度和高度。
    2. 定义了一个 balls 数组,用于存储所有的圆球对象。
    3. 创建了一个 addBall 函数,用于向 balls 数组中添加新的圆球对象。每个圆球对象包括位置、半径、速度、重力、阻尼、透明度和是否在地面上等属性。
    4. 给画布元素添加了点击事件监听器,在点击时调用 addBall 函数生成新的圆球。
    5. 定义了 updateBall 函数和 drawBall 函数,分别用于更新圆球的状态和在画布上绘制圆球。
    6. 创建了一个 animate 函数,用于实现动画效果。在该函数中,首先清空画布,然后遍历 balls 数组,更新每个圆球的状态并绘制到画布上。
    7. 最后调用 requestAnimationFrame 函数递归调用 animate 函数,实现动画循环。

碰撞及弹起逻辑的解释:

1. 球的垂直速度 velocityY 会乘以一个阻尼系数 damping 来减缓速度,模拟碰撞后的能量损失。
2. 如果球的位置超出了画布的底部边界 y + radius > canvas.height,即球触底,会将球的位置调整到底部边界,并且垂直速度乘以一个负数以实现向上弹起的效果。这里同时检查了球的垂直速度是否小于一个很小的值 Math.abs(ball.velocityY) < 1,如果是,则将球的 onGround 属性设置为true,表示球已经触底。
3. 如果球的位置超出了画布的左侧或右侧边界 x + radius > canvas.width 或 x - radius < 0,即球触到了左侧或右侧的墙壁,会将球的水平速度 velocityX 乘以 -1,实现水平方向的反弹。

这样,在每一帧的动画循环中,球与边界的碰撞会根据上述逻辑进行处理,从而实现了球在碰撞后的弹起效果。

视频演示:

bouncing balls

总结:

这段代码实现了一个简单的圆球动画效果,圆球在画布上自由移动、反弹,并且会随着时间逐渐变淡消失。

2026年中兴微电子数字IC设计笔试题带答案 这篇考试试卷涵盖了数字IC设计的关键知识点,主要包含四个部分:单选题(18分)考查RTL仿真、低功耗设计、跨时钟域处理等基础知识;多选题(15分)涉及低功耗技术、异步FIFO设计和工具链使用;代码设计题(25分)要求实现两级同步器和时钟门控电路;简答题(42分)重点考察异步FIFO原理、ASIC设计流程、FPGA时钟处理和时序违例修复方法。试题注重理论与实践结合,既包含概念性知识也强调实际工程能力,全面检验学生对数字IC前端设计核心技术的掌握程度。 阅读详情

相关推荐

别再纠结高侧低侧了!用INA199/INA219这类集成电流检测芯片,5分钟搞定精准电流测量

本文详细解析了使用INA199/INA219等集成电流检测芯片实现精准电流测量的高效方案。通过对比传统分立元件方案,突出集成芯片在精度、温度稳定性和设计简化方面的优势,并提供硬件设计避坑指南和软件实现最佳实践,帮助开发者快速掌握电流检测技术。

weixin_42685438的博客 471

91行代码创意赛:在约束中绽放的编程创造力

91行代码创意赛是一项聚焦极简编程的竞技赛事,要求参赛者在91行代码内实现兼具技术价值和创意表现的作品。赛事通过严格的行数限制,倒逼开发者优化算法、精简逻辑,在约束中激发创造力。 比赛核心规则包括:仅统计有效可执行代码行,禁止恶意压缩代码;支持多种编程语言;评审标准兼顾创意性、技术实现、可读性和实用性。优秀作品往往能在游戏开发、工具实现、艺术创作和微型AI等领域展现小而精的价值。 参赛建议:从原型开始逐步迭代,优先实现核心功能;善用语言特性压缩代码但不牺牲可读性;选择轻量依赖;注重算法效率。

网络工程师|十多年企业级运维实战|精通 ‌BGP、OSPF、VLAN、SDN、MPLS、ACL、NetFlow、SNMP、 1万+

告别sgmediation!Stata中介效应分析新选择:mediation包完整操作指南

本文介绍了Stata中介效应分析从传统sgmediation命令向mediation包的范式升级。重点阐述了如何使用medeff和medsens命令进行更严谨的因果推断,并执行关键的敏感性分析,以评估结果对未观测混杂的稳健性,为学术研究提供发表级的分析工具。

redis7keeper的博客 1160

Failed to load module script:服务器回的是 text/html

当模块脚本(<script type="module">)请求的资源返回 200 状态但 Content-Type 为 text/html 时,浏览器因严格 MIME 检查而拒绝加载,报错“Expected a JavaScript-or-Wasm module script but received text/html”。该问题常见于缺失的 chunk 被服务器错误返回 index.html。与经典脚本不同,模块脚本始终强制检查 MIME 类型,即使状态码成功也无效。import() 的拒绝仅提示 Fai

qq_40822000的博客 197

SpotBugs实战:10大类Bug检测规则详解与代码优化实例(附避坑清单)

本文深入解析SpotBugs在Java开发中的实战应用,详细讲解10大类Bug检测规则与代码优化实例,包括NPE防御、多线程安全、性能优化等关键问题。通过具体代码示例和避坑清单,帮助开发者提升代码质量,有效集成到CI/CD流程中。

weixin_42665255的博客 196

方差分解分析变量筛选与显著性计算

冗余分析(redundancy analysis,RDA)是一种回归分析结合主成分分析的排序方法,也是多响应变量(multiresponse)回归分析的拓展。在进行VPA时,首先就要对这些环境因子进行一个分类,然后在约束其它类环境因子的情况下,对某一类环境因子进行排序分析,这种分析也成为偏分析,即partialRDA。在地球环境科学的实际应用中,可以基于VPA结果得出不同类型的环境因素(如何气候、土壤性质以及植物)对生物群落组成(如植被丰度,微生物群落)的解释程度。对于由或创建的排序对象,函数。

wlh2067的博客 2520

GPT Image 2 出的 UI 图如何转成 HTML 和可编辑 Figma

AI 生成的 UI 图,本身只是起点。用 Codex 或 Claude Code 把它变成 HTML,就有了能演示的页面;用 html.to.design 把 HTML 导回 Figma,就有了能沉淀的设计源文件;用 Codia 直接把图转成 Figma,则适合只要设计稿、追求速度的场景。三条链路互相补充,组合起来就形成了"图、代码、设计稿"之间的闭环。同时也要清楚它的边界:单张位图缺少精确数值,像素级还原目前还做不到稳定;图里的文字和图标需要人工把关。

JEECG官方博客 237

华为OD机试 - 跳房子I(Java 双机位A卷 100分)

可行的两步组合有 [1, 2] (索引和 0+3=3)、[1, 2] (索引和 0+4=4)、[4, 2] (索引和 1+3=4)、[4, 2] (索引和 1+4=5)、[5, 2] (索引和 2+3=5)、[5, 2] (索引和 2+4=6)。此样例有多种组合满足两回合跳到最后,譬如[-1,9], [2,6],其中[-1,9]的索引和为0+3=3, [2,6]的索引和为1+4=5, 所以索引和最小的步数组合为[-1,9].[3, 2] 和 [1, 4] 都满足和等于 5,且索引和均为 3。

学Java,找哪吒 4508

开源项目推荐:2027 高考志愿填报指北|开源单页 HTML 高报资料工具书

高考志愿填报信息量大、维度多,考生与家长往往面临资料零散、信息不对称、优质内容收费门槛高等问题。《2027 高考志愿填报指北》是雪人老师开源的高报笔记资料汇编,将 683 篇、280.5 万字的原创笔记整合为单页 HTML 电子书,覆盖专业、院校、城市、填报攻略四大板块。支持左侧折叠导航、快速跳转、浏览器原生 A4 打印,可在线阅读也可本地保存使用,采用 CC BY-NC 4.0 协议开源,非商业场景可自由传播改编,是高考志愿填报阶段实用的免费参考工具书。关键词:高考志愿填报;高报资料;开源电子书;

Admans的专栏 320

数据分析:蛋白质组的GO term的富集分析详解

在获取差异表达蛋白质的数据之后,依据蛋白质与基因的对应映射关系,开展GO(Gene Ontology)term的富集分析。通过这一分析流程,能够精准地识别出不同实验组中过表达基因所关联的显著富集的GO term通路。这些富集的GO term通路为后续的生物学研究提供了关键线索,有助于深入探究基因功能、揭示潜在的生物学机制,从而推动生物学发现的进程。

专注生信领域 1368

基于MATLAB自动发电控制(AGC)仿真系统的设计与实现:电力系统频率稳定与功率平衡的深入解析

自动发电控制(AGC)是电力系统运行中的一个关键功能,其主要任务是通过自动调节发电机组的输出功率,使得电网中的频率稳定在规定范围内,并维持发电与负荷的动态平衡。当电力负荷发生变化时,AGC会立即响应,调整发电机的功率输出,以避免电网频率的剧烈波动。维持系统频率稳定:电网频率通常应维持在标准值(例如50Hz或60Hz)附近。当负荷波动或电力需求突然变化时,AGC通过调节发电机输出,确保频率不发生过大的偏离。实现区域内的功率平衡。

qq_38334677的博客 1112

PageAdmin在10万级数据下生成静态Html的速度实测

之前测试的大部分CMS,如phpcms、dedecms等在10万级别下全量生成静态普遍要4个小时以上,dedecms甚至中途卡死,这次对pageadmin cms进行测试,测试说明见下文。11多万条的文章,pageadmin的耗费时间只用了10分钟12秒,比起之前测试dedecms、phpcms生成10万文章动不动要4-5个小时,pageadmin的效率高了20多倍。:包含1个大文本(text)字段,6个varchar字段,8个int类型字段,2个datetime字段,这是网站最常用的文章表结构。

176

基于 STM32 的全自动洗车监控系统设计与实现

本文提出一种基于 STM32F103RCT6 芯片的全自动洗车监控系统方案,通过多传感器融合与智能控制算法,实现车辆检测、洗车流程自动化及状态远程监控。系统集成硬件选型、电路设计、软件流程及通信功能,可广泛应用于智能洗车场景。

weixin_42300449的博客 964

WordPress 开了 CDN 首页仍慢或每次都像在回源:先核 HTML 是否命中边缘缓存,再查缓存头与回源链路

CDN 已经挂上了,测速图或海外客户却还在说「首页打开要等好久」。静态图片、CSS 看起来挺快,首屏文字却像是在远处一台机器上现算。有人建议换一家 CDN,有人怀疑主题太重,也有人直接把全站缓存时间拉到最长。这和近期已发的。「静态资源 404 / 后台样式错乱」卡的是回源 Host、HTTPS 和混合内容,资源根本没加载对;「TTFB 很高但静态资源很快」卡的是源站页面缓存、慢查询和对象缓存,讨论时往往还没先确认 HTML 有没有在边缘命中;「改了报价还看见旧版」卡的是五层缓存清不掉旧内容;

20年技术经验|专注小程序+外贸独立站|已服务500家企业,分享创业中有趣的产品和技术经验。 267

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

网页 HTML 基础入门:从基本结构到表单实战

HTML 是网页开发的第一步,掌握基本结构、常用标签、超链接、图片和表单后,就可以独立写出简单的静态页面。先熟悉 HTML 基本结构,养成规范书写习惯。练习常用标签,尤其是链接、图片和表单。遇到不熟悉的标签,随时查阅 W3School 手册。掌握 HTML 之后,可以继续学习 CSS 美化页面,以及 JavaScript 实现交互,逐步进入完整的前端开发领域。

TAOZE123的博客 379

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

一个简单的js javascript+html字幕浮动窗口

【代码】一个简单的js javascript+html字幕浮动窗口。

大话程序员 34

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Word 转 HTML API:DOCX 上传、公开 URL 与内联 HTML

咕咕数据 Word 转 HTML API 接收单个未加密的 DOC 或 DOCX,可上传本地文件,也可传入公开文件 URL。两种输入都返回 HTML 内容,并按 storage 提供公开下载地址或私有文件引用。

DevOpenClub 专栏 168

HTML 转 Word API:HTML 与 URL 输入、DOCX 输出和版式核对

HTML 转 Word API 可把 HTML 正文或公开网页转为可编辑的 DOCX。请求用 type 指定输入类型,用 content 传正文或地址。可选择公开链接或归属当前应用的私有文件引用。

DevOpenClub 专栏 260

【教学类-150-03】20261108蝴蝶连连看html(一页2个版面、3个版面)

【教学类-150-03】20261108蝴蝶连连看html(一页2个版面、3个版面)

reasonsummer的博客 160

用VBA调用Python脚本抽取Word文档表格HTML

本文通过使用VBA调用Python脚本抽取Word文档中的表格的等价HTML表结构代码,演示了VBA调用Python脚本以及获取Python节本输出的方法。

yivifu的专栏 191

OpenCode v2.2 Artifacts 实战:让 Agent 交付可预览 HTML、插件存储与发布治理

OpenCode v2.2.4 新增实验性的 Artifacts 能力,Agent 可以创建、读取、更新、删除并预览 HTML 或静态制品。本文从启用配置、四类核心工具、本地 Provider、插件存储、版本化更新、预览验收到安全与发布治理,给出一套把“代码生成”升级为“可查看、可验收、可追溯交付”的团队实践。

jerry764的博客 433

INP实战:单文件HTML全量重绘拖到226ms

单文件 HTML 工作台实测:一次点击全量重建 7 个模块,1000 条时 JS 侧 226ms 掉出 INP 良好区间。读完能拿到 DOM 节点账、写放大倍数、七源串行 59.7s→8.8s 的并发改造对比与 6 个优化修法。

Dai_sir_man的博客 209

Nginx出向代理实战系列:安全部门只允许开放点对点SNAT、目标用CDN导致IP动态变化怎么办,网络通却返回HTML踩坑复盘

本文复盘了一次复杂的Nginx出向代理实战:面对CDN动态IP、安全策略限制及七层请求不规范三大难题,通过网络层放宽(支持域名解析)、应用层收紧(硬编码location+白名单逻辑)实现安全隔离;针对“通而不畅”问题,补全Host透传、标准Header与HTTPS配置,最终解决CDN返回HTML而非JSON的典型七层瓶颈。核心启示:网络通≠业务通,外网代理必须满足CDN鉴权要求,安全与业务需在约束中寻找最优解。

个人站点:https://www.heimajinpai.cn/ 516

汉语拼音在HTML容器中正确断行问题

本文找到了一种方案,使得汉语拼音在显示容器中既不溢出,又不会在一个完整拼音中间分断为两行。

yivifu的专栏 189

SAP ABAP 实战:SAP GUI上做 HTML 看板报表

本文介绍在SAP中构建现代化网页报表的架构:通过快照表实现数据隔离,ABAP仅负责取数与校验,页面逻辑(HTML/CSS/JS)存于SMW0模板,数据以JSON注入。采用选择屏幕9100承载展示容器,结合cl_gui_html_viewer动态渲染,支持实时筛选、视图切换与自动计算。关键点包括:用WWWDATA_IMPORT读取二进制模板并处理BOM与截断问题,通过占位符注入JSON,确保前端可本地调试。该方案实现“数据与展示分离”,避免程序与模板不同步,提升开发效率与维护性。

缘起缘灭皆为因果,看到就是缘分,点赞收藏一键三连吧! 772

HTML文字可视化编辑器插件 V2.0.0版本更新

HTML文字可视化编辑器插件V2.0.0支持离线本地编辑,无需上传或联网。在Chrome中打开本地HTML文件,点击蓝色铅笔即可直接修改文字、字号、格式与颜色,按Ctrl+S静默保存至原文件。新增格式刷、段落复制、整页快照式撤销重做、离线一机一码授权等功能,界面全图标化,支持拖拽布局与高倍缩放。安装简便,仅需开启开发者模式加载扩展,适用于周报、报告等静态文案型HTML的快速编辑。

weixin_45591526的博客 181
上一篇: 安卓价值2-Macrodroid在其它app下执行两步就停
下一篇: 软件价值15-碰撞弹球2.0
dracularking
博客等级 码龄20年 1592粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dracularking

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值