推箱子窗口类代码,未写按钮等其他功能

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){

    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值