JAVA游戏源码:仙剑|大学生练手项目
学习java朋友们,福利来了,今天小编给大家带来了一款仙剑源码。注意:此源码仅供学习使用!!
并不是实现完整的仙剑游戏,仅供java开发者学习的代码!!!
演示视频地址
https://githubs.xyz/show/211.mp4
代码采用原生java类库编写, 利用java swing作为界面框架,完整源码获取地址:
gitee.com/hadluo/java_game01.git
源码搭建和讲解
代码采用原生的java类库编写,界面用swing,启动main入口:
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() {
// 当窗口正要关闭的时候,会自动调用该方法
@Override
public 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键退出对话或退出游戏
回车键切换场景(切换位置在地图最右侧小路尽头)
结尾语
源码仅供学习使用。
JAVA游戏源码:仙剑|大学生练手项目的更多相关文章
- C/C++编程笔记:C语言写推箱子小游戏,大一学习C语言练手项目
C语言,作为大多数人的第一门编程语言,重要性不言而喻,很多编程习惯,逻辑方式在此时就已经形成了.这个是我在大一学习 C语言 后写的推箱子小游戏,自己的逻辑能力得到了提升,在这里同大家分享这个推箱子小游 ...
- 3D坦克大战游戏源码
3D坦克大战游戏源码,该游戏是基于xcode 4.3,ios sdk 5.1开发.在xcode4.3.3上完美无报错.兼容ios4.3-ios6.0 ,一款ios平台上难得的3D坦克大战游戏源码,有2 ...
- iOS版打地鼠游戏源码
打地鼠游戏源码,游戏是一款多关卡基于cocos2d的iPad打地鼠游戏源码,这也是一款高质量的打地鼠游戏源码,可以拥有逐步上升的关卡的设置,大家可以在关卡时设置一些商业化的模式来盈利的,非常完美的一款 ...
- html5 canvas简易版捕鱼达人游戏源码
插件描述:html5利用canvas写的一个js版本的捕鱼,有积分统计,鱼可以全方位移动,炮会跟着鼠标移动,第一次打开需要鼠标移出背景图,再移入的时候就可以控制炮的转动,因为是用的mouseover触 ...
- ios跑酷游戏源码完整版
今天在网上看到了一个很流行的ios游戏源码,酷跑游戏源码,个人下载感觉非常不错,运行起来非常不错的,大家可以研究一下吧,由于源码文件较大,没有上传,请大家见谅. 由于文件较大,没有上传了,大家可以到这 ...
- ios源码-ios游戏源码-ios源码下载
游戏源码 一款休闲类的音乐小游戏源码 该源码实现了一款休闲类的音乐小游戏源码,该游戏的源码很简单,而且游戏的玩法也很容易学会,只要我们点击视图中的grid,就可以 人气:2943运行环境:/Xco ...
- Java集合源码分析(四)Vector<E>
Vector<E>简介 Vector也是基于数组实现的,是一个动态数组,其容量能自动增长. Vector是JDK1.0引入了,它的很多实现方法都加入了同步语句,因此是线程安全的(其实也只是 ...
- Java集合源码分析(三)LinkedList
LinkedList简介 LinkedList是基于双向循环链表(从源码中可以很容易看出)实现的,除了可以当做链表来操作外,它还可以当做栈.队列和双端队列来使用. LinkedList同样是非线程安全 ...
- Java集合源码分析(二)ArrayList
ArrayList简介 ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长,类似于C语言中的动态申请内存,动态增长内存. ArrayList不是线程安全的,只能用在单线程环境下,多线 ...
- Java集合源码学习(一)集合框架概览
>>集合框架 Java集合框架包含了大部分Java开发中用到的数据结构,主要包括List列表.Set集合.Map映射.迭代器(Iterator.Enumeration).工具类(Array ...
随机推荐
- iPaaS集成系统,统一管理企业API
RestCloud iPaaS是一个集成平台,一个集成系统,也是一套可全面解决企业面临的以目前传统集成技术无法突破的难点的集成方案产品.RestCloud新一代的混合集成平台,以API为中心,基于微服 ...
- SciTech-POLIR-Statistics-重要的统计数据来源 与 数据建模
重要数据来源: "联合国"组织 ** "世界银行" **"世界卫生组织" 欧盟 德国 法国 意大利 瑞典 其他的成员国家 英国 美国(例FD ...
- OpenList挂载「蓝奏云」
写在最开始 01 账户挂载 存储->添加 选择蓝奏云 填写挂载路径 类型修改,信息填写,最后点击确认即可 挂载成功
- Gitlab 权限级别
Gitlab 权限级别: GitLab中的权限级别从低到高包括: Guest(访客) Reporter(报告者) Developer(开发者) Maintainer(维护者) Owner(所有者) 通 ...
- CrystalDiskMark使用说明
CrystalDiskMark使用说明 CrystalDiskMark(CDM)是一个用于评估硬盘和固态硬盘性能的流行工具.它是由 Crystal Dew World 公司开发的,是一款免费的磁盘性能 ...
- 浅析快速傅里叶变换(FFT)
哈喽大家好,我是 doooge,今天给大家来点想看的东西啊. \[\Huge \sf 浅析快速傅里叶变换(FFT) \] 1. 前置知识 工欲善其事,必先利其器,讲 FFT 之前我先将一些废话,如果你 ...
- SQLServer数据库日志清理
SQLServer数据库日志清理 1.右键在清除日志的数据库,如"TestDB",点击[新建查询(Q)]2.输入以下SQL语句,其中"TestDB"是数据库名称 ...
- linux常用命令详解(一)
1 find和locate命令 格式:find [目录] [options 参数] options参数有:-type f ,-type d ,-name ,!(非的意思),-o(或的意 ...
- C语言数据结构-数组栈
1.什么是栈 先进后出的一种结构 2.实现栈 (1)结构体描述栈结构,抽象栈的属性 (2)栈的最初状态:初始化栈 (3)入栈操作 (4)出栈操作 (5)获取栈顶元素 (6)判断栈是否为空 3.测试
- ZBrush和3D-Coat各自的优缺点是什么?
zbrush支持的模型面数高英文界面,3d coat支持的模型面数比zbrsh低有中文界 ZBrush优缺点 1.ZBrush优点: zbrush是高精度建模poser制作的首选.可搭配雕刻版使用 ...