package cn.hjh.txz.ui;
import javax.swing.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
public class MainFrame extends JFrame implements KeyListener{
int x,y; //people图片坐标
JLabel labPeople; //放people图片的JLabel
int [][] map={ //1代表障碍 2代表箱子 3代表目标地点
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,2,0,0,0,0,0,1,0,0,3,1},
{1,0,0,0,0,2,0,0,0,0,1,1,1,0,3,1},
{1,0,0,0,0,2,0,0,0,0,0,1,0,0,3,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}
};
JLabel [][] caseArray=new JLabel[12][16]; //表示箱子位置的JLabel数组,用于区分坐标不同的箱子,方便对其操作
int caseNumber=3;
int finishNumber;
JLabel j=new JLabel("游戏进行中");
JButton b1=new JButton("简单");
JButton b2=new JButton("中等");
JButton b3=new JButton("困难");
public MainFrame(){
caseInit();
obstacleInit();
peopleInit();
cageInit();
myJFrameInit(); //设置窗体
}
private void myJFrameInit(){
setLayout(null);
setTitle("推箱子游戏");
setLocation(400,200);
setSize(1050,800);
setVisible(true);
}
private void addMycomponent(){
b1.setBounds(900,0,100,100);
b2.setBounds(900,100,100,100);
b3.setBounds(900,200,100,100);
add(b1);
add(b2);
add(b3);
j.setBounds(900,400,200,200);
add(j);
}
private void peopleInit(){
x=3;
y=3;
Icon i = new ImageIcon("people.jpg");
labPeople = new JLabel(i);
labPeople.setBounds(25+x*50,25+y*50,100,100);
add(labPeople);
addKeyListener(this);
}
private void obstacleInit(){
Icon io=new ImageIcon("notEnter.jpg");
for(int i=0;i<map.length;i++){
for(int j=0;j<map[i].length;j++){
if(map[i][j]==1){
JLabel labObstacle=new JLabel(io);
labObstacle.setBounds(25+50*j,25+50*i,100,100);
this.add(labObstacle);
}
}
}
}
public void cageInit(){
Icon icage=new ImageIcon("longzi.jpg");
for(int i=0;i<map.length;i++){
for(int j=0;j<map[i].length;j++){
if(map[i][j]==3){
JLabel labCage=new JLabel(icage);
labCage.setBounds(25+50*j,25+50*i,100,100);
this.add(labCage);
}
}
}
}
public void caseInit(){
Icon ic=new ImageIcon(("xiangzi.jpg"));
for(int i=0;i<map.length;i++){
for(int j=0;j<map[i].length;j++){
if(map[i][j]==2){
JLabel labCase=new JLabel(ic);
caseArray[i][j]=labCase;
labCase.setBounds(25+50*j,25+50*i,100,100);
this.add(labCase);
}
}
}
}
public void keyReleased(KeyEvent e){
if(finishNumber==3){
j.setText("恭喜你已经过关");
}
int key=e.getKeyCode();
if(key==KeyEvent.VK_RIGHT){
if(map[y][x+1]==1){
return;
}
if(map[y][x+1]==2){
if(map[y][x+2]==1 | map[y][x+2]==2 | map[y][x+2]==4){
return;
}
else if(map[y][x+2]==3){
map[y][x+2]=4;
map[y][x+1]=0;
finishNumber++;
caseArray[y][x+2]=caseArray[y][x+1];
caseArray[y][x+2].setLocation(25+50*x+100,25+50*y);
caseArray[y][x+1]=null;
x++;
labPeople.setLocation((int)labPeople.getLocation().getX()+50,(int)labPeople.getLocation().getY());
return;
}
else{
map[y][x+2]=2;
map[y][x+1]=0;
caseArray[y][x+2]=caseArray[y][x+1];
caseArray[y][x+2].setLocation(25+50*x+100,25+50*y);
caseArray[y][x+1]=null;
x++;
labPeople.setLocation((int)labPeople.getLocation().getX()+50,(int)labPeople.getLocation().getY());
return;
}
}
if(map[y][x+1]==4){
if(map[y][x+2]==1 | map[y][x+2]==2 | map[y][x+2]==4){
return;
}
else if(map[y][x+2]==3){
map[y][x+2]=4;
map[y][x+1]=3;
caseArray[y][x+2]=caseArray[y][x+1];
caseArray[y][x+2].setLocation(25+50*x+100,25+50*y);
caseArray[y][x+1]=null;
x++;
labPeople.setLocation((int)labPeople.getLocation().getX()+50,(int)labPeople.getLocation().getY());
return;
}
else{
map[y][x+2]=2;
map[y][x+1]=3;
finishNumber--;
caseArray[y][x+2]=caseArray[y][x+1];
caseArray[y][x+2].setLocation(25+50*x+100,25+50*y);
caseArray[y][x+1]=null;
x++;
labPeople.setLocation((int)labPeople.getLocation().getX()+50,(int)labPeople.getLocation().getY());
return;
}
}
x++;
labPeople.setLocation((int)labPeople.getLocation().getX()+50,(int)labPeople.getLocation().getY());
}
else if(key==KeyEvent.VK_LEFT){
if(map[y][x-1]==1){
return;
}
if(map[y][x-1]==2){
if(map[y][x-2]==1 | map[y][x-2]==2){
return;
}
else if(map[y][x-2]==3){
map[y][x-2]=4;
map[y][x-1]=0;
finishNumber++;
caseArray[y][x-2]=caseArray[y][x-1];
caseArray[y][x-2].setLocation(25+50*x-100,25+50*y);
caseArray[y][x-1]=null;
x--;
labPeople.setLocation((int)labPeople.getLocation().getX()-50,(int)labPeople.getLocation().getY());
return;
}
else{
map[y][x-2]=2;
map[y][x-1]=0;
caseArray[y][x-2]=caseArray[y][x-1];
caseArray[y][x-2].setLocation(25+50*x-100,25+50*y);
caseArray[y][x-1]=null;
x--;
labPeople.setLocation((int)labPeople.getLocation().getX()-50,(int)labPeople.getLocation().getY());
return;
}
}
if(map[y][x-1]==4){
if(map[y][x-2]==1 | map[y][x-2]==2 | map[y][x-2]==4){
return;
}
else if(map[y][x-2]==3){
map[y][x-2]=4;
map[y][x-1]=3;
caseArray[y][x-2]=caseArray[y][x-1];
caseArray[y][x-2].setLocation(25+50*x-100,25+50*y);
caseArray[y][x+1]=null;
x--;
labPeople.setLocation((int)labPeople.getLocation().getX()-50,(int)labPeople.getLocation().getY());
return;
}
else{
map[y][x-2]=2;
map[y][x-1]=3;
finishNumber--;
caseArray[y][x-2]=caseArray[y][x-1];
caseArray[y][x-2].setLocation(25+50*x-100,25+50*y);
caseArray[y][x-1]=null;
x--;
labPeople.setLocation((int)labPeople.getLocation().getX()-50,(int)labPeople.getLocation().getY());
return;
}
}
x--;
labPeople.setLocation((int)labPeople.getLocation().getX()-50,(int)labPeople.getLocation().getY());
}
else if(key==KeyEvent.VK_DOWN){
if(map[y+1][x]==1){
return;
}
if(map[y+1][x]==2){
if(map[y+2][x]==1 | map[y+2][x]==2){
return;
}
else if(map[y+2][x]==3){
map[y+2][x]=4;
map[y+1][x]=0;
finishNumber++;
caseArray[y+2][x]=caseArray[y+1][x];
caseArray[y+2][x].setLocation(25+50*x,25+50*y+100);
caseArray[y+1][x]=null;
y++;
labPeople.setLocation((int)labPeople.getLocation().getX(),(int)labPeople.getLocation().getY()+50);
return;
}
else{
map[y+2][x]=2;
map[y+1][x]=0;
caseArray[y+2][x]=caseArray[y+1][x];
caseArray[y+2][x].setLocation(25+50*x,25+50*y+100);
caseArray[y+1][x]=null;
y++;
labPeople.setLocation((int)labPeople.getLocation().getX(),(int)labPeople.getLocation().getY()+50);
return;
}
}
if(map[y+1][x]==4){
if(map[y+2][x]==1 | map[y+2][x]==2 | map[y+2][x]==4){
return;
}
else if(map[y+2][x]==3){
map[y+2][x]=4;
map[y+1][x]=3;
caseArray[y+2][x]=caseArray[y+1][x];
caseArray[y+2][x].setLocation(25+50*x,25+50*y+100);
caseArray[y+1][x]=null;
y++;
labPeople.setLocation((int)labPeople.getLocation().getX(),(int)labPeople.getLocation().getY()+50);
return;
}
else{
map[y+2][x]=2;
map[y+1][x]=3;
finishNumber--;
caseArray[y+2][x]=caseArray[y+1][x];
caseArray[y+2][x].setLocation(25+50*x,25+50*y+100);
caseArray[y+1][x]=null;
y++;
labPeople.setLocation((int)labPeople.getLocation().getX(),(int)labPeople.getLocation().getY()+50);
return;
}
}
y++;
labPeople.setLocation((int)labPeople.getLocation().getX(),(int)labPeople.getLocation().getY()+50);
}
else if(key==KeyEvent.VK_UP){
if(map[y-1][x]==1){
return;
}
if(map[y-1][x]==2){
if(map[y-2][x]==1 | map[y-2][x]==2){
return;
}
else if(map[y-2][x]==3){
map[y-2][x]=4;
map[y-1][x]=0;
finishNumber++;
caseArray[y-2][x]=caseArray[y-1][x];
caseArray[y-2][x].setLocation(25+50*x,25+50*y-100);
caseArray[y-1][x]=null;
y--;
labPeople.setLocation((int)labPeople.getLocation().getX(),(int)labPeople.getLocation().getY()-50);
return;
}
else{
map[y-2][x]=2;
map[y-1][x]=0;
caseArray[y-2][x]=caseArray[y-1][x];
caseArray[y-2][x].setLocation(25+50*x,25+50*y-100);
caseArray[y-1][x]=null;
y--;
labPeople.setLocation((int)labPeople.getLocation().getX(),(int)labPeople.getLocation().getY()-50);
return;
}
}
if(map[y-1][x]==4){
if(map[y-2][x]==1 | map[y-2][x]==2 | map[y-2][x]==4){
return;
}
else if(map[y-2][x]==3){
map[y-2][x]=4;
map[y-1][x]=3;
caseArray[y-2][x]=caseArray[y-1][x];
caseArray[y-2][x].setLocation(25+50*x,25+50*y-100);
caseArray[y-1][x]=null;
y--;
labPeople.setLocation((int)labPeople.getLocation().getX(),(int)labPeople.getLocation().getY()-50);
return;
}
else{
map[y-2][x]=2;
map[y-1][x]=3;
finishNumber--;
caseArray[y-2][x]=caseArray[y-1][x];
caseArray[y-2][x].setLocation(25+50*x,25+50*y-100);
caseArray[y-1][x]=null;
y--;
labPeople.setLocation((int)labPeople.getLocation().getX(),(int)labPeople.getLocation().getY()-50);
return;
}
}
y--;
labPeople.setLocation((int)labPeople.getLocation().getX(),(int)labPeople.getLocation().getY()-50);
}
}
public void keyPressed(KeyEvent e){
}
public void keyTyped(KeyEvent e){
}
}
推箱子窗口类代码,未写按钮等其他功能
于 2021-06-06 20:01:06 首次发布