java推箱子游戏源代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一个Java文件:
import java.awt.Color;
import java.awt.HeadlessException;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class GameFrame extends JFrame {
JPanel zhuobu = new JPanel();
//工人
JLabel worker = null;
//箱子
JLabel box = null;
//目的地
JLabel goal = null;
JLabel[] walls = null;
//设置图片大小
int imgSize = 48;
public void setImgSize(int imgSize){
this.imgSize = imgSize;
}
public GameFrame(String title) throws HeadlessException { super(title);
//构造方法中调用本类的其它方法
this.initContentPane();
}
/**
* 设置内容面板
*/
void initContentPane() {
zhuobu.setBackground(Color.red);
zhuobu.setLayout(null);
//调用父类的属性和方法
super.setContentPane(zhuobu);
}
/**
* 把某个图片以组件的方式加入窗体
* @param imgPath 图片路径
* @param x x
* @param y y
* @param width 宽度
* @param height 高度
* @return 添加完的组件
*/
void addComponent(int tag, String imgPath, int x, int y) { ImageIcon img = new ImageIcon(imgPath);
//创建JLabel并把ImageIcon通过构造方法传参传入//把食物放到盘子里
JLabel componet = new JLabel(img);
//设置盘子在桌布上的位置和大小
componet.setBounds(x, y, imgSize, imgSize);
//把盘子放到桌布上
zhuobu.add(componet);
switch (tag) {
case 1:
box = componet;
break;
case 2:
goal = componet;
break;
case 3:
worker = componet;
break;
}
}
void addWall(String imgPath, int[][] loactions) {
ImageIcon wallImg = new ImageIcon(imgPath);
walls = new JLabel[66 + loactions.length];
for (int i = 0; i < walls.length; i++) {
//创建没每一个围墙,他们使用的是同一个图片
walls[i] = new JLabel(wallImg);
}
for (int i = 0; i < walls.length; i++) {
//创建没每一个围墙,他们使用的是同一个图片
walls[i] = new JLabel(wallImg);
}
int index = 0;
/*分别设置各个图片位置*/
for (int i = 0; i < 14; i++) {
//左边墙
walls[index].setBounds(0, i * imgSize, imgSize, imgSize);
zhuobu.add(walls[index]);
index++;
//右边墙
walls[index].setBounds(20 * imgSize, i * imgSize, imgSize, imgSize);
zhuobu.add(walls[index]);
index++;
}
for (int i = 0; i < 19; i++) {
//上边墙
walls[index].setBounds((i + 1) * imgSize, 0, imgSize, imgSize);
zhuobu.add(walls[index]);
index++;
//下边墙
walls[index].setBounds((i + 1) * imgSize, 13 * imgSize, imgSize, imgSize);
zhuobu.add(walls[index]);
index++;
}
//添加中间障碍耦合解耦
for (int i = 0; i < loactions.length; i++) {
walls[index].setBounds(loactions[i][0]* imgSize, loactions[i][1]* imgSize, imgSize, imgSize);
zhuobu.add(walls[index]);
index++;
}
}
}
第二个Java文件:
public class Run {
public static void main(String[] args) {
GameFrame gameFrame = new GameFrame("推箱子游戏…");
//设置大小
gameFrame.setBounds(100, 50, 21 * 48 + 5, 14 * 48 + 25);
//窗体大小不可变
gameFrame.setResizable(false);
gameFrame.setImgSize(48);