第一个Java文件:
importjava.awt.Color;
importjava.awt.HeadlessException;
importjavax.swing.ImageIcon;
importjavax.swing.JFrame;
importjavax.swing.JLabel;
importjavax.swing.JPanel;
publicclassGameFrameextendsJFrame{
JPanelzhuobu=newJPanel();
//工人
JLabelworker=null;
//箱子
JLabelbox=null;
//目的地
JLabelgoal=null;
JLabel[]walls=null;
//设置图片大小
intimgSize=48;
publicvoidsetImgSize(intimgSize){
this.imgSize=imgSize;
}
publicGameFrame(Stringtitle)throwsHeadlessException{
super(title);
//构造方法中调用本类的其它方法
this.initContentPane();
}
/
设置内容面板
/
voidinitContentPane(){
zhuobu.setBackground(Color.red);
zhuobu.setLayout(null);
//调用父类的属性和方法
super.setContentPane(zhuobu);
}
/
把某个图片以组件的方式加入窗体
@paramimgPath图片路径
@paramxx
@paramyy
@paramwidth宽度
@paramheight高度
@return添加完的组件
/
voidaddComponent(inttag,StringimgPath,intx,inty){
ImageIconimg=newImageIcon(imgPath);
//创建JLabel并把ImageIcon通过构造方法传参传入
//把食物放到盘子里
JLabelcomponet=newJLabel(img);
//设置盘子在桌布上的位置和大小
componet.setBounds(x,y,imgSize,imgSize);
//把盘子放到桌布上
zhuobu.add(componet);
switch(tag){
case1:
box=componet;
break;
case2:
goal=componet;
break;
case3:
worker=componet;
break;
}
}
voidaddWall(StringimgPath,int[][]loactions){
ImageIconwallImg=newImageIcon(imgPath);
walls=newJLabel[66+loactions.length];
for(inti=0;i //创建没每一个围墙,他们使用的是同一个图片
walls[i]=newJLabel(wallImg);
}
for(inti=0;i //创建没每一个围墙,他们使用的是同一个图片
walls[i]=newJLabel(wallImg);
}
intindex=0;
/分别设置各个图片位置/
for(inti=0;i<14;i++){
//左边墙
walls[index].setBounds(0,iimgSize,imgSize,imgSize);
zhuobu.add(walls[index]);
index++;
//右边墙
walls[index].setBounds(20imgSize,iimgSize,imgSize,imgSize);
zhuobu.add(walls[index]);
index++;
}
for(inti=0;i<19;i++){
//上边墙
walls[index].setBounds((i+1)imgSize,0,imgSize,imgSize);
zhuobu.add(walls[index]);
index++;
//下边墙
walls[index].setBounds((i+1)imgSize,13imgSize,imgSize,imgSize);
zhuobu.add(walls[index]);
index++;
}
//添加中间障碍耦合解耦
for(inti=0;i
walls[index].setBounds(loactions[i][0]imgSize,loactions[i][1]imgSize,imgSize,imgSize);
zhuobu.add(walls[index]);
index++;
}
}
}
第二个Java文件:
publicclassRun{
publicstaticvoidmain(String[]args){
GameFramegameFrame=newGameFrame("推箱子…");
//设置大小
gameFrame.setBounds(100,50,2148+5,1448+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);
}
}
|
|