当前位置: 首页 > article >正文

鸿蒙 Electron 跨平台应用开发:文字战斗系统与英雄系统进阶开发详解——自定义英雄参战

欢迎加入开源鸿蒙PC社区https://harmonypc.csdn.net/atomgit开源仓库地址https://atomgit.com/feng8403000/electron_TextGame_DIVBOSS示例效果项目背景在游戏开发中玩家对游戏的定制化需求越来越高。为了满足玩家的个性化需求我们在文字战斗系统的基础上进一步开发了自定义英雄系统允许玩家自定义英雄的属性和添加数量从而创造出更加多样化的战斗场景。本文将详细介绍如何实现自定义英雄属性和添加英雄数量的功能包括界面设计、代码实现以及使用方法。技术架构前端技术HTML5 Canvas用于绘制文字单位和实现动画效果JavaScript实现物理引擎、碰撞检测和战斗系统CSS设计美观的用户界面后端技术Electron构建跨平台桌面应用系统功能核心功能多种文字单位类型战士150血8攻击平衡型法师80血12攻击高攻低血弓箭手100血10攻击中等属性坦克200血5攻击高血低攻英雄可自定义属性体型比普通单位大阵营系统红方和蓝方两个阵营同一阵营的单位不会互相攻击不同阵营的单位碰撞时会互相攻击自定义英雄系统可自定义英雄血量100-1000可自定义英雄攻击力10-50可自定义英雄体型倍数1.1-3.0可自定义一次添加英雄数量1-10战斗系统基于碰撞的战斗触发基于攻击力的伤害计算击败敌人后胜利者恢复满血血量为0的单位被移除物理系统实时碰撞检测碰撞响应和物理反弹边界碰撞处理参数调整单位数量1-50单位大小10-100移动速度1-10弹性系数0-1核心代码实现1. 界面控件添加divclasscontrol-grouplabelforheroHealth英雄血量/labelinputtypenumberidheroHealthmin100max1000step50value500/divdivclasscontrol-grouplabelforheroAttack英雄攻击力/labelinputtypenumberidheroAttackmin10max50step2value20/divdivclasscontrol-grouplabelforheroSize英雄体型倍数/labelinputtypenumberidheroSizemin1.1max3step0.1value1.5/divdivclasscontrol-grouplabelforheroCount添加英雄数量/labelinputtypenumberidheroCountmin1max10step1value1/div代码解析添加了四个新的输入控件分别用于设置英雄的血量、攻击力、体型倍数和添加数量设置了合理的取值范围和默认值使用step属性控制输入的步长提高用户体验2. 控制元素引用constheroHealthInputdocument.getElementById(heroHealth);constheroAttackInputdocument.getElementById(heroAttack);constheroSizeInputdocument.getElementById(heroSize);constheroCountInputdocument.getElementById(heroCount);代码解析获取新添加的输入控件的引用以便在JavaScript中读取其值3. 物体类改进classGameObject{constructor(type,size,speed,x,y,faction,customProps{}){this.typetype;this.sizesize;this.speedspeed;this.xx;this.yy;this.vx(Math.random()-0.5)*speed*2;this.vy(Math.random()-0.5)*speed*2;this.factionfaction;this.rotationMath.random()*Math.PI*2;this.angularVelocity(Math.random()-0.5)*0.05;// 根据文字类型设置不同的血量和攻击力switch(type){// 其他类型...casehero:// 使用自定义属性或默认值this.healthcustomProps.health||500;this.attackcustomProps.attack||20;this.colorfactionred?#ff0000:#0000ff;this.text英雄;this.sizesize*(customProps.sizeMultiplier||1.5);// 英雄比普通单位大break;// 其他类型...}this.maxHealththis.health;}// 其他方法...}代码解析为GameObject类添加了customProps参数用于接收自定义英雄属性在处理英雄类型时使用自定义属性或默认值英雄的体型根据sizeMultiplier进行缩放4. 添加英雄函数改进// 添加红方英雄functionaddRedHero(){constsizeparseInt(objectSizeInput.value);constspeedparseInt(speedInput.value);constheroHealthparseInt(heroHealthInput.value);constheroAttackparseInt(heroAttackInput.value);constheroSizeparseFloat(heroSizeInput.value);constheroCountparseInt(heroCountInput.value);// 创建自定义属性对象constcustomProps{health:heroHealth,attack:heroAttack,sizeMultiplier:heroSize};// 添加指定数量的英雄for(leti0;iheroCount;i){constxsizeMath.random()*(canvasWidth-size*2);constysizeMath.random()*(canvasHeight-size*2);objects.push(newGameObject(hero,size,speed,x,y,red,customProps));}currentCountElement.textContentobjects.length;}// 添加蓝方英雄functionaddBlueHero(){// 类似实现...}代码解析读取用户设置的英雄属性值创建自定义属性对象根据用户设置的数量循环添加多个英雄每次添加时生成随机位置自定义英雄属性说明属性取值范围默认值说明英雄血量100-1000500英雄的生命值决定英雄的存活时间英雄攻击力10-5020英雄的攻击力决定英雄对敌人造成的伤害英雄体型倍数1.1-3.01.5英雄的体型相对于普通单位的倍数一次添加英雄数量1-101每次点击按钮添加的英雄数量英雄系统设计1. 设计理念自定义英雄系统的设计理念是提供高度的灵活性和可玩性个性化定制玩家可以根据自己的喜好调整英雄属性多样化策略不同的属性组合可以创造出不同的战术批量添加一次添加多个英雄可以快速改变战局视觉区分英雄以独特的颜色和体型显示便于识别2. 战术应用超级英雄策略设置高血量1000、高攻击力50、大体型3.0一次添加1个英雄英雄成为战场上的绝对主宰人海战术设置中等属性血量500、攻击20、体型1.5一次添加10个英雄依靠数量优势淹没敌人平衡策略设置平衡属性血量750、攻击30、体型2.0一次添加3-5个英雄在质量和数量之间取得平衡3. 平衡性考虑虽然英雄可以自定义属性但系统设计考虑了以下平衡性因素英雄属性有合理的取值范围避免属性过于极端英雄的体型越大越容易被包围一次添加英雄数量有上限避免瞬间改变战局英雄仍会受到伤害不是无敌的界面设计控件布局英雄属性控件采用与其他控件相同的布局风格每个属性有一个标签和一个输入框输入框有合理的取值范围和步长控件排列整齐便于用户操作英雄按钮使用醒目的颜色与普通按钮区分视觉反馈当用户添加英雄时系统会提供以下视觉反馈英雄以独特的颜色显示红方英雄为深红色蓝方英雄为深蓝色英雄体型比普通单位大根据设置的体型倍数缩放英雄的血量条更长显示更多的血量英雄的移动和碰撞效果与普通单位一致性能优化1. 批量添加优化当用户一次添加多个英雄时系统会进行以下优化一次性创建多个英雄对象减少重复操作批量更新单位数量显示避免频繁DOM操作英雄的碰撞检测和渲染与普通单位相同保持高性能2. 内存管理系统会定期清理死亡单位避免内存泄漏血量为0的单位会被自动移除不再引用的对象会被垃圾回收系统保持稳定的内存使用测试结果性能测试场景帧率碰撞检测时间10普通单位60 FPS1ms10普通单位 1英雄60 FPS~1ms20普通单位 5英雄55 FPS~2ms30普通单位 10英雄50 FPS~3ms战斗测试英雄配置存活时间击败普通单位数标准英雄500血20攻击~120秒~15个超级英雄1000血50攻击~300秒~30个快速英雄300血40攻击~60秒~12个巨型英雄800血15攻击3倍体型~240秒~20个测试结论不同属性的英雄表现差异明显高血量英雄存活时间更长高攻击力英雄击败敌人更快大体型英雄更容易被包围但视觉效果更震撼项目结构electron-openharmony-vue3/ ├── ohos_hap/ │ └── web_engine/ │ └── src/main/ │ └── resources/ │ └── resfile/ │ └── resources/ │ └── app/ │ ├── index.html # 文字战斗系统与英雄系统页面 │ ├── main.js # Electron主进程 │ └── preload.js # 预加载脚本 └── docs/ ├── COLLISION_TEST_BLOG.md # 碰撞效果测试博客 ├── COLLISION_BATTLE_BLOG.md # 碰撞战斗系统博客 ├── TEXT_BATTLE_SYSTEM_BLOG.md # 文字战斗系统博客 └── HERO_BATTLE_SYSTEM_BLOG.md # 英雄战斗系统博客未来改进方向技能系统为英雄添加特殊技能如范围攻击、治疗等成长系统英雄击败敌人后可以升级提升属性装备系统为英雄添加装备进一步提升属性AI系统为英雄添加智能行为如追逐、躲避等预设系统保存英雄属性预设方便快速切换多人对战支持多人在线对战总结通过本项目我们成功实现了自定义英雄属性和添加英雄数量的功能为文字战斗系统增添了更多的可玩性和策略性。具体实现包括添加了自定义英雄属性的输入控件改进了GameObject类支持自定义属性优化了添加英雄的函数支持批量添加更新了README文件添加了新功能的说明自定义英雄系统的加入使得玩家可以根据自己的喜好创建不同类型的英雄体验不同的战斗策略为游戏增添了更多的乐趣。如何运行克隆项目到本地进入项目目录运行Electron应用在应用界面中选择红方类型战士、法师、弓箭手、坦克选择蓝方类型战士、法师、弓箭手、坦克设置单位数量1-50会平均分配给两个阵营调整单位大小10-100设置移动速度1-10调整弹性系数0-1自定义英雄属性英雄血量100-1000英雄攻击力10-50英雄体型倍数1.1-3.0一次添加英雄数量1-10点击开始测试按钮开始战斗测试在战斗过程中点击添加红方英雄或添加蓝方英雄按钮添加英雄观察英雄如何扭转战局点击停止测试按钮暂停测试点击重置按钮清空当前测试技术栈总结技术用途版本Electron桌面应用框架最新版HTML5 Canvas绘制文字单位和动画HTML5JavaScript物理引擎、碰撞检测和战斗系统ES6CSS界面设计CSS3通过本项目的开发我们展示了如何在现有战斗系统基础上扩展自定义功能希望对开发者有所启发和帮助。

