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或直接下载获得完整项目

相关推荐
向着光芒的女孩1 小时前
【IDEA】关不了的Proxy Authentication弹框探索过程
java·ide·intellij-idea
Filotimo_2 小时前
Spring Boot 整合 JdbcTemplate(持久层)
java·spring boot·后端
智商低情商凑2 小时前
Go学习之 - Goroutines和channels
开发语言·学习·golang
李慕婉学姐2 小时前
【开题答辩过程】以《“饭否”食材搭配指南小程序的设计与实现》为例,不知道这个选题怎么做的,不知道这个选题怎么开题答辩的可以进来看看
java·spring·小程序
敲敲了个代码3 小时前
CSS 像素≠物理像素:0.5px 效果的核心密码是什么?
前端·javascript·css·学习·面试
abments3 小时前
pgsql timestamp without time zone > character varying解决方案
java
sanggou4 小时前
大数据量查询处理方案 - 内存优化与高效展示
java
没有bug.的程序员4 小时前
Java 字节码:看懂 JVM 的“机器语言“
java·jvm·python·spring·微服务
-大头.4 小时前
深入理解 Java 内存区域与 JVM 运行机制
java·jvm
没有bug.的程序员4 小时前
JVM 整体架构:一套虚拟机的心脏与血管
java·jvm·spring boot·spring cloud·架构