Java Swing游戏开发学习23

news2024/12/24 1:11:04

内容来自RyiSnow视频讲解

这一节讲的是Character Status角色状态或属性。

前言

这一节讲的是实现角色状态或属性的显示,就有点像RPG游戏中,人物属性显示的面板,其中有玩家的装备、玩家的等级,各种防御值、闪避值、跑速什么的。

类似下图游戏的人物属性面板,当然没这么华丽,毕竟是像素风格的2D游戏。

在这里插入图片描述
在这里插入图片描述

实现

这里还是绘制了一个矩形,然后在矩形框中填充信息来实现的角色属性显示。虽然看起来比较简陋,但是合抱之木生于毫末嘛。

角色添加的属性,下面这些属性是需要显示在属性框中的。这些都是简单的示例,可以根据自己的需要添加更多的属性。

// player status
maxLife = 6;
life = maxLife;//生命值
level = 1;//级别
strength = 1;//力量。力量越大,输出的伤害越大。
dexterity = 1;//闪避。闪避越高,收到的伤害就越小
exp = 0;//当前经验
nextLevelExp = 5;//升级所需经验
coin = 0;//钱
currentWeapon = new OBJ_Sword_Normal(gp);//武器
currentShield = new OBJ_Shield_Wood(gp);//盾牌
attack = getAttack();//总的攻击值取决于力量和武器。
defense = getDefense();//总的防御值取决于闪避和盾牌

效果

  • 英文效果
    在这里插入图片描述
  • 中文效果
    在这里插入图片描述
    这里没有使用像素字体,使用的是宋体,由于像素字体和作者所用的不一样,效果看起来比较尴尬,就没用。为了看中文的显示效果,特地用中文显示试了一下。

绘制一个自定义的矩形

  这里增加了一个角色状态,当按c键的时候触发。就像之前显示与NPC对话框的时候调用的方法是一样的,就是显示位置和大小有区别。再次按c键属性框消失。

在矩形中显示角色属性

  左侧显示属性名称

//names
g2.drawString("Level", textX, textY);
textY += lineHeight;
g2.drawString("Life", textX, textY);
textY += lineHeight;
g2.drawString("Strength", textX, textY);
textY += lineHeight;
g2.drawString("Dexterity", textX, textY);
textY += lineHeight;
g2.drawString("Attack", textX, textY);
textY += lineHeight;
g2.drawString("Defense", textX, textY);
textY += lineHeight;
g2.drawString("Exp", textX, textY);
textY += lineHeight;
g2.drawString("Next Level", textX, textY);
textY += lineHeight;
g2.drawString("Coin", textX, textY);
textY += lineHeight + 20;
g2.drawString("Weapon", textX, textY);
textY += lineHeight + 15;
g2.drawString("Shield", textX, textY);
textY += lineHeight;

  右侧显示属性值

value = String.valueOf(gp.player.level);
textX = getXforAlignToRightText(value, tailX);
g2.drawString(value, textX, textY);
textY += lineHeight;
......

更多细节可以参考项目UI类中的代码。这一节基本上就是增加人物角色的属性,然后创建一个角色属性矩形框,把属性显示到里面,就结束了。

代码

参考第6篇文章最后,可以使用git clone或直接下载获得完整项目

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1581015.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于单片机体温心率检测仪系统设计

**单片机设计介绍, 基于单片机体温心率检测仪系统设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机体温心率检测仪系统设计是一个综合性的项目,旨在通过单片机及其外围电路实现对人体体温和心…

LeetCode-118. 杨辉三角【数组 动态规划】

LeetCode-118. 杨辉三角【数组 动态规划】 题目描述:解题思路一:Python 动态规划解题思路二:解题思路三:0 题目描述: 给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中&…

UE5、CesiumForUnreal实现建筑白模生长动画效果

文章目录 1.实现目标2.实现过程2.1 实现原理2.2 具体代码2.3 应用测试3.参考资料1.实现目标 在上篇文章加载本地建筑轮廓GeoJson数据生成建筑白模的基础上,本文通过材质“顶点偏移”实现建筑白模生长效果,GIF动图如下所示: 2.实现过程 常用的实现建筑生长效果的方式有两种,…

前端二维码工具小程序使用说明书

一、产品概述 前端二维码工具小程序是一款便捷、高效、易用的二维码生成与识别工具。本产品支持根据用户输入的文本或链接生成二维码,同时提供扫一扫功能以识别二维码内容,并支持将识别到的内容复制到剪贴板。此外,产品还提供了美化功能&…

如何为自己的网站选择SSL证书?

在当今数字化时代,网站安全性已经成为了一个非常重要的问题。为了保护网站的安全性,SSL证书已经成为了必不可少的一部分。SSL证书可以保护网站的数据传输过程,防止黑客攻击和窃取敏感信息。但是,如何为自己的网站选择SSL证书呢&am…

vulnhub之devguru靶场提权过程(vulnhub打靶日记)

