JAVA实训新增功能

news/2025/1/9 3:41:31/文章来源:https://www.cnblogs.com/505-jw/p/18647745

1.添加人物技能

主要代码

StaticValue.JAVA
点击查看代码
public static List<BufferedImage> leftSkillImgs= new ArrayList<>();
public static List<BufferedImage> rightSkillImgs = new ArrayList<>();//Static中
for (int i = 0; i <=7; i++) {File rightfile = new File(ImagePath+"skill/right/"+i+".png");File leftfile = new File(ImagePath+"skill/left/"+i+".png");rightSkillImgs.add(ImageIO.read(rightfile));leftSkillImgs.add(ImageIO.read(leftfile));

Person.JAVA

点击查看代码
protected List<BufferedImage> leftSkillImages;
protected List<BufferedImage> rightSkillImages;
//setImageList方法leftSkillImages=StaticValue.leftSkillImgs.subList(0,7);rightSkillImages=StaticValue.rightSkillImgs.subList(0,7);
//新增skill方法public void skill(){if (this.status!=3&&this.status!=-3){if (this.status>0){this.status=6;}else{this.status=-6;}if (this.moving>=7){this.status= this.status>0?1:-1;this.y=235;}}}
//在run方法增加
case 6:
this.y=350;
if (this.moving>7){
this.moving=0;
}    
this.showImage=rightSkillImages.get((int)moving);moving+=0.5;
if (this.moving>=7){
this.status= this.status>0?1:-1;
this.y=235;
}break;
case -6:
this.y=350;
if (this.moving>7){ this.moving=0;
} 
this.showImage=leftSkillImages.get((int)moving);
moving+=0.5;
if (this.moving>=7){
this.status= this.status>0?1:-1;
this.y=235;
}
break;
//修改其中攻击敌人死亡的条件
if (this.backGround !=null){
List<Enemy> allEnemy = this.backGround.getAllEnemy();
for (int i=0;i<allEnemy.size();i++){
Enemy enemy = allEnemy.get(i);
if (this.status ==4 && (this.x + 125)>enemy.getX() && (this.x+125)<enemy.getX()+250||this.status ==6 && (this.x + 125)>enemy.getX() && (this.x+125)<enemy.getX()+250){
enemy.dead();
} else if (this.status ==-4 &&(this.x+125)<(enemy.getX()+400)&&(this.x+125)>enemy.getX()+256||this.status ==-6 &&(this.x+125)<(enemy.getX()+400)&&(this.x+125)>enemy.getX()+256) {
enemy.dead();}}
}
//在move方法添加
case 6:
break;
case -6:
break;
MyFrame.JAVA
点击查看代码
//在keyPressed中添加
if (keyCode==74){
this.person.attack();
}

2.添加敌人死亡倒地效果动画

主要代码

StaticValue
点击查看代码
//在static中增加
for (int i=0 ;i<5;i++){File rightfile = new File(ImagePath+"enemy/right/1555_death_"+i+".png");File leftfile = new File(ImagePath+"enemy/left/1555_death_"+i+".png");leftEnemyImgs.add(ImageIO.read(leftfile));rightEnemyImgs.add(ImageIO.read(rightfile));
Enemy.JAVA
点击查看代码
private boolean isDeathAnimationPlaying = false;
//在setImageList
leftDeathImages=StaticValue.leftEnemyImgs.subList(20,25);
rightDeathImages=StaticValue.rightEnemyImgs.subList(20,25);
//重新写dead方法
public void dead() {if (this.status == 2) {this.status = 5;isDeathAnimationPlaying = true;        // 启动一个定时器或者计数器,用于检查死亡动画是否播放完毕new Thread(() -> {try {                // 假设死亡动画持续时间为3秒,这里可以根据实际情况调整Thread.sleep(900);isDeathAnimationPlaying = false;if (this.status == 5 &&!isDeathAnimationPlaying) {this.backGround.getAllEnemy().remove(this);}} catch (InterruptedException e) {e.printStackTrace();}}).start();} else if (this.status == -2) {this.status = -5;isDeathAnimationPlaying = true;        // 同理,对于另一种方向的死亡动画也进行类似处理new Thread(() -> {try {Thread.sleep(900);isDeathAnimationPlaying = false;if (this.status == -5 &&!isDeathAnimationPlaying) {this.backGround.getAllEnemy().remove(this);}} catch (InterruptedException e) {e.printStackTrace();}}).start();}}

3.增加技能蓝条和使用次数

MyFrame.JAVA

点击查看代码
//在paint方法中增加
graphics.setColor(Color.BLACK);graphics.drawRect(50,80,200,20);int manaWidth= (int)(person.getMana()/100*200);graphics.setColor(Color.BLUE);graphics.fillRect(50,80,manaWidth,20);graphics.setColor(Color.BLACK);
Person.JAVA
点击查看代码
protected double Mana=100.0;
//在skill方法中添加if限制技能使用次数
public void skill(){if (this.Mana!=0){if (this.status!=3&&this.status!=-3){if (this.status>0){this.status=6;}else{this.status=-6;}if (this.moving>=7){this.status= this.status>0?1:-1;this.y=235;}this.Mana-=10;}}}

具体效果实现

1.技能效果

image

2.敌人死亡倒地效果

image

3.蓝条使用效果

image

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025大洗牌!Salesforce如何用AI与DevOps逆风翻盘?

过去两年,Salesforce经历了不小的挑战:股价下跌、裁员潮,市场饱和带来了职业机会的重置。然而,2024年随着AI战略Agentforce的推出和DevOps工具的成熟,Salesforce正逐渐找回增长动力。 Salesforce生态的“重置”已全面展开:市场重塑、岗位洗牌、AI崛起,未来的机遇与挑战并…

太阳能光伏板分几种?什么区别?

前言: 太阳能板依据制作材料和工艺差异,主要分为五大类。首先是单晶硅太阳能板,作为早期产品,其制作能耗与时间成本高,转换效率却出众,通常达到15%至20%。其次,多晶硅太阳能板通过熔化多晶硅材料制作,成本较低,转换效率在12%至18%之间。非晶硅太阳能板则采用非晶硅材料…

k8s安装attu

官方文档里就这么一句安装attu,但是脚本里的镜像,我们无法访问,我们需要修改自定义的镜像kubectl apply -f https://raw.githubusercontent.com/zilliztech/attu/main/attu-k8s-deploy.yaml 1.下载yaml文件[root@master my_yaml]# cd /root/my_yaml[root@master my_yaml]#wget …

【YashanDB知识库】YAS-02605 the current instance is not master role

本文内容来自YashanDB官网,原文内容请见 https://www.yashandb.com/newsinfo/7849018.html?templateId=1718516 【标题】错误码处理 【问题分类】恢复YAC数据库报错 【关键字】YAS-02605 【问题描述】在共享集群架构数据库上实施恢复,触发报错 【问题原因分析】执行恢复的节…

arcgis server 授权许可失效的问题

到许可keycodes的目录下,查看keycodes,要把keycodes文件中的时间改成新的时间即可。(网上别人说重新授权,但是我授权没用)如果是linux版本的arcgis server也遇到类似问题,也是同样的修改。 linux版本的路径一般如下:

茶饮门店食品安全升级战:看板软件如何成为制胜关键?

茶饮门店可以通过选择适合的看板软件、设计与食品安全相关的看板、细化食品安全管理任务、实时更新与跟踪任务进度、利用数据分析功能优化管理以及确保信息安全性与合规性等策略来利用看板软件提升食品安全管理水平。这些措施有助于门店提高食品安全管理的效率和效果,保障消费…

Google Chrome cursor auto edit mode bug All In One

Google Chrome cursor auto text edit mode bug All In One Google Chrome 光标自动进入文本编辑模式 bug 插入符号浏览 模式 Caret Browsing Mode Google Chrome cursor auto text edit mode bug All In OneGoogle Chrome 光标自动进入文本编辑模式 bugtext cursor bug问题分析…

关于 Webstorm 2024 安装激活教程以及常见问题(激活至2026,实际上永久,亲测!)

申明:本教程 Webstorm补丁、激活码均收集于网络,请勿商用,仅供个人学习使用,如有侵权,请联系作者删除。若条件允许,希望大家购买正版 !卸载老版本 Webstorm 首先,如果小伙伴的电脑上有安装老版本的 Webstorm , 需要将其彻底卸载掉,如下所示(没有安装则不用管,直接安…

k8s资源服务质量管理(Resource QoS)

10.4.3 资源服务质量管理(Resource QoS) 本节对Kubernetes如何根据Pod的Requests和Limits配置来实现针对Pod的不同级别的资源服务质量控制(QoS)进行说明。 在Kubernetes的资源QoS体系中,需要保证高可靠性的Pod可以申请可靠资源,而一些不需要高可靠性的Pod可以申请可靠性…

车联网HIL仿真测试解决方案

经纬恒润结合硬件在环技术、通信信息、云平台、场景仿真、车载单元仿真技术,开发了针对车联网V2N测试&V2X应用场景测试的仿真系统,可为车载终端TBOX/OBU软硬件开发与测试、数据后台系统功能开发与验证以及智能网联车辆系统级测试等提供全方位的仿真与测试环境,为车联网相…

数据库中的基本数据类型:整型、浮点型与字符型的探讨

title: 数据库中的基本数据类型:整型、浮点型与字符型的探讨 date: 2025/1/2 updated: 2025/1/2 author: cmdragon excerpt: 数据类型是数据库管理系统(DBMS)中的基本构建块,它决定了数据的存储方式、操作方式以及有效性。在设计数据库时,合理选择和使用数据类型至关重要。…

RoboMaster电控 STM32开发环境搭建

CPU工作频率可以达到168MHz,基本可以满足比赛中所有的控制需求。 stm32的主流开发方式包括寄存器开发,标准库开发,HAL库(LL库)开发。 寄存器开发即直接控制32的寄存器,工程运行效率高,但是开发难度大,可读性与可移植性差; 标准库开发即使用ST官方开源的一套标准固件库…