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

相关推荐
Memory_荒年6 小时前
自定义 Spring Boot Starter:手搓“轮子”,但要搓出兰博基尼!
java·后端
栈外6 小时前
我是IDEA重度用户,试了4款AI编程插件:有一款有并发Bug,有一款越用越香
java·后端
架构师沉默6 小时前
为什么说 Go 做游戏服务器就有人皱眉?
java·后端·架构
a5629916196 小时前
【springboot】Spring 官方抛弃了 Java 8!新idea如何创建java8项目
java·spring boot·spring
秃了也弱了。6 小时前
ElasticSearch:优化案例实战解析(持续更新)
android·java·elasticsearch
星空露珠7 小时前
迷你世界UGC3.0脚本Wiki角色模块管理接口 Actor
开发语言·数据库·算法·游戏·lua
一叶落4387 小时前
LeetCode 54. 螺旋矩阵(C语言详解)——模拟 + 四边界收缩
java·c语言·数据结构·算法·leetcode·矩阵
最初的↘那颗心7 小时前
Prompt 工程实战:五要素框架与 Spring AI 模板化落地
java·大模型·prompt工程·spring ai·ai应用开发
试试勇气7 小时前
Linux学习笔记(十七)--线程概念
linux·笔记·学习
weixin_458872617 小时前
东华复试OJ二刷复盘12
学习