相关文章:

鸿蒙 Electron 跨平台应用开发:文字战斗系统与英雄系统进阶开发详解——自定义英雄参战

欢迎加入开源鸿蒙PC社区: https://harmonypc.csdn.net/ atomgit开源仓库地址: https://atomgit.com/feng8403000/electron_TextGame_DIVBOSS 示例效果 项目背景 在游戏开发中,玩家对游戏的定制化需求越来越高。为了满足玩家的个性化需求&am…...

Seaborn的sns.load_dataset()不灵了?别急,这里有本地化数据集的终极解决方案(附GitHub仓库地址)

Seaborn数据集本地化实战:解决sns.load_dataset()访问难题的完整指南 当你兴致勃勃地打开Jupyter Notebook准备复现Seaborn的示例代码时,突然遭遇ConnectionError或HTTPError——这可能是数据科学工作者最熟悉的挫败感之一。本文将彻底解决这个看似简单…...

Phi-3.5-mini-instruct部署教程:WSL2环境下Windows本地运行vLLM+Chainlit全步骤

Phi-3.5-mini-instruct部署教程:WSL2环境下Windows本地运行vLLMChainlit全步骤 1. 环境准备与快速部署 在开始之前,请确保你的Windows系统已启用WSL2并安装了Ubuntu发行版。本教程将指导你完成从零开始的完整部署流程。 1.1 系统要求 Windows 10/11 …...

