本篇博客是推箱子完整代码的展示
详细代码讲解:
用JAVA制作小游戏——推箱子(一)
用JAVA制作小游戏——推箱子(二)
用JAVA制作小游戏——推箱子(三)
最下方附整个程序的文件下载链接
代码展示
主界面
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class game_tui_1 extends JFrame implements ActionListener{
JButton jb1=new JButton("开始游戏");
JButton jb2=new JButton("地图编辑器");
public game_tui_1() {
JLayeredPane layeredPane=new JLayeredPane();
ImageIcon image=new ImageIcon("shiyan4_image/background.png");
JLabel jl=new JLabel(image);
jl.setBounds(0,0,image.getIconWidth(),image.getIconHeight());//设置jl的位置和大小
jb1.setBounds(150,350,100,50);//jb1的位置和大小
jb1.addActionListener(this);//jb1添加监听器
jb1.setBackground(new Color(140,199,181));//设置jb1按钮的背景
jb2.setBounds(350,350,100,50);//jb2的位置和大小
jb2.addActionListener(this);//jb2添加监听器
jb2.setBackground(new Color(140,199,181));//设置jb2按钮的背景
//将jl放到最底层。 /*层次关系可见下面的注释*/
layeredPane.add(jl,JLayeredPane.DEFAULT_LAYER);
//将jb1,jb2放到高一层的地方
layeredPane.add(jb1,JLayeredPane.MODAL_LAYER);
layeredPane.add(jb2,JLayeredPane.MODAL_LAYER);
//设置窗口属性
this.setTitle("推箱子");//设置窗口题目
this.setLayeredPane(layeredPane);//窗口添加layeredPane
this.setSize(image.getIconWidth(),image.getIconHeight());//窗口大小
this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);//窗口关闭
this.setLocationRelativeTo(null); //窗口位置
this.setResizable(false);//窗口不可最大化
this.setVisible(true);//窗口可视
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new game_tui_1();
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if(e.getSource()==jb1) {
new game_tui_2();dispose();}
else {
new game_tui_3();dispose();}
}
}
游戏界面
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import javax.swing.*;
public class game_tui_2 extends JFrame{
JLabel[][] jl=new JLabel[20][20];//20*20的label,用于显示地图
int[][] mymap =new int[20][20];//二维数组,用于存储地图数据
JLabel jb_title =new JLabel();//显示第几关
JLabel jb_step=new JLabel();//显示第几步
JMenuBar menuBar = new JMenuBar();//菜单栏
int level=1,player_x=0,player_y=0;
int pd=0,step=0,MAX_level=11;
public game_tui_2() {
for(int i=0;i<20;i++) {
//实例化label数组,并设置各label的大小和位置
for(int j=0;j<20;j++) {
jl[i][j]=new JLabel();
this.add(jl[i][j]);
jl[i][j].setBounds(i*30, j*30+40, 30, 30);
}
}
//向窗体添加控件
this.add(jb_title);
this.add(jb_step);
this.add(menuBar);
jb_title.setBounds(670, 300, 100, 40);
jb_title.setFont(new java.awt.Font("Dialog", 1, 30));//设置字体
jb_step.setBounds(660, 400, 150, 40);
jb_step.setFont(new java.awt.Font("Dialog", 1, 20));//设置字体
//自己定义的函数
MENU();//设置菜单的内容
read_paint_map(level);
//添加键盘事件
this.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyPressed(KeyEvent e) {
if(pd_victory()==1) {
}
else if(e.getKeyCode()==KeyEvent.VK_UP) {
step++;jb_step.setText("本关走了:"+step+"步");key_up();}
else if(e.getKeyCode()==KeyEvent.VK_DOWN) {
step++;jb_step.setText("本关走了:"+step+"步");key_down();}
else if(e.getKeyCode()==KeyEvent.VK_LEFT) {
step++;jb_step.setText("本关走了:"+step+"步");key_left();}
else if(e.getKeyCode()==KeyEvent.VK_RIGHT) {
step++;jb_step.setText("本关走了:"+step+"步");key_right();}
}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
}
});
//窗体属性
this.setTitle("推箱子");//窗体名称
this.setSize(900, 730);//窗体大小
this.setDefaultCloseOperation(3);//窗体关闭按钮功能
this.setLocationRelativeTo(null);//窗体居中
this.setResizable(false);//窗体不可拉伸
this.setLayout(null);//null可以使控件放到任意位置
this.setVisible(true);//窗体可视
}
public int pd_victory() {
//判断胜利条件是否满足
for(int i=0;i<20;i++) {
for(int j=0;j<20;j++) {
if(mymap[i][j]==4||mymap[i][j]==3) {
return 0;}
}
}
return 1;
}
public void MENU() {
//菜单栏位置和大小
menuBar.setBounds(0, 0, 900, 20);
//菜单栏内容
JMenu menu_1 = new JMenu("菜单(E)");
JMenu menu_2 = new JMenu("更多(T)");
//快捷键
menu_1.setMnemonic(KeyEvent.VK_E);
menu_2.setMnemonic(KeyEvent.VK_T);
//菜单条目
JMenuItem menuItem_1 = new JMenuItem("下一关(V)");
JMenuItem menuItem_5 = new JMenuItem("上一关(B)");
JMenuItem menuItem_2 = new JMenuItem("重新开始(N)");
JMenuItem menuItem_3 = new JMenuItem("返回首页(M)");
JMenuItem menuItem_4 = new JMenuItem("关于我们(H)");
//快捷键
menuItem_1.setMnemonic(KeyEvent.VK_V);
menuItem_5.setMnemonic(KeyEvent.VK_B);
menuItem_2.setMnemonic(KeyEvent.VK_N);
menuItem_3.setMnemonic(KeyEvent.VK_M);
menuItem_4.setMnemonic(KeyEvent.VK_H);
//添加控件
menuBar.add(menu_1);
menuBar.add(menu_2);
menu_1.add(menuItem_1);
menu_1.add(menuItem_5);
menu_1.add(menuItem_2);
menu_1.add(menuItem_3);
menu_2.add(menuItem_4);
//每一栏添加事件
menuItem_1.addActionListener(new ActionListener() {
//下一关
public void actionPerformed(ActionEvent arg0) {
if(level!=MAX_level) {
read_paint_map(++level);}
else JOptionPane.showMessageDialog(null, "已经是最后一关了!!", "警告",JOptionPane.WARNING_MESSAGE);
}
});
menuItem_5.addActionListener(new ActionListener() {
//上一关
public void actionPerformed(ActionEvent arg0) {
if(level!=1) {
read_paint_map(--level);}
else JOptionPane.showMessageDialog(null, "已经是第一关了!!", "警告",JOptionPane.WARNING_MESSAGE);
}
});
menuItem_2.addActionListener(new ActionListener() {
//重新开始
public void actionPerformed(ActionEvent arg0) {
read_paint_map(level);
}
});
menuItem_3.addActionListener(new ActionListener() {
//返回首页
public void actionPerformed(ActionEvent e) {
new game_tui_1();
dispose();
}
});
menuItem_4.addActionListener(new ActionListener() {
//关于我们
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "java小游戏\n经供参考\n版本:7.1.5\n", "关于我们",JOptionPane.PLAIN_MESSAGE);
}
});
}
public void read_paint_map(int k) {
//读取与绘制地图
step=0;
jb_step.setText("本关走了:"+step+"步");
jb_title.setText("第"+k+"关");
readmap(k);//读取地图文件
for(int i=0;i<20;i++) {
for(int j=0;j<20;j++) {
if(mymap[i][j]==5) {
player_x=i;player_y=j;//获取玩家操控人物的位置
}
}
}
paint();//绘制地图
}
public void paint() {
//绘制地图
ImageIcon[] icon = new ImageIcon[7];//icon数组
//各种图片路径设置,根据实际自行修改
icon[0] = new ImageIcon();
icon[1] = new ImageIcon("shiyan4_image/wall.png"); //墙
icon[2] = new ImageIcon();
icon[3] = new ImageIcon("shiyan4_image/box1.png"); //箱子
icon[4] = new ImageIcon("shiyan4_image/destination.png"); //目的地
icon[5] = new ImageIcon("shiyan4_image/player.png"); //玩家
icon[6] = new ImageIcon("shiyan4_image/box2.png"); //到达目的地的箱子
//显示地图内容
for(int i=0;i<20;i++) {
for(int j=0;j<20;j++) {
jl[i][j].setIcon(icon[mymap[i][j]]);
}
}
if(pd_victory()==1) {
JOptionPane.showMessageDialog(null, " 恭喜你通过本关!!", "消息",
JOptionPane.PLAIN_MESSAGE);
if(level!=MAX_level) {
read_paint_map(++level);}
else JOptionPane.showMessageDialog(null, " 你已经完成所有关卡!!!", "恭喜",
JOptionPane.PLAIN_MESSAGE);}
}
public void readmap(int k) {
//读取第k关的地图
BufferedReader br = null;
String bb="";
int c=0;
String s;
try
{
File f;
if(k>=10) {
f=new File("shiyan4_maps\\"+k+".map");//地图文件地址
}
else {
f=new File("shiyan4_maps\\0"+k+".map");}
br=new BufferedReader(new FileReader(f));
while ((s=br.readLine())!=null)//读取文件每一行,不为空添加到bb中
{
bb=bb+s;
}
}
catch (IOException e)//异常抛出
{
System.out.println(e);
}
byte[] d=bb.getBytes();//读取bb中的每一个字节,存放到d数组中
int[] x=new int[bb.length()];
for(int i=0;i<bb.length();i++)x[i]=d[i]-48;//每个字节从char数字变成int数字
for(int i=0;i<20;i++)
{
for(int j=0;j<20;j++)//将数据存到mymap数组中
{
mymap[j][i]=x[c];
c++;
}
}
}
public void key_up() {
//上移
int x=player_x;
int y=player_y;
if(mymap[x][y-1]==1) {
step--;}
else if(mymap[x][y-1]==3) {
if(mymap[x][y-2]==1||mymap[x][y-2]==3||mymap[x][y-2]==6) {
step--;}
else if(pd==1) {
if(mymap[x][y-2]==4) {
mymap[x][y-2]=6;mymap[x][y-1]=5;mymap[x][y]=4;y=y-1;pd=0;}
else {
mymap[x][y-2]=3;mymap[x][y-1]=5;mymap[x][y]=4;y=y-1;pd=0;}}
else {
if(mymap[x][y-2]==4) {
mymap[x][y-2]=6;mymap[x][y-1]=5;mymap[x][y]=2;y=y-1;}
else {
mymap[x][y-2]=3;mymap[x][y-1]=5;mymap[x][y]=2;y=y-1;}}
}
else if(mymap[x][y-1]==6) {
if(mymap[x][y-2]==1||mymap[x][y-2]==3||mymap[x][y-2]==6) {
step--;}
else if(pd==1) {
if(mymap[x][y-2]==4) {
mymap[x][y-2]=6;mymap[x][y-1]=5;mymap[x][y]=4;y=y-1;}
else {
mymap[x][y-2]=3;mymap[x][y-1]=5;mymap[x][y]=4;y=y-1;}}
else {
if(mymap[x][y-2]==4){
mymap[x][y-2]=6;mymap[x][y-1]=5;mymap[x][y]=2;y=y-1;pd=1;}
else {
mymap[x][y-2]=3;mymap[x][y-1]=5;mymap[x][y]=2;y=y-1;pd=1;}}
}
else if(mymap[x][y-1]==4) {
if(pd==1) {
mymap[x][y-1]=5;mymap[x][y]=4;y=y-1;}else {
mymap[x][y-1]=5;mymap[x][y]=2;y=y-1;pd=1;}}
else {
if(pd==1) {
mymap[x][y-1]=5;mymap[x][y]=4;y=y-1;pd=0;}
else {
mymap[x][y-1]=5;mymap[x][y]=2;y=y-1;}}
player_x=x;
player_y=y;
paint();
}
public void key_down() {
//下移
int x=player_x;
int y=player_y;
if(mymap[x][y+1]==1) {
step--;}
else if(mymap[x][y+1]==3) {
if(mymap[x][y+2]==1||mymap[x][y+2]==3||mymap[x][y+2]==6) {
step--;}
else if(pd==1) {
if(mymap[x][y+2]==4) {
mymap[x][y+2]=6;mymap[x][y+1]=5;mymap[x][y]=4;y=y+1;pd=0;}
else {
mymap[x][y+2]=3;mymap[x][y+1]=5;mymap[x][y]=4;y=y+1;pd=0;}}
else {
if(mymap[x][y+2]==4) {
mymap[x][y+2]=6;mymap[x][y+1]=5;mymap[x][y]=2;y=y+1;}
else {
mymap[x][y+2]=3;mymap[x][y+1]=5;mymap[x][y]=2;y=y+1;}}
}
else if(mymap[x][y+1]==6) {
if(mymap[x][y+2]==1||mymap[x][y+2]==3||mymap[x][y+2]==6) {
step--;}
else if(pd==1) {
if(mymap[x][y+2]==4) {
mymap[x][y+2]=6;mymap[x][y+1]=5;mymap[x][y]=4;y=y+1;}
else {
mymap[x][y+2]=3;mymap[x][y+1]=5;mymap[x][y]=4;y=y+1;}}
else {
if(mymap[x][y+2]==4){
mymap[x][y+2]=6;mymap[x][y+1]=5;mymap[x][y]=2;y=y+1;pd=1;}
else {
mymap[x][y+2]=3;mymap[x][y+1]=5;mymap[x][y]=2;y=y+1;pd=1;}}
}
else if(mymap[x][y+1]==4) {
if(pd==1) {
mymap[x][y+1]=5;mymap[x][y]=4;y=y+1;}else {
mymap[x][y+1]=5;mymap[x][y]=2;y=y+1;pd=1;}}
else {
if(pd==1) {
mymap[x][y+1]=5;mymap[x][y]=4;y=y+1;pd=0;}
else {
mymap[x][y+1]=5;mymap[x][y]=2;y=y+1;}}
player_x=x;
player_y=y;
paint();
}
public void key_left() {
//左移
int x=player_x;
int y=player_y;
if(mymap[x-1][y]==1) {
step--;}
else if(mymap[x-1][y]==3) {
if(mymap[x-2][y]==1||mymap[x-2][y]==3||mymap[x-2][y]==6) {
step--;}
else if(pd==1) {
if(mymap[x-2][y]==4) {
mymap[x-2][y]=6;mymap[x-1][y]=5;mymap[x][y]=4;x=x-1;pd=0;}
else {
mymap[x-2][y]=3;mymap[x-1][y]=5;mymap[x][y]=4;x=x-1;pd=0;}}
else {
if(mymap[x-2][y]==4) {
mymap[x-2][y]=6;mymap[x-1][y]=5;mymap[x][y]=2;x=x-1;}
else {
mymap[x-2][y]=3;mymap[x-1][y]=5;mymap[x][y]=2;x=x-1;}}
}
else if(mymap[x-1][y]==6) {
if(mymap[x-2][y]==1||mymap[x-2][y]==3||mymap[x-2][y]==6) {
step--;}
else if(pd==1) {
if(mymap[x-2][y]==4) {
mymap[x-2][y]=6;mymap[x-1][y]=5;mymap[x][y]=4;x=x-1;}
else {
mymap[x-2][y]=3;mymap[x-1][y]=5;mymap[x][y]=4;x=x-1;}}
else {
if(mymap[x-2][y]==4){
mymap[x-2][y]=6;mymap[x-1][y]=5;mymap[x][y]=2;x=x-1;pd=1;}
else {
mymap[x-2][y]=3;mymap[x-1][y]=5;mymap[x][y]=2;x=x-1;pd=1;}}
}
else if(mymap[x-1][y]==4) {
if(pd==1) {
mymap[x-1][y]=5;mymap[x][y]=4;x=x-1;}else {
mymap[x-1][y]=5;mymap[x][y]=2;x=x-1;pd=1;}}
else {
if(pd==1) {
mymap[x-1][y]=5;mymap[x][y]=4;x=x-1;pd=0;}
else {
mymap[x-1][y]=5;mymap[x][y]=2;x=x-1;}}
player_x=x;
player_y=y;
paint();
}
public void key_right() {
//右移
int x=player_x;
int y=player_y;
if(mymap[x+1][y]==1) {
step--;}
else if(mymap[x+1][y]==3) {
if(mymap[x+2][y]==1||mymap[x+2][y]==3||mymap[x+2][y]==6) {
step--;}
else if(pd==1) {
if(mymap[x+2][y]==4) {
mymap[x+2][y]=6;mymap[x+1][y]=5;mymap[x][y]=4;x=x+1;pd=0;}
else {
mymap[x+2][y]=3;mymap[x+1][y]=5;mymap[x][y]=4;x=x+1;pd=0;}}
else {
if(mymap[x+2][y]==4) {
mymap[x+2][y]=6;mymap[x+1][y]=5;mymap[x][y]=2;x=x+1;}
else {
mymap[x+2][y]=3;mymap[x+1][y]=5;mymap[x][y]=2;x=x+1;}}
}
else if(mymap[x+1][y]==6) {
if(mymap[x+2][y]==1||mymap[x+2][y]==3||mymap[x+2][y]==6) {
step--;}
else if(pd==1) {
if(mymap[x+2][y]==4) {
mymap[x+2][y]=6;mymap[x+1][y]=5;mymap[x][y]=4;x=x+1;}
else {
mymap[x+2][y]=3;mymap[x+1][y]=5;mymap[x][y]=4;x=x+1;}}
else {
if(mymap[x+2][y]==4){
mymap[x+2][y]=6;mymap[x+1][y]=5;mymap[x][y]=2;x=x+1;pd=1;}
else {
mymap[x+2][y]=3;mymap[x+1][y]=5;mymap[x][y]=2;x=x+1;pd=1;}}
}
else if(mymap[x+1][y]==4) {
if(pd==1) {
mymap[x+1][y]=5;mymap[x][y]=4;x=x+1;}else {
mymap[x+1][y]=5;mymap[x][y]=2;x=x+1;pd=1;}}
else {
if(pd==1) {
mymap[x+1][y]=5;mymap[x][y]=4;x=x+1;pd=0;}
else {
mymap[x+1][y]=5;mymap[x][y]=2;x=x+1;}}
player_x=x;
player_y=y;
paint();
}
}
地图编辑器界面
import java.awt.Color;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import javax.swing.*;
public class game_tui_3 extends JFrame{
JButton jb1 =new JButton("墙块");
JButton jb2 =new JButton("玩家");
JButton jb3 =new JButton("箱子");
JButton jb4 =new JButton("目的地");
JButton jb8 =new JButton("空白块");
JButton jb5 =new JButton("清空");
JButton jb6 =new JButton("保存");
JButton jb7 =new JButton("返回");
JLabel[][] jl=new JLabel[20][20];
int[][] mymap=new int[20][20];int pd=0;int i=0,j=0;int pd_press;
public game_tui_3() {
//自定义方法
init();//初始化
//窗口属性
this.setTitle("地图编辑器");//窗体名称
this.setSize(800, 730);//窗体大小
this.setDefaultCloseOperation(3);//窗体关闭按钮功能
this.setLocationRelativeTo(null);//窗体居中
this.setResizable(false);//窗体不可拉伸
this.setLayout(null);
this.getContentPane().setBackground(new Color(214,213,183));//设置背景颜色
this.setVisible(true);//窗体可视
}
public void save() {
//保存数据到文件
// TODO Auto-generated method stub
String content="";FileOutputStream fout;byte[] b;
try {
File file=new File("shiyan4_maps\\11.map");//文件路径,根据实际自行修改
if(!file.exists()) file.createNewFile();//判断11.map文件是否存在,不存在新建一个
fout=new FileOutputStream(file,false); //创建文件输出流,false代表覆盖修改,ture代表添加修改
//覆盖修改:覆盖之前的内容 添加修改:保留之前的内容,在原来基础上添加内容
for(int i=0;i<20;i++) {
for(int j=0;j<20;j++) {
content=content+mymap[j][i];
}
if(i!=19)
content=content+"\r\n";//“\r\n” 是回车
}
b=content.getBytes();
if(pd_save()==1) {
//判断是否要保存
fout.write(b);
JOptionPane.showMessageDialog(null, " 文件写入成功!!", "消息",JOptionPane.PLAIN_MESSAGE);
}
else {
JOptionPane.showMessageDialog(null, " 文件写入失败!!", "消息",JOptionPane.ERROR_MESSAGE);
}
}
catch (IOException e) {
// TODO Auto-generated catch block
e.getMessage();
}
}
public int pd_save() {
//判断是否要保存
//保存要满足的条件:存在玩家控制,箱子数要等于目的地数
int num_player=0,num_end=0,num_box=0;
for(int i=0;i<20;i++) {
for(int j=0;j<20;j++) {
if(mymap[i][j]==5) num_player++;
else if(mymap[i][j]==4) num_end++;
else if(mymap[i][j]==3) num_box++;
}
}
if(num_player!=1||num_end!=num_box||num_end==0)return 0;
else return 1;
}
public void init() {
//界面显示
for(i=0;i<20;i++) {
for(j=0;j<20;j++) {
mymap[i][j]=0;
jl[i][j]=new JLabel(new ImageIcon());//实例化label
this.add(jl[i][j]);
jl[i][j].addMouseListener(new mouse());//label添加监听器
jl[i][j].setBounds(i*30+90, j*30+20, 30, 30);//设置label位置和大小
jl[i][j].setOpaque(true);//true表示不透明,false表示透明
}
}
//窗体添加控件
this.add(jb1);this.add(jb2);
this.add(jb3);this.add(jb4);
this.add(jb5);this.add(jb6);
this.add(jb7);this.add(jb8);
//按钮设置位置和大小
jb1.setBounds(35, 640, 80, 40);jb2.setBounds(125, 640, 80, 40);
jb3.setBounds(215, 640, 80, 40);jb4.setBounds(305, 640, 80, 40);
jb8.setBounds(395, 640, 80, 40);jb5.setBounds(485, 640, 80, 40);
jb6.setBounds(575, 640, 80, 40);jb7.setBounds(665, 640, 80, 40);
//给按钮添加鼠标事件
jb1.addMouseListener(new mouse());jb2.addMouseListener(new mouse());
jb3.addMouseListener(new mouse());jb4.addMouseListener(new mouse());
jb5.addMouseListener(new mouse());jb6.addMouseListener(new mouse());
jb7.addMouseListener(new mouse());jb8.addMouseListener(new mouse());
//设置按钮背景
jb1.setBackground(new Color(140,199,181));jb2.setBackground(new Color(140,199,181));
jb3.setBackground(new Color(140,199,181));jb4.setBackground(new Color(140,199,181));
jb5.setBackground(new Color(140,199,181));jb6.setBackground(new Color(140,199,181));
jb7.setBackground(new Color(140,199,181));jb8.setBackground(new Color(140,199,181));
}
class mouse extends MouseAdapter{
@Override
public void mousePressed(MouseEvent e) {
//鼠标按压事件
// TODO Auto-generated method stub
if(e.getSource()==jb1) {
pd=1;}//点击“墙块”按钮
else if(e.getSource()==jb2) {
pd=2;}//点击“玩家”按钮
else if(e.getSource()==jb3) {
pd=3;}//点击“箱子”按钮
else if(e.getSource()==jb4) {
pd=4;}//点击“目的地”按钮
else if(e.getSource()==jb5) {
//点击“清空”按钮
for(i=0;i<20;i++) {
for(j=0;j<20;j++) {
jl[i][j].setIcon(new ImageIcon());//改变label图片
mymap[i][j]=0;//改变label对应数据
}
}
}
else if(e.getSource()==jb6) {
save();}//点击“保存”按钮
else if(e.getSource()==jb7) {
new game_tui_1();dispose();}//点击“返回”按钮
else if(e.getSource()==jb8) {
pd=5;}//点击“空白块”按钮
else {
//点击label
for(i=0;i<20;i++) {
for(j=0;j<20;j++) {
if(e.getSource()==jl[i][j]) {
//获取点击了哪个label
pd_press=1;//用于标识判断按压
if(pd==0) {
}//pd=0表示没有点击任何按钮,点击label不做任何操作
else if(pd==1) {
jl[i][j].setIcon(new ImageIcon("shiyan4_image/wall.png"));mymap[i][j]=1;}//将label显示图片墙块
else if(pd==2) {
jl[i][j].setIcon(new ImageIcon("shiyan4_image/player.png"));mymap[i][j]=5;}//将label显示图片玩家
else if(pd==3) {
jl[i][j].setIcon(new ImageIcon("shiyan4_image/box1.png"));mymap[i][j]=3;}//将label显示图片箱子
else if(pd==4) {
jl[i][j].setIcon(new ImageIcon("shiyan4_image/destination.png"));mymap[i][j]=4;}//将label显示图片目的地
else if(pd==5) {
jl[i][j].setIcon(new ImageIcon());mymap[i][j]=0;}//将label显示空白块
}
}
}
}
}
@Override
public void mouseReleased(MouseEvent e) {
//鼠标释放事件
// TODO Auto-generated method stub
for(int i=0;i<20;i++) {
for(int j=0;j<20;j++) {
if(e.getSource()==jl[i][j]) {
pd_press=0;//释放将按压标识改回0
}
}
}
}
@Override
public void mouseEntered(MouseEvent e) {
//鼠标进入事件
// TODO Auto-generated method stub
//长按绘图
for(int i=0;i<20;i++) {
for(int j=0;j<20;j++) {
if(e.getSource()==jl[i][j]&&pd_press==1) {
//鼠标进入label且处在按压
if(pd==0) {
}//pd=0表示没有点击任何按钮,点击label不做任何操作
else if(pd==1) {
jl[i][j].setIcon(new ImageIcon("shiyan4_image/wall.png"));mymap[i][j]=1;}//绘图墙块
else if(pd==5) {
jl[i][j].setIcon(new ImageIcon());mymap[i][j]=0;}//绘图空白块
}
}
}
}
}
}
如有错误
欢迎指出
下一篇:JAVA 线程的介绍与使用