JAVA游戏源码:魔塔大学生练手项目java学习项目

news/2025/1/15 23:25:35/文章来源:https://www.cnblogs.com/java-bigdata/p/18341288

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

视频演示

 
 

源码搭建和讲解

启动main入口:

//************************************************************************
// ************完整源码移步: gitee典康姆/hadluo/java_game01.git *********
//************************************************************************
public class Main {public static void main(String[] args) {gamePanel = new MTGame();gamePanel.setPreferredSize(new Dimension(GAME_PIX_72 * 18, GAME_PIX_72 * 13));gamePanel.add(forecastLPane);gamePanel.add(jumpLPane);gamePanel.add(battleLPane);gamePanel.add(msgLPane);gamePanel.add(timeLabel);gameFrame.addKeyListener(new KeyListener() {@Overridepublic void keyTyped(KeyEvent e) {}@Overridepublic void keyPressed(KeyEvent e) {if (!MTGame.inConversation)switch (e.getKeyCode()) {case VK_DOWN:   // 键盘 ↓if (playerBean_1.getPosY() + 1 < 11 && playerBean_1.getPosY() + 1 >= 0) {playerBean_1.setToward(1);interaction(playerBean_1.getPosX(), playerBean_1.getPosY() + 1);MTGame.gameFrame.repaint();}break;case VK_RIGHT:  // 键盘 →if (playerBean_1.getPosX() + 1 < 11 && playerBean_1.getPosX() + 1 >= 0) {playerBean_1.setToward(2);interaction(playerBean_1.getPosX() + 1, playerBean_1.getPosY());MTGame.gameFrame.repaint();}break;case VK_UP:     // 键盘 ↑if (playerBean_1.getPosY() - 1 < 11 && playerBean_1.getPosY() - 1 >= 0) {playerBean_1.setToward(3);interaction(playerBean_1.getPosX(), playerBean_1.getPosY() - 1);MTGame.gameFrame.repaint();}break;case VK_LEFT:   // 键盘 ←if (playerBean_1.getPosX() - 1 < 11 && playerBean_1.getPosX() - 1 >= 0) {playerBean_1.setToward(0);interaction(playerBean_1.getPosX() - 1, playerBean_1.getPosY());gameFrame.repaint();}break;case VK_J:      // 键盘 Jif (ItemsBean.isHasJump) {displayJump();}break;case VK_L:      // 键盘 Lif (ItemsBean.isHasForecast) {displayForecast();}break;}else if (e.getKeyCode() == e.VK_L)//bug{inConversation = false;forecastLPane.removeAll();forecastLPane.setVisible(false);}}@Overridepublic void keyReleased(KeyEvent e) {}});gameFrame.setContentPane(gamePanel);gameFrame.setResizable(false);gameFrame.pack();gameFrame.setLocationRelativeTo(null);gameFrame.setVisible(true);gameFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);}
}

怪物对象

public class MonsterBean implements Serializable {@Deprecatedprivate int id;         // Deprecatedprivate int hp;         // 生命值private int attack;     // 攻击力private int defend;     // 防御力private int money;      // 金钱private int exp;        // 经验private String name;    // 怪物名public MonsterBean(int id, int hp, int attack, int defend, int money, int exp, String name) {this.id = id;this.hp = hp;this.attack = attack;this.defend = defend;this.money = money;this.exp = exp;this.name = name;}public int getHp() {return hp;}public int getAttack() {return attack;}public int getDefend() {return defend;}public int getMoney() {return money;}public int getExp() {return exp;}public String getName() {return name;}//    public void setHp(int hp) {
//        this.hp = hp;
//    }
//
//    public void setAttack(int attack) {
//        this.attack = attack;
//    }
//
//    public void setDefend(int defend) {
//        this.defend = defend;
//    }
//
//    public void setMoney(int money) {
//        this.money = money;
//    }
//
//    public void setExp(int exp) {
//        this.exp = exp;
//    }
//
//    public void setName(String name) {
//        this.name = name;
//    }
}

运行工具

代码是一个普通的java工程,我们直接导入到eclipse或者idea就可以运行了。

设计思想

  • 关于 static 关键字使用。游戏中全局数据使用 static 修饰。数据预设部分为方便也使用 static。
  • package 划分:bean 为实体类;util 为具体功能类;data 为数据源。
  • 地图数据:MapData(26层的初始地形,对应资源文件)
  • 怪物数据:MonsterData(33种怪物,id、名字、生命、攻击、防御、金钱、经验)
  • 图片数据:ImageData(统一获取资源文件,转为 static)
  • 对话数据:DialogData(全部对话数据)
  • 地图动画:通过 Timer 交替引用资源文件实现

操作方式

  • 方向键:人物移动;
  • 空格键:确认;
  • W S 键:商店、老人、商人、楼层跳跃事件的 光标上下移动;
  • J 键:获得道具【风之罗盘】后,打开 楼层跳跃 面板;
  • L 键:获得道具【圣光徽】后,打开 预测功能 面板。

结尾语

我是分享好物+教程+源码 的老罗,欢迎关注,更多精品源码!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/777392.html

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

相关文章

第五周进度报告

这周主要学习了java的一些基础知识,接下来的任务继续学习javaAPI部分的知识 鼠标监听机制 - MouseListener键盘监听机制 -KeyListener常用APIpackage me.Study;public class Test {public static void main(String[] args) {//获取到当前时间的毫秒值long start = System.curre…

dotnet hello world

参考资料 dotnet 命令参考 使用 dotnet test 和 xUnit 在 .NET 中对 C# 进行单元测试 Declaring InternalsVisibleTo in the csproj XUnit输出消息 创建控制台项目 # 创建项目目录 md DotnetStudy cd DotnetStudy# 创建解决方案 dotnet new sln # 创建控制台项目,-n: 名称,--us…

第五周学习mysql

本周学完了mysql基础部分的知识点 下周将学习进阶方面 本周浮躁了很多,目标都没定好,发现学这些mysql和之前学的代码思路有很多不一样的地方,上手很慢,学完事务之后才有一些整体的意思; 下周会定好目标加油努力学到视图,如果是只看视频不跟着敲代码的话,那就学完进阶篇,…

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

视频演示 源码搭建和讲解 启动main入口://************************************************************************ // ************完整源码移步: gitee典康姆/hadluo/java_game01.git ********* //*****************************************************************…

【恶意代码】那些事

一、什么是恶意代码 恶意代码(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…