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