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

相关推荐
m0_5713728222 分钟前
嵌入式学习——ARM 体系架构1
arm开发·学习
Rhys..1 小时前
python + Flask模块学习 2 接收用户请求并返回json数据
python·学习·flask
Volunteer Technology1 小时前
三高项目-缓存设计
java·spring·缓存·高并发·高可用·高数据量
栗子~~1 小时前
bat脚本- 将jar 包批量安装到 Maven 本地仓库
java·maven·jar
Mr.Entropy2 小时前
ecplise配置maven插件
java·maven
叙白冲冲2 小时前
tomcat 为啥能一直运行?不像方法那样结束?
java·tomcat
nightunderblackcat2 小时前
新手向:Python制作贪吃蛇游戏(Pygame)
python·游戏·pygame
2501_926227942 小时前
.Net程序员就业现状以及学习路线图(四)
学习·.net
CoderYanger2 小时前
MySQL数据库——3.2.1 表的增删查改-查询部分(全列+指定列+去重)
java·开发语言·数据库·mysql·面试·职场和发展
迷知悟道3 小时前
java面向对象四大核心特征之抽象---超详细(保姆级)
java·后端