Java开发游戏脚本(第三卷)

article/2025/9/21 6:58:39

游戏脚本开发第三卷

    • XML文件存储数据
    • 使用exe4j打包成exe文件
    • 回首BUG
    • 最后结语

XML文件存储数据

我举个例子,我的窗口数据需要存储到文件,它的结构为:

public class Game {// Game类的成员变量private String Title;private int X;private int Y;private int Width;private int Height;// get方法与set方法省略
}

文件

需要的第三方Jar包: dom4j-2.1.1.jar
本人用的是这版本,下载其他版本也是可以用的。

将数据存到XML文件中

     /*** 本方法判断指定文件是否与指定信息类有重复的<title>属性内容,有则修改该信息,否则添加该信息* * @param file - 指定文件* @param game - 指定信息类*/public static void ReviseGame(File file, Game game) {try {InputStream in = new FileInputStream(file);SAXReader reader = new SAXReader();Document doc = reader.read(in);Element root = doc.getRootElement();List<Element> elements = root.elements();OutputFormat format = OutputFormat.createPrettyPrint();format.setEncoding("UTF-8");boolean FileIsExist = false;for (Element element : elements) {// 如果文件存在一样的<title>属性内容,则修改该相关的其他信息if (game.getTitle() != null && game.getTitle().equals(element.elementText("title"))) {element.element("x").setText(String.valueOf(game.getX()));element.element("y").setText(String.valueOf(game.getY()));element.element("width").setText(String.valueOf(game.getWidth()));element.element("height").setText(String.valueOf(game.getHeight()));FileIsExist = true;break;}}// 如果文件不存在<title>属性内容,则向文件添加该信息if (!FileIsExist) {// 添加DOM节点Element element = root.addElement("game");element.addElement("title").addText(game.getTitle());element.addElement("x").addText(String.valueOf(game.getX()));element.addElement("y").addText(String.valueOf(game.getY()));element.addElement("width").addText(String.valueOf(game.getWidth()));element.addElement("height").addText(String.valueOf(game.getHeight()));}// 写入文件FileOutputStream fos = new FileOutputStream(file);XMLWriter writer = new XMLWriter(fos, format);writer.write(doc);// 结束操作writer.close();in.close();} catch (Exception e) {e.printStackTrace();}}

将XML文件中的数据提取出来

     /*** 本方法将文件的所有信息存储到列表中并返回* * @param file - 指定文件* @return - 返回信息列表*/public static List<Game> getAllGame(File file) {try {InputStream in = new FileInputStream(file);SAXReader reader = new SAXReader();Document doc = reader.read(in);Element root = doc.getRootElement();List<Game> games = new ArrayList<>();List<Element> elements = root.elements();for (Element element : elements) {// 遍历并把所有标签存储到列表中Game game = new Game();game.setTitle(element.elementText("title"));game.setX(Integer.valueOf(element.elementText("x")));game.setY(Integer.valueOf(element.elementText("y")));game.setWidth(Integer.valueOf(element.elementText("width")));game.setHeight(Integer.valueOf(element.elementText("height")));games.add(game);}return games;} catch (Exception e) {e.printStackTrace();return null;}}

将XML文件中的数据全部清空

     /*** 本方法会删除指定文件所有的根标签下的子标签,仅保留根标签* * @param file - 指定文件*/public static void removeAllGame(File file) {try {InputStream in = new FileInputStream(file);SAXReader reader = new SAXReader();Document doc = reader.read(in);Element root = doc.getRootElement();List<Element> elements = root.elements();OutputFormat format = OutputFormat.createPrettyPrint();format.setEncoding("UTF-8");for (Element element : elements) {// 遍历并删除所有子标签element.detach();}// 写入文件FileOutputStream fos = new FileOutputStream(file);XMLWriter writer = new XMLWriter(fos, format);writer.write(doc);// 结束操作writer.close();in.close();} catch (Exception e) {e.printStackTrace();}}

下面为测试结果:
测试
测试结果

使用exe4j打包成exe文件

  1. eclipse导出项目:导出JAR文件,一直点下一步就可。
  2. 打开exe4j。(相关图片因版本问题无法上传,只能文字描述了
  3. 1.Welcome右下方有个Change License按钮,需要填注册码,不填则会每次打开exe文件都会弹出一个提示框。注册码在网上一大把。
  4. 2.Froject type选择"JAR in EXE" mode。
  5. 4.Executable info勾选Generate 64-bit executable(64位电脑才需要勾选)。
  6. 5.Java invecation里面添加所有Jar包,设置程序的主方法。
  7. 5.Native libraries里面添加所有dll文件,没有就不用导入。
  8. 6.Search sequence里面添加jre路径,如.\jre1.8.0.202,就代表打包好的exe文件与jre文件夹需要放在同一级目录里面,如果填.\lib\jre1.8.0.202,则需要在exe文件旁边建立文件夹lib,然后把jre文件夹复制到lib里面。
  9. 6.Preferred VM里面选择Client hotspot VM,然后直接Finish。
  10. 点击Finish之后就开始打包了,打包成功后就可以在你设置的保存路径下看到打包好的exe文件。
    无

回首BUG

打包完成后就可以直接运行exe文件了,也可以发给朋友们使用,如果用缩放比例为125%的电脑写的Swing界面打包之后会发现界面变大了,因为打包之后的比例为100%,你把电脑的缩放比例调整为100%后,显示界面就正常了,我前一卷说的BUG就是这比例搞出来的,因为我电脑就是125%缩放比例,计算鼠标坐标是正常的,如果突然按照100%缩放比例来计算,会发现存在1.25倍数的坐标偏移,在这BUG出现之时,我一直以为是代码的问题,检测了很长一段时间,最后才知道是缩放比例的问题,然后就写了个检测缩放比例的代码,如下所示:

       // 计算屏幕尺寸差异double different;// 计算真实的屏幕比例GraphicsDevice gd = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();// 计算缩放比例为100%情况下的屏幕尺寸Dimension di = Toolkit.getDefaultToolkit().getScreenSize();// 差异对比计算double different1 = gd.getDisplayMode().getWidth() / di.getWidth();double different2 = gd.getDisplayMode().getHeight() / di.getHeight();if(different1 == different2) {different = different1;}

注意:getScreenSize()方法在打包前也是按照125%比例计算的,在打包后就会按照100%比例计算,而getDefaultScreenDevice()无论什么情况都是按照你电脑设置的比例进行计算,所以我们可以通过两个方法的计算差异获得此电脑的缩放比例,然后通过缩放比例来调整坐标信息,如:检测同一个位置坐标,打包前为(625,625),打包后为(500,500),缩放比例就是1.25,我们只需要把程序的坐标计算结果乘上缩放比例,即可兼容所有缩放比例的电脑。当然,你也可以不用处理缩放比例的问题,既然这方法按照100%比例就能正常运行,我们只需计算一下差异,如果缩放比例不为100%,就弹出提示即可。

public static void main(String[] args) {if (getDifferent()) {//此处省略一万行代码} else {javax.swing.JOptionPane.showMessageDialog(null, "请将您的电脑的缩放尺寸改成100%", "提示", javax.swing.JOptionPane.WARNING_MESSAGE);}}

最后结语

脚本1.0的功能也快介绍完了,下一卷主要内容就是说一些图片相关的功能:注册(登录)界面常常使用的生成验证码图像识别(就是在屏幕上查找与另一个图片的坐标,比如在屏幕上截取一张图片,运行程序后,得出这张截图在屏幕的位置,主要用于脚本可识别图片,好处就是即使窗口移动了也可以找到正常的坐标),一些小功能:设置自动关机,最后就是需要脚本源码的道友,在评论下方留下邮箱账号即可!


点击前往下一卷内容



http://chatgpt.dhexx.cn/article/rt29bqNV.shtml

相关文章

乐玩模块脚本实战教程辅助脚本制作开发视频

乐玩插件模块的制作&#xff0c;封装了后台绑定判断&#xff0c;键鼠图色窗口文本输入等游戏辅助常用的方法&#xff0c;每种方法都做了游戏调用测试示范&#xff0c;最后录制了四种多线程方法调用乐玩插件&#xff0c;并通过游戏进行了演示。 学习地址&#xff1a;链接&#x…

游戏多开器制作教程

这里讲解怎么制作多开器&#xff0c;简单易懂的讲解&#xff0c;希望能够记录学习过程。 用易语言来制作自己的小工具&#xff0c;还是挺有成就感的。每个人都可以。 1.常见的几种游戏多开限制-简单说明 2.什么是互斥体 3.互斥体的类型与查找 4.编写多开代码实现游戏多开

C++游戏编程教程(一)

参考书籍&#xff1a;《C游戏编程&#xff1a;创建3D游戏》 注&#xff1a;本教程所有代码的开发环境均为Visual Studio Preview 2022&#xff0c;C标准是C20。 一、初识SDL SDL是一个跨平台的开源多媒体库&#xff0c;被广泛应用于游戏开发&#xff0c;具体可以看这里。另外…

html5分镜头脚本范例,分镜头脚本教程图解

这是一份pdf免费高清彩版的分镜头脚本设计教程&#xff0c;全书彩页&#xff0c;排版非常不错&#xff0c;阅读起来充满趣味性&#xff0c;另外&#xff0c;书中有不少分镜头脚本范例以及分镜头脚本教程图解&#xff0c;是一本值得一看的好书。全书详细讲解了分镜头是如何制作的…

Java开发游戏脚本(第五卷)

游戏脚本开发第五卷 前言介绍相关技术相关功能项目结构最后结语 前言介绍 本卷具体介绍脚本1.0&#xff0c;相关代码不再展示&#xff0c;该项目全部源码以及相关配置文件可在下方评论区留下QQ邮箱即可领取。 相关技术 JavaFX&#xff0c;主要用于展示页面效果&#xff0c;该技…

群控系统linux脚本,群控系统的自定脚本制作

做为沒有一切技术性累积的***游戏玩家&#xff0c;买这套醉适合&#xff0c;回家了依照使用说明一顿插线&#xff0c;插 好即玩&#xff0c;一小时内拿下&#xff0c;立刻就可以进行实际业务流程。这套系统软件现阶段关键对于手机0信&#xff0c;沒有各种各样目不暇接的作用&am…

Unity 脚本入门教程

原文&#xff1a;Introduction to Unity Scripting 作者&#xff1a;Georgi Ivanov 译者&#xff1a;kmyhy Unity 的许多功能都要通过它的富脚本语言 C# 来体现。你可以用它来处理用户输入&#xff0c;操作场景中的对象&#xff0c;碰撞检测&#xff0c;自动生成新的 GameOb…

2020年易语言调用大漠插件来制作游戏脚本教程

第一章 易语言基础 共6课时 1、关于易语言必须了解的基本知识 2、易语言基本组件&#xff08;不包括超级列表框&#xff09;讲解 3、易语言超级列表框详解 3、易语言核心支持库讲解之一 4、易语言核心支持库讲解之二 5、易语言模块制作和DLL制作 6、用制作的模块和DLL开发三个小…

Lua脚本教程

Lua脚本教程 一、数据类型1、常量、变量2、变量名&#xff1a;字母、数字、下划线&#xff08;不能以数字开头&#xff09;3、几种数据类型 二、运算符三、初识函数四、判断语句五、循环语句六、表七、高级函数与控制结构八、函数库1.基本库2.数学库&#xff0c;表库3.字符串库…

【按键精灵】一步两步脚本教程

使用版本&#xff1a;2014.06:19549 游戏地址&#xff1a;http://www.4399.com/flash/204661_2.htm 图1 4399一步两步 1 脚本前准备 一步两步在h5页面中的目标是通过点击1步/2步&#xff0c;避免掉下去的情况下得到高分&#xff0c;另外能吃到硬币有额外加分&#xff0c;那么…

梦幻西游打宝图脚本制作教程

第1节课-找游戏内存数据 第2节课-起号辅助开发实战 第3节课-辅助大体框架设计 第4节课-自动起号功能完善 第5节课-找各种功能的内存数据1 第6节课-点击小地图的算法分析 第7节课-点击小地图功能代码实现和完善 第8节课-背包物品遍历功能实现 第9节课-背包物品遍历功能完善 第10…

怎么制作游戏脚本_自动玩游戏,手游脚本究竟是怎么做的?

手游现在已经成为大家打发碎片化时间的一种很普遍的方式了,而有的人会由于种种愿意不能自己去玩,就希望有什么办法或者工具能帮助我们解决这个问题,不用人收着也能完成任务。 实现原理: 比如一个游戏的任务,你需要在不同的手机屏幕上进行一系列点击,滑动,甚至输入文本,…

软件开发过程与需求获取

为学堂在线清华大学《软件工程》部分视频笔记 8.1需求工程师 需求分析是软件工程中的重要步骤&#xff0c;是决定软件醒目成败的关键影响因素之一。因此&#xff0c;需求工程成为软件工程和系统工程重要的分支领域之一。在需求工程中&#xff0c;我们主要关注的事软件和系统需求…

软件需求分析-需求开发-需求分析与建模和需求描述

需求开发 C6需求分析与建模一、要点二、周期一&#xff1a;理清框架和脉络三、周期二&#xff1a;确定需求细节四、其他需求 C7需求描述需求描述的风格与格式 C8需求验证 C6需求分析与建模 一、要点 需求分析实际上是业务分析&#xff0c;也就是选择一种业务导向的线索将零散…

需求开发与需求管理

需求开发与需求管理概述 在我看来&#xff0c; 项目管理的日常活动包括了&#xff1a; 需求管理、故障管理、版本管理、任务管理。 需求管理贯穿了项目的大部分生命周期&#xff0c;故障管理则从第一个迭代版本出现直到产品维护阶段&#xff08;包括内部故障与外部故障&#xf…

软件开发与过程管理——需求获取

目录 一. 需求获取概述 1.1 为什么要进行需求分析 1.2 需求获取的非平凡性 1.3 需求获取的主要活动 二. 需求获取的策略 2.1 需求获取的主动性策略 2.2 需求协商 三. 需求获取的主要方法 3.1 用户调查 3.2 文档分析 3.3 原型法 3.4 模型驱动 四. 软件开发及过程…

浅谈软件项目需求分析

这里不是写标准化的理论知识&#xff0c;而是想写写对软件需求工作的感受。 理论上的需求管理是要解决系统需求做什么的问题&#xff0c;以此界定系统功能和非功能性的内容。需求指的是由项目接受的或项目产生的产品和产品构件需要&#xff0c;包括由组织征集的对项目的…

软件工程之需求分析

现在人们越来越认识到软件工程在软件开发中的重要作用。目前国内软件在开发中还没有对软件开发的过程进行明确规定,文档不完整,也不规范,软件项目的成功往往归功于软件开发组的一些杰出个人或小组的努力。这种依赖于个别人员上的成功并不能为全组织的软件生产率和质量的提高…

如何写一份好的软件开发的需求分析

什么是需求分析&#xff1f; 通俗的讲&#xff0c;对用户的意图不断揭示和验叛的过程&#xff0c;要对经过系统可行性分析所确定的系统目标做更为详细的描述。 假如你是个建筑工程师&#xff0c;有个客户找你建一个鸡窝&#xff0c;这个时候要需要与客户沟通&#xff0c;来确定…

软件需求的三个层次——业务需求、用户需求和功能需求的区别

我们的软件产品或者项目&#xff0c;其需求都有三个层次&#xff0c;业务需求、用户需求和功能需求&#xff0c;除此之外&#xff0c;每个系统还有各种非功能需求。不是很了解的朋友&#xff0c;今天就和我和我们一起来了解一下吧&#xff01;   下图是需求层次关系图&#…