首页 > 编程语言 >JAVA游戏源码:仙剑|大学生练手项目

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

时间:2025-01-18 20:16:53浏览次数:1  
标签:练手 jFrame JAVA int image return 源码 java public

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

并不是实现完整的仙剑游戏,仅供java开发者学习的代码!!!

9c921b2eb1cd4f878795034d44321a18 - 副本 (1) (1).jpg

演示视频地址

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键退出对话或退出游戏
回车键切换场景(切换位置在地图最右侧小路尽头)

结尾语

源码仅供学习使用。

标签:练手,jFrame,JAVA,int,image,return,源码,java,public
From: https://www.cnblogs.com/hadluo/p/18678761

相关文章

  • CF 265B.Roadside Trees (Simplified Edition)(Java实现)
    题目分析    松鼠的起点在第一棵树的0位置,它的行动轨迹为到达顶端,吃坚果,到另一棵树的同位置,到达顶端,吃坚果。思路分析    根据题目分析,我们需要有一个不断更新的起始位置,单次循环内的时间=到达顶端的距离+吃坚果+跳跃=顶端-起始+1+1代码        ......
  • CF 284B.Cows and Poker Game(Java实现)
    题目分析    奶牛也打扑克。一共有三种情况,简称AFI,并且只有自己为AI状态其余全部人为AF状态才可以亮手牌。思路分析    根据题目分析,针对三个不同状态分析情况:当且仅当有一个I时,唯有这个奶牛可以亮牌,如果I的个数大于1,一个也不能亮牌;当没有I时,判断A的个数,有......
  • Java游戏源码:天天酷跑+大学生学习源码
    学习java朋友们,福利来了,今天小编给大家带来了一款天天酷跑源码。注意:此源码仅供学习使用!!视频演示https://githubs.xyz/show/209.mp4源码搭建和讲解代码采用原生java类库编写,利用javaswing作为界面框架,完整源码获取地址:gitee.com/hadluo/java_game01.git启动main入口:i......
  • 有一个包含开始日期和结束日期的数组,获取最小的日期和最大的日期,用java实现
    packagecom.cfb.oa.m;importjava.time.LocalDate;importjava.util.ArrayList;importjava.util.List;classDateRange{LocalDatestartDate;LocalDateendDate;publicDateRange(LocalDatestartDate,LocalDateendDate){this.startDate......
  • Java游戏源码:象棋网络对战版+大学生练手项目
    学习java朋友们,福利来了,今天小编给大家带来了一款象棋网络对战版源码。你可以学习到socket编程知识,还有基础的游戏编程知识。视频演示https://githubs.xyz/show/207.mp4源码搭建和讲解 代码采用原生java类库编写,利用javaswing作为界面框架,完整源码获取地址:gitee.com/hadl......
  • JavaScript 中的 `findIndex` 方法
    ......
  • JAVA-Exploit编写(1)--HttpURLConnection库使用
    目录1.HttpURLConnection简介2.创建HttpURLConnection请求.2.1HttpURLConnection的属性2.2设置相关的请求属性2.3 设置请求头参数3使用GET方法进行请求4.POST方法进行请求4.1常规使用4.2单独调用 5. 设置代理5.1 直接设置代理5.2 配置Proxy代理类 6.......
  • JAVA-Exploit编写(2)--HttpClient库使用
    目录1.HttpClient简介1.1ApacheHttpClient特性1.2 ApacheHttpClient使用流程2.依赖导入3.HttpClient属性4.GET方式请求4.1 test2.php4.2不携带参数请求 4.3 携带参数提交4.4 支持URIBuilder对象的使用 5.POST请求5.1test3.php5.2 单个参数提交......
  • 有一个包含开始时间和结束时间的数组,要求日期从早到晚有连贯性,不能出现重叠,用JAVA判断
    packagecom.cfb.oa.m;importjava.time.LocalDate;importjava.util.ArrayList;importjava.util.List;classDateRange{LocalDatestart;LocalDateend;publicDateRange(LocalDatestart,LocalDateend){this.start=start;th......
  • 图书馆管理系统javaweb(含数据库脚本)
    图书馆管理系统javaweb(含数据库脚本),tomcat7eclipsejdk1.8包含数据库文件列表BookLibrarySystem-master/.classpath , 9020BookLibrarySystem-master/.project , 1639BookLibrarySystem-master/.settings/.jsdtscope , 499BookLibrarySystem-master/.settings/org.ec......