一、环境搭建 VM版本:17.5.1 build-23298084 攻击机:Kali2024(下载地址:https://www.kali.org/) 靶机:vulnhub靶场Devguru(下载地址:https://www.vulnhub.com/entry/devguru-1,62…

C语言的显式类型转换和隐式类型转换详细讲解

目录 一、类型转换 1、显式类型转换 2、隐式类型转换 二、算术转换 三、总结 每个编译器都会对表达式做两件事情,一是判断表达式中操作符的优先级和结合性,二是判断表达式中的操作数类型是否一致,如果不一致则需要进行类型转换。第一点在…

R-Tree的简单介绍

一、R-Tree简介 R-Tree,全称是“Real Tree”,是一种专门为处理多维空间数据(尤其是二维空间数据,如地理坐标)设计的树形数据结构。 简单来说,它就像是一个特殊的目录,将空间数据按照它们的位置…

蝙蝠优化算法(bat optimization algorithm)

注意:本文引用自专业人工智能社区Venus AI 更多AI知识请参考原站 ([www.aideeplearning.cn]) 算法背景 蝙蝠优化算法(Bat Algorithm)是一种基于群体智能的优化算法,它的灵感来源于蝙蝠捕食时的回声定位行…

蓝桥杯刷题-15-异或和之和-拆位+贡献法⭐⭐(⊙o⊙)

蓝桥杯2023年第十四届省赛真题-异或和之和 题目描述 给定一个数组 Ai,分别求其每个子段的异或和,并求出它们的和。或者说,对于每组满足 1 ≤ L ≤ R ≤ n 的 L, R ,求出数组中第 L 至第 R 个元素的异或和。然后输出每组 L, R 得到…

Xlinx相关原语讲解导航页面

原语就是对FPGA底层器件的直接调用,与IP功能是类似的,将原语的参数变成IP配置时的GUI界面参数,可能会更加直观。IP的缺陷在于繁杂,比如SelectIO IP内部包含IDDR、ODDR等等IO转换的功能,如果只想使用单沿转双沿一个功能…

Leetcode刷题-字符串详细总结(Java)

字符串 字符串可能在算法处理上面和数组是类似的,但是String和数组的数据结构还是有一些不一样的 1、反转字符串 344. 反转字符串 - 力扣(LeetCode) 双指针的经典应用,两个指针同时向中间移动 public void reverseString(char[…

C语言进阶课程学习记录-第20课 - 链接过程简介

C语言进阶课程学习记录-第20课 - 链接过程简介 链接器静态链接实验-静态链接源代码生成目标文件打包生成静态库文件直接编译使用静态库编译 动态链接实验-动态链接源代码生成动态链接库文件直接编译使用动态链接库编译运行test.out删除dlib.so运行test.out 小结 本文学习自狄泰…

【算法】二分算法题

个人主页 : zxctscl 如有转载请先通知 题目 1. 704. 二分查找1.1 分析1.2 代码 2. 34. 在排序数组中查找元素的第一个和最后一个位置2.1 分析2.2 代码 3. 35. 搜索插入位置3.1 分析3.2 代码 4. 852. 山脉数组的峰顶索引4.1 分析4.2 代码 5. 153. 寻找旋转排序数组中…

nexus设置s3存储

问题 因为我的nexus是安装在EC2上面,需要利用s3的存储能力,为nexus提供存储服务。 步骤 准备s3桶 输入桶名,创建s3桶,如下图: 创建桶读写策略 具体内容如下: {"Version": "2012-10-1…

【数据分享】我国第七次人口普查的100m分辨率人口栅格数据(免费获取\tif格式\2020年)

人口空间分布数据是我们在各项研究中经常使用的数据。之前我们分享过来源于LandScan数据集的2000-2022年的1km精度的人口空间分布栅格数据(可查看之前的文章获悉详情)! 相较于LandScan全球人口数据集,我国历次人口普查的数据对于…

AI服务平台replicate

Replicate是一个提供优秀AI模型和工具的平台,旨在帮助用户实现各种人工智能任务。该平台汇集了来自各个领域的顶尖模型,涵盖了文本到图像生成、语言模型、图像编辑、超分辨率等多个领域。用户可以通过Replicate平台快速获取和应用先进的模型,…

【C++】优先级队列(priority_queue)的用法与实现

目录 一、概念: 二、仿函数(Functor): 概念: 应用: 三、底层实现: 基本操作: 完整代码: 测试示例: 一、概念: 优先级队列(pri…

小白水平理解面试经典题目1431. Kids With the Greatest Number of Candies【Array类】

个人专栏 🤺 leetcode 🧗 Leetcode Prime 🏇 Golang20天教程 🚴‍♂️ Java问题收集园地 🌴 成长感悟 欢迎大家观看,不执着于追求顶峰,只享受探索过程 1431. 拥有最多糖果的孩子 小白渣翻译 一…

蓝桥杯刷题-17-平方差-打表+数学⭐(⊙o⊙)

之前的题目:最大也就到2e5左右。1e9的数据范围就意味着,即使是O(n)的复杂度,也会超时。此时可以考虑使用数学方法进行解题。 ❗打表:利用电脑去找一些合法答案,然后在这些合法答案中找规律。 ⭐打表后找到的规律: (1)好像所有的奇数都是合法…