Java怎么实现经典游戏泡泡堂
发表于:2025-11-09 作者:千家信息网编辑
千家信息网最后更新 2025年11月09日,这篇文章主要介绍"Java怎么实现经典游戏泡泡堂",在日常操作中,相信很多人在Java怎么实现经典游戏泡泡堂问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Java怎么实
千家信息网最后更新 2025年11月09日Java怎么实现经典游戏泡泡堂
这篇文章主要介绍"Java怎么实现经典游戏泡泡堂",在日常操作中,相信很多人在Java怎么实现经典游戏泡泡堂问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Java怎么实现经典游戏泡泡堂"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
主要设计
设计游戏界面,用swing实现
绘制游戏启动界面、结束界面、地图、主角、道具
实现泡泡爆炸
实现双主角PK(积分制)
实现道具掉落和相应属性加成
实现游戏音效和背景音乐
功能截图
游戏启动界面:
游戏开始界面:
移动效果:
释放泡泡

泡泡爆炸效果:

代码实现
游戏启动类
public class GameStart { public static void main(String[] args) { //整个程序的入口 启动 StartFrame startFrame = new StartFrame(); startFrame.setVisible(true); }}核心监听类
public class GameListener implements KeyListener { private List> list; @Override public void keyTyped(KeyEvent e) { // TODO Auto-generated method stub } //按下 左37 右39 下40 上38 w87 a65 s83 d68 空格32 enter10 @Override public void keyPressed(KeyEvent e) { // TODO Auto-generated method stub //System.out.println("keypressed"+e.getKeyCode()); list = ElementManager.getInstance().getElementList("play"); Player oneplayer = (Player)list.get(0); Player twoPlayer = (Player)list.get(1); switch (e.getKeyCode()) { case 65: oneplayer.setLEFT(true);// oneplayer.setStop(false); break; case 87: oneplayer.setUP(true);// oneplayer.setStop(false); break; case 68: oneplayer.setRIGHT(true);// oneplayer.setStop(false); break; case 83: oneplayer.setDOWN(true);// oneplayer.setStop(false); break; case 32: oneplayer.setPk(true); break; case 37: twoPlayer.setLEFT(true); break; case 38: twoPlayer.setUP(true); break; case 39: twoPlayer.setRIGHT(true); break; case 40: twoPlayer.setDOWN(true); break; case 10: twoPlayer.setPk(true); break; } } //松开 @Override public void keyReleased(KeyEvent e) { // TODO Auto-generated method stub //System.out.println("keyreleased"+e.getKeyCode()); list = ElementManager.getInstance().getElementList("play"); Player oneplayer = (Player)list.get(0); Player twoPlayer = (Player)list.get(1); switch (e.getKeyCode()) { case 65:// if (oneplayer.isLEFT()) {// oneplayer.setStop(true);// } oneplayer.setLEFT(false); break; case 87:// if (oneplayer.isUP()) {// oneplayer.setStop(true);// } oneplayer.setUP(false); break; case 68:// if (oneplayer.isRIGHT()) {// oneplayer.setStop(true);// } oneplayer.setRIGHT(false); break; case 83:// if (oneplayer.isDOWN()) {// oneplayer.setStop(true);// } oneplayer.setDOWN(false); break; case 32: oneplayer.setPk(false); break; case 37: twoPlayer.setLEFT(false); break; case 38: twoPlayer.setUP(false); break; case 39: twoPlayer.setRIGHT(false); break; case 40: twoPlayer.setDOWN(false); break; case 10: twoPlayer.setPk(false); break; } }}核心线程类
public class GameThread extends Thread{ //计时数据 private static int time ; private boolean flag=true; //重构老项目 @Override public void run() { //这个循环控制游戏整体进度// while(flag){ // 死循环 状态变量进行控制 //1.加载地图 人物 loadElement(); //2.显示地图人物(流程 自动化(移动,碰撞)) time = 0; loadBGM(); runGame(); //3.结束地图 try { TimeUnit.MILLISECONDS.sleep(150); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); }// } } //控制进度 但是作为控制 请不要接触load 只能通过元素管理器访问元素 public void loadElement(){ ElementManager.getInstance().load(); } public void runGame(){ //这个循环控制每个关卡 地图中玩的状态 ElementManager manager = ElementManager.getInstance(); while(flag){ Map > map = manager.getMap(); Set set = map.keySet(); List temp = new ArrayList<>(); temp.addAll(set); //迭代器在遍历的过程中,迭代器中的元素不可以变化(增加或减少) for (int i=temp.size()-1; i>=0 ; i--) { List list = map.get(temp.get(i)); for (int j = 0; j < list.size(); j++) { SuperElement superElement = list.get(j); superElement.update(); if (!superElement.isVisible()) { manager.removeElementByPx(superElement.getY(), superElement.getX()); list.remove(j); } } } //使用一个独立的方法来进行判定 PK(); //游戏的流程控制 linkGame(); try { TimeUnit.MILLISECONDS.sleep(100); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } //死亡 通关状态 结束runGame方法 overGame(); time++; //一秒钟增加10 } } public void PK() { // TODO Auto-generated method stub List players = ElementManager.getInstance().getElementList("play"); List enemys = ElementManager.getInstance().getElementList("enemylist"); //进行比较 listPK(players, enemys); } public void listPK(List list1,List list2){ for (int i = 0; i < list1.size(); i++) { for (int j = 0; j < list2.size(); j++) { if (list1.get(i).gamePK(list2.get(j))) { list2.get(j).setVisible(false); } } } } public void overGame(){ Player player1 = (Player)(ElementManager.getInstance().getElementList("play").get(0)); Player player2 = (Player)(ElementManager.getInstance().getElementList("play").get(1)); if(player1.getNum()>=1000||player2.getNum()>=1000) { flag = false; new Thread() { public void run() { new audioPlay(Audio.OVER).player(); } }.start(); } } //游戏的流程控制 public void linkGame(){// Map< String , List > map =// ElementManager.getInstance().getMap();// List enemys = map.get("enemylist");// //一秒钟增加一个敌机// if (time == 0) {// enemys.add(Enemy.createEnemy(""));// } ElementManager.getInstance().linkGame(time); } public static int getTime() { return time; } public static void setTime(int time) { GameThread.time = time; } private void loadBGM() { new Thread() { public void run() { while(flag) { audioPlay play = new audioPlay(Audio.BGM); play.player(); if(!flag) { play.stop(); } } } }.start(); } //敌机的创建 } 到此,关于"Java怎么实现经典游戏泡泡堂"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
泡泡
控制
地图
界面
泡泡堂
经典
经典游戏
学习
元素
方法
流程
状态
循环
主角
人物
效果
敌机
更多
核心
进度
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
济南安卓软件开发公司哪家强
软件开发服务器教程
flutter建立数据库
一个服务器只有一个域名
方舟生存进化服务器能开战吗
软件开发进银行工作
胶州市网络安全
净网2019国家网络安全吗
企业网络安全宣传方案
电力行业数据库加密价格
重装了系统怎样安装数据库
聊城服务器运维管理系统商家
小学生网络安全绘画写字
安徽服务器专用机柜云服务器
烟台网络安全办公室
网络安全物联网新技术应用场景
连接Http服务器Sever1
杭州 网络安全工程师待遇
北京运维服务软件开发怎么样
法国网络安全抗议
以太网数据网络技术
中国 城市 数据库
网评网络安全关乎你我他
网络安全公司哪个产品好
国际陨石数据库图片查询
云服务器的内容会被看到吗
网络安全 胡建伟
ncre三级网络技术好考吗
塘沽游戏软件开发公司
1212服务器挂了的补偿