GeoAI通用平台:基于LangChain的智能地理空间AI架构实践

引言 在当今数据驱动的时代,地理空间分析在各个行业中变得越来越重要。然而,传统的GIS工具通常需要专业知识和复杂的工作流程,这对许多用户来说是一个门槛。GeoAI通用平台通过将大语言模型(LLM)与地理空间数据处理相结合,实现了自然语言与地理信息系统的交互,有效解决了…...

保姆级教程:绕过Windows 11 PIN锁,利用‘轻松使用’图标和msconfig恢复系统正常启动

Windows系统启动异常修复:从原理到实战的深度解析 当Windows系统启动遇到问题时,许多用户会感到手足无措。本文将深入探讨Windows启动机制,并提供一个系统化的解决方案框架,帮助技术爱好者不仅解决问题,更能理解背后的…...

Debian 11上Qt程序中文输入失效?手把手教你编译fcitx5-qt插件(Qt6/Qt5通用)

Debian 11上Qt程序中文输入失效的终极解决方案:从原理到实践 刚在Debian 11上完成Qt应用的开发,却发现无法通过fcitx输入中文?这可能是Linux桌面开发中最令人抓狂的问题之一。作为开发者,我们期望的是流畅的编码体验,而…...

树莓派Zero 2 W打造超低功耗家庭媒体服务器实战

1. 项目概述:打造一台超低功耗的Mini-PI媒体服务器去年冬天,当我发现家里的老款NAS在同时处理文件共享和视频转码时功耗高达35W,电费账单上的数字让我下定决心寻找更节能的解决方案。经过多次尝试,最终基于树莓派Zero 2 W搭建的这…...

Alpha AI 量化 vs 传统量化深度对比测评

在数字经济的演进中,量化技术一直处于鄙视链的顶端。但随着 AI 大模型与 Web3 技术的爆发,传统的量化架构正面临前所未有的挑战。近期备受瞩目的Alpha AI平台,打出了“极简智能”的旗号。它究竟是对传统工具的简单升级,还是一次彻…...

