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

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

时间:2024-08-03 22:17:15浏览次数:11  
标签:练手 jFrame JAVA int image private 源码 return public

视频演示

     

源码搭建和讲解

启动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() {
            // 当窗口正要关闭的时候,会自动调用该方法
            @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,private,源码,return,public
From: https://www.cnblogs.com/java-bigdata/p/18341201

相关文章

  • 基于Java的蛋糕甜品管理系统设计与实现(源码+lw+部署文档+讲解等)
    文章目录前言详细视频演示项目运行截图技术框架后端采用SpringBoot框架前端框架Vue可行性分析系统测试系统测试的目的系统功能测试数据库表设计代码参考数据库脚本为什么选择我?获取源码前言......
  • Java学习第五周
    packagecom.sxt;publicclassTestSwitch01{publicstaticvoidmain(String[]args){intgrade=(int)(Math.random()*4)+1;//大学的年级switch(grade){case1:System.out.println("大一");break;case2:System.out.println("大二");break;case3:......
  • 日撸Java三百行(day12:顺序表二)
    目录一、关于昨天的补充1.final关键字2.toString()方法二、今日代码实现1.顺序表的查找操作2.顺序表的插入操作3.顺序表的删除操作4.数据测试总结一、关于昨天的补充1.final关键字publicstaticfinalintMAX_LENGTH=10;在昨天的这行代码中,用到了final关键字......
  • JAVA游戏源码:天天酷跑
    学习java朋友们,福利来了,今天小编给大家带来了一款天天酷跑源码。注意:此源码仅供学习使用!!   源码搭建和讲解启动main入口://************************************************************************//************完整源码移步:gitee典康姆/hadluo/java_game01.......
  • 学习Java第五周
    本周学习一、类的继承1.继承特点修饰符classSubClassextendsSuperClass{//类定义部分}表明继承了SuperClass类。注:子类只能从被扩展的父类获得成员变量、方法和内部类(包括内部接口、枚举),不能获得构造器和初始化块。2.Java类只能有一个直接父类,实际上,Java类可以有......
  • Java【案例2-2】 小明都可以买什么
    案例介绍:编写一个智能购物计算小程序,在一家商店有书本、铅笔、橡皮、可乐、零食五种商品,商品价格如下表所示。商品名称价格书本12元铅笔1元橡皮2元可乐3元零食5元假如你带了20元,且必须购买一本书,剩余的钱还可以购买哪种商品,可以购买几件,购买完后又能......
  • 从零开始的JAVAday29~day35
    后续语法if()语法若满足()中的语法,则执行后面的语句。循环for(a;b;c)和while(c)语法for(a;c;b)语法意思为在循环前进行a语句每次循环结束后进行b语法,若满足c语句则再次循环。whlie(c)循环若满足c条件则循环。......
  • (Javaweb)Ajax,Axios,Vue
    目录一.Ajax 二.Axios 三.前端工程化四.接口文档的管理平台YAPI五.Vue项目六.Vue项目开发流程一.Ajax 1.通过Ajax从服务器端获取数据Ajax---JavaScript(网页行为)+XML(标记语言--用来存储数据) 客户端--浏览器 服务端在处理逻辑的时候,客户端处于等待状态等......
  • Java毕业设计基于微信小程序的在线学习和测试系统 Uniapp
    文末获取资源,收藏关注不迷路文章目录项目介绍技术介绍项目界面关键代码目录项目介绍随着信息时代的快速发展,互联网的优势和普及,人们生活水平的不断提高,工作时间的繁忙,使得在线学习平台的开发成为必需。在线学习平台主要是借助计算机,通过对在线学习平台管理所需的信......
  • 学习Java的第五周
    第五周的学习记录来啦!!先说个好消息,历时五周,我终于把B站黑马程序员的Java基础学完了,本周从数组的学习和练习开始,到方法的学习和练习结束,其中数组的两种初始化、地址值、元素的访问和存储、以及最重要的数组的遍历,难度都属实不小,但最难理解的还属方法中的最后一个练习题--拷贝数组,......