以下是代码:

Run.java

public class Run {public static void main(String[] args) {// TODO Auto-generated method stubFrame frame = new Frame();}}

Frame.java

import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;import javax.swing.JFrame;
public class Frame extends JFrame implements KeyListener {//  implements实现KeyListener 接口GamePanel gp;public Frame(){this.setSize(500,500);//窗口-尺寸this.setTitle("推箱子");//窗口-标题this.setDefaultCloseOperation(EXIT_ON_CLOSE);gp= new GamePanel();this.add(gp);//增加画板this.addKeyListener(this);// 监听窗口事件 this.setVisible(true);//窗口-是否可视             }@Overridepublic void keyPressed(KeyEvent arg0) {// TODO Auto-generated method stubgp.keyD(arg0.getKeyCode());}@Overridepublic void keyReleased(KeyEvent arg0) {// TODO Auto-generated method stub}@Overridepublic void keyTyped(KeyEvent arg0) {// TODO Auto-generated method stub}
}

PointManager .java

import java.awt.Graphics;public class PointManager {GPoint[] dians =new GPoint[100];int number;public PointManager(int[][] mapData){number=0;for(int i=0;i<10;i++){for(int j=0;j<10;j++){if(mapData[i][j]==4){createOnePoint(j*50,i*50);}}}}public void render(Graphics g){for(int i=0;i<number;i++){dians[i].render(g);}
//      }public void createOnePoint(int x,int y){dians[number]= new GPoint(x,y);number++;}public boolean checkPoint(int x,int y){for(int i=0;i<number;i++){if(dians[i].x==x && dians[i].y==y){return true;}}return false;}}

GPoint .java

import java.awt.Graphics;
import java.awt.Image;public class GPoint {Image image;int x,y;public GPoint(int x_,int y_){x=x_;y=y_;image=GameTools.getimage("point.png");}public void render(Graphics g){g.drawImage(image, x, y, null);}
}

GameTools .java

import java.awt.Image;import javax.swing.ImageIcon;public class GameTools {public static Image getimage(String name){ImageIcon icon = new ImageIcon(name);return icon.getImage();}
}

GamePanel.java

import java.awt.Graphics;import javax.swing.JPanel;
public class GamePanel extends JPanel {Player player;Map map;BoxManager bm;PointManager pm;public void create(){player = new Player(200,200);map = new Map();bm = new BoxManager(map.mapData);pm = new PointManager(map.mapData);}public GamePanel(){create();}public void paint(Graphics g){map.render(g);pm.render(g);player.render(g);bm.render(g);}public void keyD(int key){switch(key){case 37://左player.move(-50, 0,map,bm,pm);break;case 38://上player.move(0, -50,map,bm,pm);break;case 39://右player.move(+50, 0,map,bm,pm);break;case 40://下player.move(0, +50,map,bm,pm);break;default:}this.repaint();}}

BoxManager .java

import java.awt.Graphics;public class BoxManager {Box[] boxes =new Box[100];int number;public BoxManager(int[][] mapData){number=0;for(int i=0;i<10;i++){for(int j=0;j<10;j++){if(mapData[i][j]==3){createOneBox(j*50,i*50);}}}}public void render(Graphics g){for(int i=0;i<number;i++){boxes[i].render(g);}}public void createOneBox(int x,int y){boxes[number]= new Box(x,y);number++;}public Box check(int x,int y){for(int i=0;i<number;i++){if(boxes[i].x==x && boxes[i].y==y){return boxes[i];}}return null;}}

Box .java

import java.awt.Graphics;
import java.awt.Image;public class Box {Image image;int x,y;boolean temp_success;public Box(int x_,int y_){x=x_;y=y_;image=GameTools.getimage("box.png");}public void render(Graphics g){if(temp_success==false){g.drawImage(image, x, y, null);}else{g.drawImage(GameTools.getimage("box2.png"), x, y, null);}}public boolean move(int dx,int dy,BoxManager bm,PointManager pm){if(bm.check(dx+x, dy+y)!=null){return false;}x+=dx;y+=dy;temp_success=pm.checkPoint(x, y);return true;}
}

Player .java

import java.awt.Graphics;
import java.awt.Image;public class Player {Image image;int x,y;int temp_runNum;public Player(int x_,int y_){x=x_;y=y_;image=GameTools.getimage("player.png");}public void render(Graphics g){g.drawImage(image, x, y, null);g.drawString("已走 "+temp_runNum+" 步", 200, 30);}public void move(int dx,int dy,Map map,BoxManager bm,PointManager pm){if(map.HitCheck(dx+x, dy+y)==true){return;}if(bm.check(dx+x, dy+y)!=null){if(map.HitCheck((dx*2)+x,(dy*2)+y)==true){return;}if(bm.check(dx+x, dy+y).move(dx,dy,bm,pm)==false){return;}}x+=dx;y+=dy;temp_runNum++;}
}

Map.java

import java.awt.Graphics;
import java.awt.Image;public class Map {Image[] image;int[][] mapData;public Map(){image = new Image[3];mapData = new int[][]{{2,2,2,2,2,2,2,2,2,2},{2,0,0,0,0,0,0,0,0,2},{2,0,1,1,1,1,1,1,0,2},{2,0,1,1,3,1,3,1,0,2},{2,0,1,4,1,1,1,1,0,2},{2,0,1,1,1,1,1,1,0,2},{2,0,1,4,1,1,1,1,0,2},{2,0,1,1,1,1,1,1,0,2},{2,0,0,0,0,0,0,0,0,2},{2,2,2,2,2,2,2,2,2,2}};for(int i=0;i<3;i++){image[i]=GameTools.getimage("map"+i+".png");}}public void render(Graphics g){for(int i=0;i<10;i++){for(int j=0;j<10;j++){switch(mapData[i][j]){case 2:g.drawImage(image[2],j*50, i*50, null);break;case 0:g.drawImage(image[0],j*50, i*50, null);break;default:g.drawImage(image[1],j*50, i*50, null);}}}}public boolean HitCheck(int x,int y){if(mapData[y/50][x/50]==0){return true;}return false;}
}

图片和源代码:https://download.csdn.net/download/qq_20198003/11752269

JAVA简易推箱子小游戏制作相关推荐

  1. 【Java】推箱子小游戏(带背景音乐)完整代码

    Java实现推箱子小游戏 一.整体框架 二.游戏效果图 三.推箱子四大类 1. GameFrame类 2. Map类 3. MapFactory类 4. Sound类 四.游戏分析 1.游戏操作 2. ...

  2. 【基于Swing+Java的推箱子小游戏的设计与实现(效果+源代码+论文+答辩PPT)墙裂推荐!!超级好玩儿!带背景音乐~~】

    快速阅读目录 (一)效果 (1)游戏静态截图 (2)动态游戏示例 (二)源代码示例 (三)说明 (一)效果 (可以通过上下左右键来控制箱子的移动) (1)游戏静态截图 初始化游戏界面: 选项: < ...

  3. C语言实现推箱子小游戏

    一.设计目的 用简单的C语言知识制作的推箱子游戏,通过上下左右键将所有箱子移动到目标位置. 2.让我们更好地了解和巩固C语言知识,并实际运用,同时运用一些不太常见的知识点. 二.功能描述 1.模块功能 ...

  4. c#推箱子小游戏代码_推箱子小游戏V1.0制作

    小游戏实践 推箱子简易版 大家好,我是努力学习争取成为优秀的Game Producer的路人猿,今天来一起做一个推箱子的简易版本V1.0!下面跟我一起做吧~ 我们用到的软件如下: 编辑类 Visual ...

  5. PLC也能制作小游戏----Codesys编写推箱子小游戏

    1.序言 前文已介绍,Codesys编程软件拥有的各种编译方式,以及强大的可视化功能,完全可以实现类似的小游戏程序编写,让疲惫的工控人员在调机的空闲之余可以休闲下,本文编写另一个小游戏,也是十几年前的 ...

  6. 基于Java Swing JFream 组件的趣味推箱子小游戏

    一 需求分析 设计一个经典的推箱子小游戏,在窗体里有墙,箱子,胜利的标志,和工人,用户可以通过键盘上的"上"."下"."左"."右 ...

  7. [源码和文档分享]基于Java Swing JFream 组件的趣味推箱子小游戏

    一 需求分析 设计一个经典的推箱子小游戏,在窗体里有墙,箱子,胜利的标志,和工人,用户可以通过键盘上的"上"."下"."左"."右 ...

  8. java实现二维数组推箱子小游戏

    推箱子小游戏 import java.util.Scanner;public class 推箱子 {public static void main(String[] args) {int x =3, ...

  9. [新手必备]Unity推箱子小游戏C#代码详解(第一篇-代码部分)

    完整项目请参考博客:https://blog.csdn.net/qq_41676090/article/details/96300302 本文为推箱子小游戏C#代码详解第一篇的代码部分,主要讲解 Sy ...

最新文章

  1. CPU执行指令过程与python
  2. 集合框架源码分析——抽象类
  3. 在Linux系统安装Nodejs
  4. HNCU 1328: 算法2-18~2-19:双向循环链表
  5. 构造方法注入和设值注入有什么区别?
  6. C#的Timer解析(转)
  7. SocialFish-kali下社会工程学钓鱼工具
  8. 关于通过DDMS向Android系统的模拟器的sdcard中导入mp3文件的问题
  9. [C++] 转义序列
  10. 在 C# 中如何获取存储过程的返回值 ?
  11. Python笔记-安装python虚拟环境及配置opencv及通过opencv识别颜色
  12. CSS+jQuery实现滑动幻灯片实例详解
  13. 金属零件图像数据集_如何使用包装零件来开发易于维护的数据仓库解决方案
  14. 【自我解析】2020华为杯数学建模比赛A题
  15. python大写字母怎么读_python中字母大小写的转换,和一些字典的常规操作
  16. 国防科大 计算机原理考研试题,国防科技大学考研2003年计算机原理试题
  17. matlab求hurst,请问如何用MATLAB计算大盘的HURST
  18. cocos creator Android 接入Google登陆sdk
  19. SAP ABAP 小数转分数\约分
  20. 物理光学2 麦克斯韦方程组与电磁波

热门文章

  1. 求1到100之间的奇数之和、偶数之积
  2. 适用于产研团队协作工具有哪些?盘点6大类协同办公软件
  3. 微信X5调试,可以在谷歌浏览器调试
  4. 问卷网自动填写提交调查问卷
  5. 辰视智能受邀参加2021成都国际工业博览会
  6. 网安之php开发第十五天
  7. 土圭垚㙓数学课(一)万向锁(Gimbal Lock)
  8. cmstop架构分析
  9. Windows10输入法繁体简体切换
  10. 阿里云服务器配置如何选