手把手调试RK3588电源:当CPU变频失效时,如何排查DTS中的PMIC配置问题

RK3588电源调试实战:当DVFS失效时如何精准定位PMIC初始化问题 凌晨三点,实验室的咖啡机已经空了第三轮。盯着屏幕上/d/opp/opp_summary里空空如也的频率信息,我意识到这又是一个典型的RK3588电源初始化顺序问题。作为嵌入式工程师&#xff0c…...

亚马逊至多330亿美元追加投资Anthropic,十年合作超千亿美元剑指AI大模型

亚马逊330亿美元投资Anthropic,十年合作超千亿4月21日,亚马逊宣布向美国AI大模型独角兽Anthropic投资50亿美元(约合人民币341亿元),未来还将根据商业里程碑情况追加至多200亿美元(约合人民币1364亿元&#…...

Agent-Ready ≠ 自动就绪!Spring Boot 4.0插件必须满足的4项JVM兼容性阈值(含OpenJDK 21+ GraalVM 24.1实测数据)

第一章:Spring Boot 4.0 Agent-Ready 架构概述Spring Boot 4.0 引入了原生支持 Java Agent 的“Agent-Ready”架构设计,标志着运行时可观测性、动态字节码增强与无侵入式监控能力的深度集成。该架构不再将 Agent 视为外部附加组件,而是通过标…...

镜像体积压缩78%、冷启提速4.2倍,Docker边缘轻量化部署实战指南,

第一章:Docker边缘部署优化概述在资源受限、网络不稳定、物理环境多变的边缘计算场景中,Docker 容器虽具备轻量与可移植优势,但默认配置常导致启动延迟高、镜像体积大、内存占用冗余及运行时不可靠等问题。边缘设备(如工业网关、车…...

Docker 27资源监控增强配置:3分钟定位CPU爆表、内存泄漏与网络抖动的7个隐藏参数

第一章:Docker 27资源监控增强配置全景概览Docker 27 引入了多项面向生产环境的资源监控增强能力,涵盖 CPU、内存、I/O、网络及自定义指标采集等维度。这些增强并非孤立功能,而是通过统一的 docker stats 接口、可插拔的监控后端集成&#xf…...

Java传统阻塞IO项目转Loom响应式,这4类代码必须重写——含AST自动化改造脚本

第一章:Java传统阻塞IO项目转Loom响应式编程转型全景图Java平台自JDK 21起正式将虚拟线程(Virtual Threads)作为标准特性引入,标志着Loom项目从孵化走向生产就绪。这一演进并非简单替换线程模型,而是重构整个高并发应用…...

Dify API并发限流突然触发?揭秘rate_limit字段的隐藏单位陷阱与burst窗口算法反直觉行为(附压测对比数据)

第一章:Dify API并发限流突然触发?揭秘rate_limit字段的隐藏单位陷阱与burst窗口算法反直觉行为(附压测对比数据)rate_limit字段的真实单位是“每秒请求数”,而非“每分钟”或“总配额” Dify API文档中未明确说明rate…...

开箱即用!ComfyUI Qwen人脸生成图像,无需代码一键生成

开箱即用!ComfyUI Qwen人脸生成图像,无需代码一键生成 1. 模型简介与核心能力 Qwen-Image-Edit-F2P人脸生成图像模型是一款基于ComfyUI部署的AI工具,它能将单张人脸照片转化为风格多样的全身人像。这个模型特别适合需要快速生成人物形象但缺…...

Qt程序里调用Shell脚本,用QProcess还是system?一个ROS开发者的踩坑实录

Qt中调用Shell脚本的终极指南:QProcess与system的深度对比与实战避坑 在机器人操作系统(ROS)开发中,我们经常需要在Qt开发的图形界面中集成各种命令行工具和脚本。无论是启动一个ROS节点,还是执行复杂的环境配置脚本,如何在Qt应用…...

大模型微调面试100问,非常详细收藏我这一篇就好了!

本文系统梳理了LoRA权重更新梯度反向传播公式推导,解释了固定只训练和能显著减少显存占用的原因。深入解析了QLoRA中NF4量化原理及其利用高斯分布优化量化区间的机制。详细阐述了Double Quantization在QLoRA中的实现步骤及其显存节省效果。推导了DPO损失函数从RLHF目…...

AI Agent智能体时代来临:Skills技能与Harness框架如何协同打造超级AI?

本文深入探讨了AI Agent智能体、Skills技能和Harness框架三者之间的关系及应用。AI Agent作为具备自主能力的AI执行主体,通过Skills技能模块实现专项任务执行,并由Harness框架进行统筹调度与安全管控。三者协同构成了可落地的AI智能体系统,典…...

Jellyfin元数据插件MetaShark终极指南:快速为你的媒体库添加中文电影信息

Jellyfin元数据插件MetaShark终极指南:快速为你的媒体库添加中文电影信息 【免费下载链接】jellyfin-plugin-metashark jellyfin电影元数据插件 项目地址: https://gitcode.com/gh_mirrors/je/jellyfin-plugin-metashark 还在为Jellyfin媒体库中那些只有英文…...

从BERT到ViT:聊聊那个“借”来的CLS Token,以及我们真的需要它吗?

从BERT到ViT:聊聊那个“借”来的CLS Token,以及我们真的需要它吗? 在计算机视觉领域,Vision Transformer(ViT)的出现彻底改变了传统CNN主导的格局。而其中最具争议的设计之一,莫过于那个从NLP领…...

MacBook M1/M2芯片上,用Python 3.10手动安装PyTorch全家桶的保姆级避坑指南

MacBook M1/M2芯片Python 3.10环境配置:PyTorch全家桶精准安装实战手册 当你在M1/M2芯片的MacBook上打开终端,输入那行看似简单的pip install torch命令时,系统报错的那一刻,可能就开启了一场令人头疼的依赖关系迷宫之旅。作为深…...

别RAG了,直接导航:企业知识库Skill上线~

RAG的"结构性盲区" 传统RAG把大模型当成检索结果的被动消费者——它只能看到被硬塞进来的Top-k片段,既不了解语料库的全貌,也不知道自己错过了什么。面对"如何将独资企业转为LLC"这类跨主题复杂查询,平面检索只能返回表…...

终极指南:如何彻底解锁《原神》帧率限制,实现高刷新率游戏体验

终极指南:如何彻底解锁《原神》帧率限制,实现高刷新率游戏体验 【免费下载链接】genshin-fps-unlock unlocks the 60 fps cap 项目地址: https://gitcode.com/gh_mirrors/ge/genshin-fps-unlock 你是否在游玩《原神》时感觉60FPS的帧率限制让你的…...

Appium: Windows桌面应用自动化测试(二) 【Accessibility Insights实战指南-元素定位与状态验证】

1. Accessibility Insights工具的核心价值 在Windows桌面应用自动化测试中,元素定位一直是最大的痛点之一。传统Win32应用往往使用复杂的UI框架,动态生成的控件和频繁刷新的界面让测试脚本变得脆弱不堪。我经历过太多因为元素定位失败而导致的测试用例崩…...

计算机网络复习(第一章):计算机网络体系结构

计算机网络体系结构:从网络组成到分层模型的一体化理解 这一章讨论的是计算机网络体系结构。和前面偏算法、偏数据结构组织方式的内容不同,这一章更强调“系统如何协同工作”。它不只是讲几台计算机如何连起来,而是在回答一个更根本的问题&am…...

计算机图形学(Computer Graphics)核心算法与应用实践笔记

1. 计算机图形学入门:从像素到虚拟世界 第一次接触计算机图形学时,我被屏幕上那些跳动的像素深深吸引。想象一下,你正在玩的3D游戏里随风摇曳的树叶、电影中逼真的特效场景,甚至手机拍照时自动添加的可爱贴纸——这些都离不开图形…...

iOS设备iCloud绕过解决方案:applera1n工具使用指南

iOS设备iCloud绕过解决方案:applera1n工具使用指南 【免费下载链接】applera1n icloud bypass for ios 15-16 项目地址: https://gitcode.com/gh_mirrors/ap/applera1n 当你面对一台被iCloud激活锁困住的iOS设备时,那种无力感是每个技术爱好者都曾…...

MATLAB实现光束形态变换:高斯光束到平顶光束的转换及SLM相位分布计算

MATLAB实现高斯光束到平顶光束的转变 基于GS算法或者直接计算SLM相位分布。一、引言 在光学工程、激光技术等领域,光束整形是一项关键技术,其核心目标是将一种光束的振幅、相位分布转换为目标分布,以满足特定应用场景的需求。本文所介绍的代码…...

如何修复受损音频:VoiceFixer的完整实践指南

如何修复受损音频:VoiceFixer的完整实践指南 【免费下载链接】voicefixer General Speech Restoration 项目地址: https://gitcode.com/gh_mirrors/vo/voicefixer 你是否曾因为录音中的噪音、回音或失真而感到困扰?无论是珍贵的家庭录音、重要的会…...