JAVA实现的CrazyArcade泡泡堂游戏
作者:JiangJian1998 发布时间:2022-12-25 11:55:23
目录
项目地址
示例图片
项目结构
机器人
平滑碰撞
其它特性
使用
打包文件
项目文件
声明
主要代码
项目地址
https://github.com/SCNU-A225/CrazyArcade
示例图片
项目结构
frame:包含如开始、游戏中、结束的JFrame
main:包含程序入口和其它游戏控制
model:
model.loader:包含资源加载器用于读取配置文件等信息,使用了单例设计模式
model.manager:包含元素管理器、工厂等,用于控制游戏各元素
model.vo:各种实体类,包括玩家、NPC、 * 、方块等等
pro:配置文件目录,包含人物、道具、地图、方块、游戏设置等配置文件
thread:配合游戏一起执行的各种线程,如音乐、键盘监听、游戏控制等
utiil:工具包
机器人
为了尽量复原泡泡堂游戏,我们初步实现了机器人功能。该机器人可以判断障碍物释放 * 、规避 * 、攻击玩家。目前该机器人仍存在一些小问题,比如某些情况会卡住不动
平滑碰撞
人物在拐角处移动的时候经常不是刚好对齐的状态,程序会判定玩家碰撞了障碍物所以导致玩家无法拐弯。所以我们在处理这种情况的时候,会让玩家进行平滑的移动使得玩家看上去是滑进去的,增强玩家游戏体验
其它特性
音乐
使用配置文件扩展游戏
道具
单/双人模式
使用
打包文件
如果您仅是想试玩该泡泡堂游戏,那么可以选择以下方式获得打包文件夹,并执行其中的CrazyArcade.jar文件
注意:无论您使用哪种方式,在运行程序之前请确保您安装了JRE环境
下载最新版文件,并解压缩
克隆或下载该项目,打开RELEASE->DIST文件夹
项目文件
如果您是想获取该项目源代码进行参考、学习或者修改,可以按以下步骤进行
使用git克隆或直接下载该项目
使用Eclipse等导入该Java项目
由于编译使用的Java版本可能不一致,如果提示错误请根据您电脑的环境修改项目配置
编译并运行GameStart.java游戏入口文件
声明
该项目是练习项目,没有参与任何商业行为。
主要代码
游戏启动入口
package com.a225.main;
import java.io.IOException;
import com.a225.frame.GameFrame;
import com.a225.model.loader.ElementLoader;
import com.a225.thread.GameMusicPlayer;
/**
* 游戏启动入口
* @ClassName: GameStart
* @Description:
* @author: WeiXiao
* @CreateDate: 2019年4月8日 下午4:17:37
*/
public class GameStart {
private static GameFrame gameFrame;
//游戏启动入口
public static void main(String[] args) {
// 资源加载
try {
ElementLoader.getElementLoader().readGamePro();
ElementLoader.getElementLoader().readImagePro();
ElementLoader.getElementLoader().readCharactorsPro();
ElementLoader.getElementLoader().readBubblePro();
ElementLoader.getElementLoader().readSquarePro();
} catch (IOException e) {
System.out.println("资源加载失败");
e.printStackTrace();
}
//初始化
gameFrame = new GameFrame();
//界面显示
gameFrame.setVisible(true);
//音乐播放
GameMusicPlayer musicPlayer = new GameMusicPlayer();
musicPlayer.start();
}
/**
* 界面切换
* @param panelName 界面名称
*/
public static void changeJPanel(String panelName){
if(panelName == "game") {
GameController.setGameRunning(true);
gameFrame.addListener();
} else {
GameController.setGameRunning(false);
gameFrame.removeListener();
}
gameFrame.changePanel(panelName);
//强制刷新,否则监听无效
gameFrame.setVisible(false);
gameFrame.setVisible(true);
}
public static void startNewGame() {
GameController.setGameRunning(true);
gameFrame.startGame();
changeJPanel("game");
}
}
游戏控制信息类
package com.a225.main;
/**
* 游戏控制信息类
* @ClassName: GameController
* @Description:
* @author: WeiXiao
* @CreateDate: 2019年4月12日 上午9:13:13
*/
public class GameController {
private static boolean gameRunning = false;
private static boolean twoPlayer;
private static int npcNum;
public static boolean isGameRunning() {
return gameRunning;
}
public static void setGameRunning(boolean gameRunning) {
GameController.gameRunning = gameRunning;
}
public static boolean isTwoPlayer() {
return twoPlayer;
}
public static void setTwoPlayer(boolean twoPlayer) {
GameController.twoPlayer = twoPlayer;
}
public static int getNpcNum() {
return npcNum;
}
public static void setNpcNum(int npcNum) {
GameController.npcNum = npcNum;
}
}
代码过多,不便全部放出,获取完整项目,前往https://github.com/SCNU-A225/CrazyArcade
来源:https://github.com/SCNU-A225/CrazyArcade


