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

结尾语

源码仅供学习使用。


精品源码屋
6 声望12 粉丝

提供海量精品源码,业务范围:游戏,网站,工具等。 也支持招商代理