JAVA游戏源码:仙剑|大学生练手项目

学习java朋友们,福利来了,今天小编给大家带来了一款仙剑源码。注意:此源码仅供学习使用!!

源码搭建和讲解

启动main入口:

//************************************************************************
// ************完整源码移步: gitee典康姆/hadluo/java_game01.git *********
//************************************************************************package cn.tedu.xjqxz;import javax.swing.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;/*** 游戏案例的窗口类* 窗口大小:1024 * 768**/
public class GameFrame {public static void main(String[] args) {/** 1.创建窗口类的实例化对象* 2.让窗口对象显示出来* 3.设置窗口对象的相关属性*/final int width = 1024;final int height = 768;JFrame jFrame = new JFrame();jFrame.setSize(width, height);jFrame.setLocationRelativeTo(null);jFrame.setResizable(false);jFrame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);jFrame.addWindowListener(new WindowAdapter() {// 当窗口正要关闭的时候,会自动调用该方法@Overridepublic void windowClosing(WindowEvent e) {super.windowClosing(e);// 弹出确认对话框int ch = JOptionPane.showConfirmDialog(null,"确认退出游戏吗?","提示",JOptionPane.YES_NO_OPTION);if (ch == JOptionPane.YES_OPTION) {System.exit(0);}}});jFrame.setTitle("仙剑奇侠传 - Version 1.0");GamePanel gamePanel = new GamePanel();jFrame.addKeyListener(gamePanel);jFrame.add(gamePanel);jFrame.setVisible(true);}
}

NPC 对象

package cn.tedu.xjqxz;import java.awt.*;/*** 配角人物Npc 类**/
public class Npc {private String name;private boolean chatOver = false;// npc在背景图片中的坐标private int x;private int y;private int index = 0;int chatIndex = 0;private Image[] image;private String[] words;public Npc(String[] words, Image[] image, int x, int y, String name) {this.words = words;this.image = image;this.x = x;this.y = y;this.name = name;}public int getX() {return x;}public int getY() {return y;}public String getName() {return name;}public int getWidth() {return image[0].getWidth(null);}public int getHeight() {return image[0].getHeight(null);}public Image getImage() {return image[index];}public void updateIndex() {index++;if (index > image.length - 1) {index = 0;}}public void updateChatContent() {chatIndex++;if (chatIndex > words.length - 1) {chatOver = true;chatIndex = 0;}}public String getWords() {return words[chatIndex];}public boolean isChatOver() {return chatOver;}public void setChatOver(boolean b) {chatOver = b;}
}

运行工具

代码是一个普通的java工程,我们直接导入到eclipse或者idea就可以运行了。

操作方式

  • 方向键控制角色上下左右移动
  • 空格键与npc对话
  • ESC键退出对话或退出游戏
  • 回车键切换场景(切换位置在地图最右侧小路尽头)

结尾语

我是分享好物+教程+源码 的老罗,欢迎关注,更多精品源码!

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

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

相关文章

【practise】大数相加、大数相乘

通常,我们的int、long long类型都有最大的数字上限,也就是说再大了会有溢出问题,那么很大的数字是怎么进行运算的呢? 其中一种方法是把很大的数字转变成字符串存放到string中,然后用代码对字符串进行处理,…

进程通信(7):互斥锁(mutex)和条件变量

互斥锁(mutex)用于互斥访问临界区,只允许一个线程访问共享变量。 条件变量可以让获取互斥锁 的线程在某个条件变量上等待,直到有其他线程把他唤醒。 互斥锁和条件变量通常一起使用实现同步。 互斥锁的操作 lock(mutex); // 获取锁&#xff…

C++——哈希结构

1.unordered系列关联式容器 本节主要介绍unordered_map和unordered_set两个容器&#xff0c;底层使用哈希实现的 unordered_map 1.unordered_map是储存<key,value>键值对的关联式容器&#xff0c;其允许通过key快速查找到对应的value&#xff0c;和map非常相似&#x…

数学建模--支持向量机

目录 SVM的基本原理 SVM的应用场景 实现细节与案例分析 总结 支持向量机&#xff08;SVM&#xff09;在处理非线性数据时的核函数有哪些&#xff0c;以及它们各自的优缺点是什么&#xff1f; 如何选择支持向量机的惩罚参数CC以优化模型性能和计算效率&#xff1f; 在实际…

V.PS澳大利亚VPS测评

V.PS的澳大利亚VPS位于澳大利亚悉尼市&#xff0c;回程三网强制是走的联通AS9929/CUII链路&#xff0c;是一种轻负载企业级回国路由...而且IP解锁能搞定奈飞、迪士尼、steam、chatgpt等&#xff0c;大洋洲流媒体解锁&#xff0c;尤其是澳大利亚的流媒体&#xff0c;比如澳大利亚…

C语言程序设计-[1] 基础语法

1、字符集 字符集&#xff1a;是ASCII字符集的一个子集。 注&#xff1a;基本上就是电脑键盘可以输入的一些字符。 2、标识符 标识符&#xff1a;用来命名程序中的一些实体&#xff0c;如&#xff1a;变量、常量、函数、数组名、类型名、文件名等。由一个或多个字符组成。 —…

59.DevecoStudio项目引入不同目录的文件进行函数调用

59.DevecoStudio ArkUI项目引入不同目录的文件进行函数调用 arkUi,ets,cj文件&#xff0c;ts文件的引用 import common from ohos.app.ability.common; import stringutils from ./uint8array2string; //index.ts的当前目录 import StringUtils2 from ../http2/uint8array2st…

DETR论文详解

文章目录 前言一、DETR理论二、模型架构1. CNN2. Transformer3. FFN 三、损失函数四、代码实现总结 前言 DETR是Facebook团队在2020年提出的一篇论文&#xff0c;名字叫做《End-to-End Object Detection with Transformers》端到端的基于Transformers的目标检测&#xff0c;DET…

Java重修笔记 第二十七天 匿名内部类

匿名内部类 1. 定义&#xff1a;无类名&#xff08;底层自动分配类名“外部类名$1”&#xff09;&#xff0c;既是类也是对象&#xff0c;定义在外部类的局部位置&#xff0c;例如方法体和代码块中&#xff0c;通过new类或接口并在大括号里重写方法来实现。 2. 使用场景&…

c++网络编程实战——开发基于协议的文件传输模块(一)如何实现一个简单的tcp长连接

前言 在之前的几篇内容中我们已经介绍过基于ftp协议的文件传输模块&#xff0c;而这个系列我们所想实现的就是如何实现基于tcp进行的文件传输模块,话不多说&#xff0c;开坑开坑! 什么是tcp长连接 我们知道tcp在建立连接的时候会通过三次握手与四次挥手来建立tcp连接&#x…

大数据-62 Kafka 高级特性 主题 kafka-topics相关操作参数 KafkaAdminClient 偏移量管理

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

类加载机制

概述 所谓机制就是某种流程规范或运作模式。简单来说&#xff0c;将类文件加载到JVM中的过程&#xff0c;需要对这个过程进行限定和约束&#xff0c;这就是Java类加载的机制。 具体说来&#xff0c;对Java类加载机制的描述可以从三个方面&#xff1a; 按需加载 需要某一个类…

Web开发-html篇-上

HTML发展史 HTML的历史可以追溯到20世纪90年代初。当时&#xff0c;互联网尚处于起步阶段&#xff0c;Web浏览器也刚刚问世。HTML的创建者是蒂姆伯纳斯-李&#xff08;Tim Berners-Lee&#xff09;&#xff0c;他在1991年首次提出了HTML的概念。HTML的初衷是为了方便不同计算机…

python常用库

目录 tqdm库介绍用法 argparse库介绍用法 tqdm库 介绍 封装一个可视化&#xff0c;可拓展的进度条&#xff0c;以了解项目运行的时长&#xff0c;了解项目进展情况。 传入第 用法 安装 pip install tqdm1直接使用 for i in tqdm(range(1000)):time.sleep(0.01)等价 for i…

DNS处理模块 dnspython

DNS处理模块 dnspython 标题介绍安装dnspython 模块常用方法介绍实践&#xff1a;DNS域名轮询业务监控 标题介绍 Dnspython 是 Python 的 DNS 工具包。它可用于查询、区域传输、动态更新、名称服务器测试和许多其他事情。 dnspython 模块提供了大量的 DNS 处理方法&#xff0c…

django集成pytest进行自动化单元测试实战

文章目录 一、引入pytest相关的包二、配置pytest1、将django的配置区分测试环境、开发环境和生产环境2、配置pytest 三、编写测试用例1、业务测试2、接口测试 四、进行测试 在Django项目中集成Pytest进行单元测试可以提高测试的灵活性和效率&#xff0c;相比于Django自带的测试…

PyQt5入门

Python中经常使用的GUI控件集有PyQt、Tkinter、wxPython、Kivy、PyGUI和Libavg。其中PyQt是Qt(c语言实现的)为Python专门提供的扩展 PyQt是一套Python的GUI开发框架,即图形用户界面开发框架.。而在Python中则使用PyQt这一工具包&#xff08;PyQt5、PyQt5-tools、PyQt5-stubs&am…

卡码网--数组篇(二分法)

系列文章目录 文章目录 系列文章目录前言数组二分查找 前言 详情看&#xff1a;https://programmercarl.com/ 总结知识点用于复习 数组 概念: 数组是存放在连续内存空间上的相同类型数据的集合。 数组可以方便的通过下标索引的方式获取到下标对应的数据。 特点&#xff1a;…

安卓基本布局(下)

TableLayout 常用属性描述collapseColumns设置需要被隐藏的列的列号。shrinkColumns设置允许被伸缩的列的列号。stretchColumns设置允许被拉伸的列的列号。 <TableLayout xmlns:android"http://schemas.android.com/apk/res/android"android:id"id/TableL…

状体管理-装饰器

State 自己的状态 注意:不是状态变量的所有更改都会引起刷新。只有可以被框架观察到的修改才会引起UI刷新。 1、boolean、string、number类型时&#xff0c;可以观察到数值的变化。 2、class或者Object时&#xff0c;可以观察 自身的赋值 的变化&#xff0c;第一层属性赋值的变…