每日100!
package com.honghong2;
import javax.swing.;import java.awt.;import java.awt.event.KeyEvent;import java.awt.event.KeyListener;public class TXZ2 { public static void main(String[] args){ //Java窗口类(桌子类) 并起标题 JFrame gameFrame = new JFrame(“推箱子1.0_2”); //设置窗口大小 gameFrame.setSize(2248 + 15,1248 + 38); //让窗口居中 设置窗口在屏幕的位置 gameFrame.setLocationRelativeTo(null); //关闭窗口时结束程序 gameFrame.setDefaultCloseOperation(3); //窗体大小是否可改变 gameFrame.setResizable(false); //面板类(桌布类) JPanel panel = new JPanel(); panel.setBackground(Color.darkGray); panel.setLayout(null); //把面板放入窗体中 对JFrame添加组件有两种方式: //用getContentPane()方法获得JFrame的内容面板, // 把组件添加到容器中,用setContentPane()方法把该容器置为JFrame的内容面板 gameFrame.setContentPane(panel); //添加围墙 //标签类 (瓷砖) JLabel[] walls = new JLabel[222 + 102 + 5 + 4 +3]; //ImageIcon位于javax.swing包中。 //图像加载 ImageIcon wallimg = new ImageIcon(“imgs/wall2.png”); //将图片赋予给每一个标签(贴照片) for(int i = 0;i < walls.length;i++){ walls[i] = new JLabel(wallimg); } //添加上下围墙 int index = 0; for(int i = 0;i < 22;i++){ //将标签布局到面板上 panel.add(walls[index]); //按顺序一个一个放到指定位置 walls[index++].setBounds(i48,0,48,48); //放下面一层 panel.add(walls[index]); walls[index++].setBounds(i48,1148,48,48); } for(int i = 1;i <= 10;i++){ //放左面一层 panel.add(walls[index]); walls[index++].setBounds(0,i48,48,48); //放右面一层 panel.add(walls[index]); walls[index++].setBounds(2148,i48,48,48); } //设置障碍物 //横着放 for(int i = 0;i < 5;i++){ panel.add(walls[index]); walls[index++].setBounds((11+i)48,448,48,48); } //竖着放 for(int i = 0;i < 4;i++){ panel.add(walls[index]); walls[index++].setBounds(548,(3+i)48,48,48); } //斜着放 for(int i = 0;i < 3;i++){ panel.add(walls[index]); walls[index++].setBounds((11+i)48,(7+i)48,48,48); } //将加载的图片放入标签(构造方法传参),将加载图片的标签放入面板(方法add) ImageIcon workerimg = new ImageIcon(“imgs/workerRight4.png”); JLabel worker = new JLabel(workerimg); panel.add(worker); worker.setBounds(548,248,48,48); ImageIcon boximg = new ImageIcon(“imgs/box4.png”); JLabel box = new JLabel(boximg); panel.add(box); box.setBounds(1448,848,48,48); ImageIcon goalimg = new ImageIcon(“imgs/goal4.png”); JLabel goal = new JLabel(goalimg); panel.add(goal); goal.setBounds(1548,548,48,48); //添加指定的按键,以接受此键执行的事件 //KeyListener(键控器) gameFrame.addKeyListener(new KeyListener() { @Override public void keyTyped(KeyEvent e) { } @Override public void keyPressed(KeyEvent e) { //KeyEvent 事件类 //KeyCode (键盘编码器)键位的阿斯科嘛值 int KeyCode = e.getKeyCode(); //玩家图片初始化 String workerimgsPath = “workerRight4.png”; //设置两个变量来记录玩家改变量 int x = 0,y = 0; //让键位的的阿斯克码等于KeyCode,用于键盘操作 //工人移动(为之改变), if(KeyCodeKeyEvent.VK_A||KeyCodeKeyEvent.VK_LEFT) { x = -48; workerimgsPath = “workerLeft4.png”; }else if(KeyCodeKeyEvent.VK_D||KeyCodeKeyEvent.VK_RIGHT){ x = 48; }else if(KeyCodeKeyEvent.VK_W||KeyCodeKeyEvent.VK_UP){ y = -48; workerimgsPath = “workerUp4.png”; }else if(KeyCodeKeyEvent.VK_S||KeyCodeKeyEvent.VK_DOWN){ y = 48; workerimgsPath = “workerDown4.png”; } //工人移动 worker.setBounds(worker.getBounds().x + x,worker.getBounds().y + y,48,48); //工人移动后“状态”的改变 ImageIcon img = new ImageIcon (“imgs/” + workerimgsPath); //setIcon(Icon) - 类 javax.swing.AbstractButton 中的方法 // 设置按钮的默认图标。 //setIcon(boolean) - 类 javax.swing.JInternalFrame 中的方法 //如果外观支持图标化,则对此内部窗体执行图标化或取消图标化。 //setIcon(Icon) - 类 javax.swing.JLabel 中的方法 //定义此组件将要显示的图标。 //setIcon(Icon) - 类 javax.swing.JOptionPane 中的方法 //设置要显示的图标。 //setIcon(MutableAttributeSet, Icon) - 类 javax.swing.text.StyleConstants 中的静态方法 //设置图标属性。 worker.setIcon(img); //人物穿墙 for (int i = 0; i < walls.length; i++) { //判断人物和墙体是否相交(intersects) if(worker.getBounds().
2021-10-28
最新推荐文章于 2022-07-24 14:33:07 发布