A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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 = new JLabel(wallImg);
}
for (int i = 0; i < walls.length; i++) {
//创建没每一个围墙,他们使用的是同一个图片
walls = 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[0]* imgSize, loactions[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);
gameFrame.addComponent(3, "workerUp.png", 400, 100);
gameFrame.addComponent(1, "box.png", 160, 60);
gameFrame.addComponent(2, "goal.png", 80, 520);
int[][] wallLocations ={
{4, 5},{5, 5},{6, 5},{7, 5},
{8, 5},{9, 5},{10, 5},{6, 8},
{7, 8},
{8, 8},
{9, 8},
{10, 8},
{11, 5}
};
gameFrame.addWall("wall.png", wallLocations);
gameFrame.setVisible(true);
}
}

3 个回复

倒序浏览
好吧。。。。
回复 使用道具 举报
感谢分享。。。。。。。。。。。。
回复 使用道具 举报
不错奥。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马