Java Swing游戏开发学习23

news/2024/5/17 14:41:54/文章来源:https://blog.csdn.net/ximen502/article/details/137422713

内容来自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.luyixian.cn/news_show_1045599.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

探索进程控制第一弹(进程终止、进程等待)

文章目录 进程创建初识fork函数fork函数返回值fork常规用法fork调用失败的原因 写时拷贝进程终止进程终止是在做什么?进程终止的情况代码跑完,结果正确/不正确代码异常终止 如何终止 进程等待概述进程等待方法wait方法waitpid 进程创建 初识fork函数 在…

Vue3_2024_7天【回顾上篇watch常见的后两种场景】___续

Vue3中监听多条数据的两种使用 1.watch【使用上一章写法,监听两个属性,然后执行相应操作…】 2.watchEffect【相对于使用watch,watchEffect默认页面初始加载,有点类似加配置:立即执行 immediate】 代码: …

单链表专题

文章目录 目录1. 链表的概念及结构2. 实现单链表2.1 链表的打印2.2 链表的尾插2.3 链表的头插2.4 链表的尾删2.5 链表的头删2.6 查找2.7 在指定位置之前插入数据2.8 在指定位置之后插入数据2.9 删除pos节点2.10 删除pos之后的节点2.11 销毁链表 3. 链表的分类 目录 链表的概念…

Qt小案例

工程概述 MainWindows 还是 Widget 在 Qt 中,创建 "MainWindow" 与 "Widget" 项目的主要区别在于他们的用途和功能范围: 1. MainWindow :这是一个包含完整菜单栏、工具栏和状态栏的主窗口应用程序框架。它适合于更…

python画图Matplotlib和Seaborn

python画图Matplotlib和Season 一、Matplotlib1、介绍2、安装3、内容二、Seaborn1、介绍2、安装3、内容一、Matplotlib Matplotlib官网 1、介绍 Matplotlib 是一个 Python 的绘图库,用于创建高质量的二维图表和一些基本的三维图表。它广泛应用于科学计算、数据分析、工程学和…

泛微OA 自定义多选浏览框

1、建模引擎-》应用建模-》表单 2、建模引擎-》应用建模-》模块 3、建模引擎-》应用建模-》查询 4、把查询页面挂到前端页面。 效果展示: 5、建模引擎-》应用建模-》浏览框 6、流程表单中字段应用

IP-GUARD内置用户系统同步飞书组织架构使用说明

一、功能简介 实现将飞书的通讯录组织架构同步到内置用户系统。 二、功能配置 2.1 飞书创建自建应用 在浏览器上打开飞书开放平台 https://open.feishu.cn ,登录管理员账号后点击开发 者后台 在开发者后台点击创建企业自建应用,填写自建应用程序名称以及描述,设置图标,点…

SSRF靶场

SSRF概述 ​ 强制服务器发送一个攻击者的请求 ​ 互联网上的很多web应用提供了从其他服务器(也可以是本地)获取数据的功能。使用用户指定的URL,web应用可以获取图片(载入图片)、文件资源(下载或读取)。如下图所示&…

利用Leaflet + React:构建WEBGIS

React是 Facebook 开发的一个开源库,用于构建用户界面。就其本身而言,Leaflet是一个用于将地图发布到网络的JavaScript 库。这两个工具的组合很简单,允许您创建动态网络地图。在本文中,我们将看到这种组合的一些特征以及一些简单的…

【MySQL数据库 | 第二十五篇】深入探讨MVCC底层原理

前言: 在当今互联网时代,数据库扮演着数据存储和管理的关键角色。对于大型Web应用程序和企业级系统而言,高效地处理并发访问和事务管理是至关重要的。多版本并发控制(MVCC)是一种数据库事务处理的技术,旨…

三种常见webshell工具的流量特征分析

又来跟师傅们分享小技巧了,这次简单介绍一下三种常见的webshell流量分析,希望能对参加HW蓝队的师傅们有所帮助。 什么是webshell webshell就是以asp、php、jsp或者cgi等网页文件形式存在的一种代码执行环境,主要用于网站管理、服务器管理、…

机器学习中的激活函数

激活函数存在的意义: 激活函数决定了某个神经元是否被激活,当这个神经元接收到的信息是有用或无用的时候,激活函数决定了对这个神经元接收到的信息是留下还是抛弃。如果不加激活函数,神经元仅仅做线性变换,那么该神经网…

蓝桥杯——17

学习视频&#xff1a;18-深搜的剪枝策略练习_哔哩哔哩_bilibili Q&#xff1a;找数字 #include<iostream> #include<cstring> using namespace std; int n; bool ok; void dfs(int num, int cnt) {if (cnt > 19) {return;}if (ok) {return;}if (num % n 0) {…

MySQL-基本SQL语句编写:运算符练习

运算符练习 1.选择工资不在5000到12000的员工的姓名和工资 SELECT last_name,salary FROM employees #where salary not between 5000 and 12000; WHERE salary < 5000 OR salary > 12000;2.选择在20或50号部门工作的员工姓名和部门号 SELECT last_name,department_id…

基于springboot+vue+Mysql的职称评审管理系统

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

4月6号排序算法(2)

堆排序 讲堆排序之前我们需要了解几个定义 什么叫做最大堆&#xff0c;父亲节点&#xff0c;以及孩子节点 将根节点最大的堆叫做最大堆或大根堆&#xff0c;根节点最小的堆叫做最小堆或小根堆。 每个节点都是它的子树的根节点的父亲 。 反过来每个节点都是它父亲的孩子 。 …

Java从坚持到精通-SpringSecurity

1.安全框架是什么 安全框架的本质就是一堆过滤器的组成&#xff0c;目的在于保护系统资源&#xff0c;所以在到达资源之前会做一系列的验证工作&#xff0c;这些验证工作通过一系列的过滤器完成。安全框架通常的功能有认证、授权、防止常见的网络攻击&#xff0c;以此为核心拓…

IP地址中网络号的查看方法

IP地址是互联网中设备的标识&#xff0c;它由网络号和主机号两部分组成。网络号用于标识设备所连接的网络&#xff0c;而主机号则用于标识该网络中的具体设备。了解如何查看IP地址中的网络号对于网络管理员和需要进行网络配置的用户来说至关重要。虎观代理将介绍几种常见的查看…

linux之文件系统、inode和动静态库制作和发布

一、背景 1.没有被打开的文件都在磁盘上 --- 磁盘级文件 2.对磁盘级别的文件&#xff0c;我们的侧重点 单个文件角度 -- 这个文件在哪里&#xff0c;有多大&#xff0c;其他属性是什么&#xff1f; 站在系统角度 -- 一共有多少文件&#xff1f;各自属性在哪里&#xff1f…

Vue3---基础2(component)

主要讲解 component 的创建 以及vue插件的安装 Vue.js Devtools 为谷歌浏览器的Vue插件&#xff0c;可以在调试工具内查看组件的数据等 下载 有两种下载方式 1. 谷歌应用商店 打开Chrome应用商店去下载&#xff0c;这个方法需要魔法 2. 极简插件 极简插件官网_Chrome插件下载_…