猜你喜欢
- 背景项目中要实现横向列表的无限循环滚动,自然而然想到了RecyclerView,但我们常用的RecyclerView是不支持无限循环滚动的,
- 本文详细总结了Android编程开发之性能优化技巧。分享给大家供大家参考,具体如下:1.http用gzip压缩,设置连接超时时间和响应超时时
- spring Boot的学习持续进行中。前面两篇博客我们介绍了如何使用Spring Boot容器搭建Web项目以及怎样为我们的Project
- 一、背景说明由于以前在项目中一直使用sqlmap.xml进行mybatis语句的编写和实现,其xml实现动态更新和查询较为方便,而目前由于技
- 前言每种语言都会有字符串的操作,因为字符串是我们平常开发使用频率最高的一种类型。今天我们来聊一下Java的字符串操作及在某些具体方法中与C#
- preHandle: 预先处理,在目标的controller方法执行之前,进行处理postHandle: 在目标的con
- 老风格,废话不多说了,直接给大家贴java代码了。代码如下:package com.zzw.getPhoneInfos;import and
- 下面本文将针对以上几点问题进行描述讨论,我们就以“中文”两个字为例来说明,查找相关资料可知“中文”的GB2312编码是“d6d0 cec4”
- 大家都知道使用java反射可以在运行时动态改变对象的行为,甚至是private final的成员变量,但并不是所有情况下,都可以修改成员变量
- 不记得从哪找的了,修改了部分代码,修复在Android平台下使用时,时区时间格式异常的问题。package cn.aikongmeng.de
- public bool isUtf8(byte[] rawText)
- 背景在工作中,遇到这样的场景:有个es索引构建服务,需要从各个业务服务获取索引的信息,从而构建索引,业务服务都实现同一个接口&mda
- 在Java里面,可以用复制语句”A=B”给基本类型的数
- 最大堆最大堆的特点是父元素比子元素大,并且是一棵完全二叉树。data[1]开始存,data[0]空着不用。也可以把data[0]当成size
- logback自定义指定日志文件存储目录1、正常使用定义一个logback.xml配置文件即可:<?xml version="
- 国家气象局提供了三种数据的形式网址在:http://www.weather.com.cn/data/sk/101010100.htmlhtt
- 前言空间分配要点有:一是空间分配的连续性;二是动态内存申请;三是防止程序执行中出现异常错误。提示:开始讲解了嗷~后续会根据精力持续更新嗷!!
- 重写子pagerview的dispatchTouchEvent方法,在返回前添加一句getParent().requestDisallowI
- 要让项目实现 ssl 免密登录,首先需要开启 https 。所以先从 Spring Boot 如何开启 https 说起。创建服务端证书为了
- 前言不知道你是否参加过拼多多上邀请微信好友砍价功能,这个功能实现首先需要考虑的就是获取微信用户的信息。获取用户信息就是获取公众号下微信用户的