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

相关推荐
matlabgoodboy8 分钟前
Python代做java代码编写C++大数据R语言Hadoop/spark/flink/C语言
java·大数据·python
实心儿儿14 分钟前
C++ —— 红黑树
java·开发语言·算法
啥都想学点32 分钟前
第18天:Springboot 项目搭建
java·spring boot·后端
Fang fan32 分钟前
Java集合
java·开发语言·算法
秋刀鱼不做梦36 分钟前
网络编程和Socket套接字(UDP+TCP)(如果想知道Java中有关网络编程和Socket套接字的知识,那么只看这一篇就足够了!)
网络·网络协议·学习·tcp/ip·udp
AI成长日志36 分钟前
【笔面试算法学习专栏】链表操作专题:反转、环形检测与合并
学习·算法·面试
福运常在42 分钟前
股票数据API(21)如何获取股票指数最新分时交易数据
java·python·maven
计算机徐师兄1 小时前
Java基于微信小程序的青少年科普教学系统【附源码、文档说明】
java·微信小程序·青少年科普教学系统小程序·java青少年科普教学小程序·青少年科普教学微信小程序·青少年科普教学小程序·科普教学微信小程序
东离与糖宝1 小时前
面试官直言:Java应届生面试,我只看这3个核心能力
java·面试
徐某人..1 小时前
基于i.MX6ULL开发板与OV5640摄像头实现QT相机应用开发
qt·学习·arm