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

news/2025/1/16 0:04:20/文章来源:https://www.cnblogs.com/java-bigdata/p/18341201

视频演示

 
 
 

源码搭建和讲解

启动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.hqwc.cn/news/777375.html

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

相关文章

【恶意代码】那些事

一、什么是恶意代码 恶意代码(Unwanted Code) 是指故意编制或设置的对网络或系统会产生威胁或潜在威胁的计算机代码。最常见的恶意代码有计算机病毒(简称病毒)、特洛伊木马 (简称木马)、计算机蠕虫 (简称蠕虫)、后门、逻辑炸弹等等。 二、恶意代码的分类 恶意代码分类 恶意代码…

重学 KMP 小记

重学 KMP 小记 前言 KMP 这个东西赛时用到的几率很小(虽然圣人说概率不小、也不是很大),但是如果一旦考字符串类的题又极可能考匹配问题。当时掌握得也是一知半解,所以现在来重学来了。 情境引入 现实中我们会遇到类似的问题:给你一篇报道,让你找一找这篇报道中有没有出现…

Manhattan Triangle

纪念一下代码打得太慢了导致比赛结束3分钟才做出来的E题 我的做法: 考虑确定枚举三角形的一个点。最开始尝试枚举\(x\)最大的点,但是后面发现不太好讨论,于是尝试枚举\(x\)在中间的点,此时发现由于曼哈顿是三角形不可能是钝角三角形,剩下两个点要么同时在中间点的上方,要…

JAVA游戏源码:天天酷跑

学习java朋友们,福利来了,今天小编给大家带来了一款天天酷跑源码。注意:此源码仅供学习使用!! 源码搭建和讲解 启动main入口://************************************************************************ // ************完整源码移步: gitee典康姆/hadluo/java_game01…

从零开始的JAVAday29~day35

后续语法if()语法 若满足()中的语法,则执行后面的语句。循环for(a;b;c)和while(c)语法 for(a;c;b)语法意思为在循环前进行a语句每次循环结束后进行b语法,若满足c语句则再次循环。whlie(c)循环若满足c条件则循环。

Unittest框架的介绍及使用

介绍 基本概念 ​ unittest是Python自带的一个单元测试框架, 它可以做单元测试, 也能用于编写和运行重复的测试工作。它给自动化测试用例开发和执行提供了丰富的断言方法, 判断测试用例是否通过, 并最终生成测试结果. 四大组件test case:就是我们的测试用例,unittest中提供了…

Docker常用容器安装

docker安装与卸载以及使用docker安装常用容器Docker安装 安装docker(centos) docker引擎安装官网地址:Install Docker Engine on CentOS | Docker Documentation 手动安装 # 卸载旧版本 sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ doc…

探究spring中如何如何从ioc中拿到对象,ioc中都存了什么

引言ApplicationContext ioc = new ClassPathXmlApplicationContext("beans.xml");Monster monster01 = (Monster)ioc.getBean("monster01");这是我们接触spring时接触的第一行代码,我们只是习惯性的通过ioc.getBean获取我们需要的对象,但是你有没有想过…

服务器性能分析软件「 WGCLOUD 」完整功能介绍

WGCLOUD是一款国产开源的服务器状态性能监测软件,免费高效,轻量实用,部署简单,上手操作容易,颜值在线,更好的是它具有极低的资源占用WGCLOUD官网下载地址:www.wgstart.com WGCLOUD可以支持哪些操作平台,如下: Linux:Debian,RedHat,CentOS,Ubuntu,Fedora,SUSE,麒…

Day13

逻辑运算符: &&都真为真 ||一真为真 !真为假假为真 短路运算:若两个运算中前一个为假,则不会执行后一个运算 二进制运算 A&B 相同为本,不同为0 A/B 相同为本,不同为1 A^B 相同为0 不同为1 ~B取反 位运算效率最高 << 左移*2 >>右…

Linux 防火墙系统

iptables 和 nftables iptables 是 Linux 中最常用的防火墙工具,它通过 Linux 内核中的 netfilter 模块提供的 Hook 来管理网络数据包的处理和转发。 nftables 是 iptables 的代替品,在 Debian 10、Ubuntu 22、CentOS 8 中已经由 iptables 切换到了 nftables。 iptables 的操…

[计算机网络]HTTPS

HTTP 与 HTTPS 有哪些区别? HTTP 是超文本传输协议,信息是明文传输,存在安全风险的问题。HTTPS 则解决 HTTP 不安全的缺陷,在 TCP 和 HTTP 网络层之间加入了 SSL/TLS 安全协议,使得报文能够加密传输。 HTTP 连接建立相对简单, TCP 三次握手之后便可进行 HTTP 的报文传输。…