Java Swing游戏开发学习16

内容来自RyiSnow视频讲解

这一节讲的是Player Life玩家生命,就是游戏中人物的血条(health bar),这里作者用的是若干个心❤来表示的血量。

前言

作者的做法是,生命值为1表示半颗红心,2表示一个完整的红心,空心表示没有血量。0就全是空心。6就是3个红心,3的话一个半红心,以此类推。这里使用了3张图片,红心、一半红心、空心。

实现

这个血量指示放在了窗口的左上角。

  • 画最大血量

最大血量除2得到空心数量,然后循环画对应数量的空心即可。

java 复制代码
// draw blank heart, max life
int i = 0;
while (i < gp.player.maxLife / 2) {
    g2.drawImage(heart_blank, x, y, null);
    i++;
    x += gp.tileSize;
}
  • 画当前的血量
    根据当前血量,先画半颗心,然后循环变量加1判断是否需要画全颗心;
java 复制代码
// draw current life
while (i < gp.player.life) {
    // 这个循环的处理逻辑非常巧妙。
    g2.drawImage(heart_half, x, y, null);
    i++;
    if (i < gp.player.life) {
        g2.drawImage(heart_full, x, y, null);
    }
    i++;
    x += gp.tileSize;
}

这个循环的处理逻辑非常巧妙。

效果

生命值(血量)=6

生命值(血量)=3

代码

参考第6篇文章最后,可以使用git clone或直接下载获得完整项目

相关推荐
道可到18 分钟前
Java 反射现代实践速查表(JDK 11+/17+)
java
道可到29 分钟前
Java 反射现代实践指南(JDK 11+ / 17+ 适用)
java
玉衡子39 分钟前
九、MySQL配置参数优化总结
java·mysql
叽哥40 分钟前
Kotlin学习第 8 课:Kotlin 进阶特性:简化代码与提升效率
android·java·kotlin
麦兜*42 分钟前
MongoDB Atlas 云数据库实战:从零搭建全球多节点集群
java·数据库·spring boot·mongodb·spring·spring cloud
带刺的坐椅43 分钟前
DamiBus v1.1.0 发布(给单体多模块解耦)
java·事件总线·damibus
葡萄城技术团队43 分钟前
用 Java 构建健壮 REST API 的 4 个关键技巧
java
杨杨杨大侠43 分钟前
解密 atlas-mapper 框架 (9/10):故障排查与调试技巧
java·开源·github
Slaughter信仰1 小时前
深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)第十章知识点问答(10题)
java·jvm·数据库
麦兜*1 小时前
MongoDB 在物联网(IoT)中的应用:海量时序数据处理方案
java·数据库·spring boot·物联网·mongodb·spring