【Java精品源码栏目提醒】:文章导读:在新的一年中,各位网友都进入紧张的学习或是工作阶段。
网学会员整理了Java精品源码-推箱子游戏代码 - 其它资料的相关内容供大家参考,祝大家在新的一年里工作和学习顺利!
import
java.awt.Colorimport
java.awt.HeadlessExceptionimport
java.awt.event.KeyEventimport
java.awt.event.KeyListenerimport javax.swing.ImageIconimport javax.swing.JFrameimport javax.swing.JLabelimport javax.swing.JOptionPaneimport javax.swing.JPanelSuppressWarningsquotserialquotpublic class GameFrame extends JFrame private JPanel panel //面板 private JLabel box //箱子 private JLabel goal //目标 private JLabel worker //工人 private JLabel component //元件 private JLabel wall //围墙 private int levalNum 1 //关卡数 private int sum 0 //箱子与目标重合的个数 private int direction private String image private int dirIndex private int flag private int flag1 //窗体初始化 public GameFrameString title throws HeadlessException supertitle //调用父类的构造方法 super.setResizablefalse //设置窗体伸缩性 super.setDefaultCloseOperationEXIT_ON_CLOSE //设置关闭窗口时结束程序 initPanel //初始化面板 //加载控件 public void loadLevalLeval leval sum 0 direction new int102 image new String10// dirIndex 0 flag 1 panel.removeAll //清除面板上的元件 super.setTitlequot推箱子游戏--quot quot第quot levalNum quot关quot //设置窗体的标题 super.setBounds400 200 leval.getLength leval.getImgSize 6leval.getHeight leval.getImgSize 25 //设置窗体的的大小和位置 box new JLabelleval.getBoxNum //设置和创建 box forint i 0 i lt box.length i int location leval.getBoxLocationi boxi initComponentleval.getImgBox location0 location1leval.getImgSize int location leval.getWorkerLocaton //设置和创建 worker worker initComponentleval.getImgWorker3 location0 location1leval.getImgSize initWallsleval.getImgWalls leval.getWallsLocation leval.getImgSize//初始化围墙 goal new JLabelleval.getBoxNum //设置和创建 goal forint i 0 i lt goal.length i int location1 leval.getGoalLocationi goali initComponentleval.getImgGoal location10 location11leval.getImgSize panel.repaint // 重画面板 // 面板初始化方法 private void initPanel panel new JPanel panel.setBackgroundColor.GREEN panel.setLayoutnull super.setContentPanepanel //元件初始化方法 private JLabel initComponentString componentPath int left int top int imgSize ImageIcon imgComponent new ImageIconquotimage/quot componentPath component new JLabelimgComponent component.setBoundsleft imgSize top imgSize imgSize imgSize panel.addcomponent return component // 围墙初始化方法 private void initWallsString wallsPath int wallsLocation int imgSize ImageIcon Imgwall new ImageIconquotimage/quot wallsPath wall new JLabelwallsLocation.length for int i 0 i lt wallsLocation.length i walli new JLabelImgwall int index 0 for int i 0 i lt wallsLocation.length i int location wallsLocationi wallindex.setBoundslocation0 imgSize location1 imgSizeimgSize imgSize panel.addwallindex index // 键盘处理事件方法 public void addEventfinal Leval leval super.addKeyListenernew KeyListener Override public void keyTypedKeyEvent e Override public void keyReleasedKeyEvent e Override public void keyPressedKeyEvent e int keyCode e.getKeyCode int step 24 int x 0 y 0 flag1 1 String img leval.getImgWorker3 ifkeyCode KeyEvent.VK_UP keyCode KeyEvent.VK_W y - step img leval.getImgWorker0 else ifkeyCode KeyEvent.VK_DOWN keyCode KeyEvent.VK_S y step img leval.getImgWorker1 else ifkeyCode KeyEvent.VK_LEFT keyCode KeyEvent.VK_A x - step img leval.getImgWorker2 else ifkeyCode KeyEvent.VK_RIGHT keyCode KeyEvent.VK_D x step img leval.getImgWorker3 else ifkeyCode KeyEvent.VK_ESCAPE Leval leval LevalManager.getLevallevalNum loadLevalleval // 按 ESC 键重新玩这一关 // else ifkeyCode KeyEvent.VK_F1 // flag1 0// worker.setIconnew ImageIconquotimage/quot imagedirIndex //设置工人图片// worker.setLocationworker.getBounds.x -directiondirIndex0 worker.getBounds.y - directiondirIndex1 //设置工人位置// worker.setIconnew ImageIconquotimage/quot img //设置工人图片 worker.setLocationworker.getBounds.x x worker.getBounds.y y //设置工人位置 ifflag1 1 directiondirIndex0 x directiondirIndex1 y imagedirIndex img dirIndex //阻止工人穿墙 forint i 0 i lt wall.length i ifwalli.getBounds.intersectsworker.getBounds worker.setLocationworker.getBounds.x - xworker.getBounds.y - y flag 0 break // 阻止工人穿过箱子 forint j 0 j lt box.length j ifworker.getBounds.intersectsboxj.getBounds boxj.setLocationboxj.getBounds.x xboxj.getBounds.y y // 阻住箱子穿过箱子 forint k 0 k lt box.length k ifboxj.getBounds.intersectsboxk.getBoundsampamp k j boxj.setLocationboxj.getBounds.x - xboxj.getBounds.y - y worker.setLocationworker.getBounds.x - xworker.getBounds.y - y flag 0 break forint i 0 i lt wall.length i ifwalli.getBounds.intersectsboxj.getBounds boxj.setLocationboxj.getBounds.x - xboxj.getBounds.y - y worker.setLocationworker.getBounds.x - xworker.getBounds.y - y flag 0 break // 阻止箱子穿过围墙 forint i 0 i lt wall.length i ifwalli.getBounds.intersectsboxj.getBounds forint k 0 k lt box.length k ifboxj.getBounds.intersectsboxk.getBounds ampamp k j boxj.setLocationboxj.getBounds.x - xboxj.getBounds.y - y worker.setLocationworker.getBounds.x - xworker.getBounds.y - y flag 0 break break // 判断箱子与目标重合 forint i 0 i lt box.length i forint j 0 j lt goal.length j ifgoalj.getBounds.containsboxi.getBounds sum // 判断箱子与目标是否都已经重合 ifsum box.length levalNum Leval leval LevalManager.getLevallevalNum ifleval null JOptionPane.showMessageDialognull quot恭喜您闯关成功!quot System.exit0 else JOptionPane.showMessageDialognull quot恭喜您成功闯过第quot levalNum - 1 quot关!quot loadLevalleval sum 0 ifdirIndex 10 dirIndex 0 ifflag 0 dirIndex-- flag 1 public class Leval private int imgSize //图片的大小 private String imgBox //box 图片 private String imgGoal //goal 图片 private String imgWorker //工人图片 private String imgWalls //围墙图片 private int boxLocation //box 的位置 private int goalLocation //goal 的位置 private int workerLocaton //工人的位置 private int wallsLocation //围墙的位置 private int boxNum //box 的个数 private int wallNum //围墙的个数 private int length //窗体的宽可容纳围墙的个数 private int height //窗体的高可容纳围墙的个数 public Leval public int getImgSize return imgSize public void setImgSizeint imgSize this.imgSize imgSize public String getImgBox return imgBox public class LevalManager public static Leval getLevalint index Leval leval new Leval int boxLocation int goalLocation int wallsLocation int workerLocation int wallIndex 0 goalIndex 0 boxIndex 0 // 地图信息:0 代表空,1 代表围墙,2 代表箱子, 3 代表目标, 4代表工人 int map new int 1 1 1 1 1 1 1 1 1 1 1 1 1 4 0 1 1 1 1 1 1 1 1 0 2 0 0 1 1 1 1 1 1 1 0 1 0 1 1 1 1 1 3 1 0 1 0 0 1 1 1 1 3 2 0 0 1 0 1 1 1 1 3 0 0 0 2 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 2 1 1 1 0 0 0 1 1 4 0 0 2 0 0 2 0 1 1 0 3 3 1 0 2 0 1 1 1 1 3 3 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 0 4 1 1 1 1 0 0 0 1 0 0 1 1 1 1 2 0 2 0 2 0 1 1 1 1 0 2 1 1 0 0 1 1 1 1 0 2 0 1 0 1 1 1 3 3 3 3 3 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 0 0 0 1 1 1 1 0 0 0 2 0 0 0 1 1 1 1 2 0 1 1 1 0 2 1 1 1 1 0 1 3 3 3 1 0 1 1 1 1 0 1 3 3 3 1 0 1 1 1 0 2 0 0 2 0 0 2 0 1 1 0 0 0 0 0 1 4 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 3 3 3 0 1 1 1 1 1 1 3 3 3 2 1 1 1 1 0 0 2 1 2 0 2 0 1 1 0 2 2 0 0 1 2 0 1 1 0 0 0 0 1 0 0 0 1 1 1 1 1 4 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 switch index case 1: leval.setWallNum57 leval.setBoxNum3 leval.setImgSize48 leval.setImgBoxquotbox.pngquot leval.setImgGoalquotgoal.pngquot leval.setImgWorkernew String quotworkerUp2.pngquotquotworkerDown2.pngquot quotworkerLeft2.pngquot quotworkerRight2.pngquot leval.setImgWallsquotwall2.PNGquot break case 2: leval.setWallNum52 leval.setBoxNum4 leval.setImgSize48 leval.setImgBoxquotbox2.PNGquot leval.setImgGoalquotgoal2.pngquot leval.setImgWorkernew String quotworkerUp2.pngquotquotworkerDown2.pngquot quotworkerLeft2.pngquot quotworkerRight2.pngquot leval.setImgWallsquotwall2.PNGquot break case 3: leval.setWallNum52 leval.setBoxNum5 leval.setImgSize48 leval.setImgBoxquotbox.pngquot leval.setImgGoalquotgoal.pngquot leval.setImgWorkernew String quotworkerUp2.pngquotquotworkerDown2.pngquot quotworkerLeft2.pngquot quotworkerRight2.pngquot leval.setImgWallsquotwall2.PNGquot break case 4: leval.setWallNum57 leval.setBoxNum6 leval.setImgSize48 leval.setImgBoxquotbox2.PNGquot leval.setImgGoalquotgoal.pngquot leval.setImgWorkernew String quotworkerUp2.pngquotquotworkerDown2.pngquot quotworkerLeft2.pngquot quotworkerRight2.pngquot leval.setImgWallsquotwall2.PNGquot break case 5: leval.setWallNum47 leval.setBoxNum7 leval.setImgSize48 leval.setImgBoxquotbox.pngquot leval.setImgGoalquotgoal.pngquot leval.setImgWorkernew String quotworkerUp2.pngquotquotworkerDown2.pngquot quotworkerLeft2.pngquot quotworkerRight2.pngquot leval.setImgWallsquotwall2.PNGquot break default: return null leval.setHeightmapindex - 1.length leval.setLengthmapindex - 10.length wallsLocation new intleval.getWallNum2 boxLocation new intleval.getBoxNum2 goalLocation new intleval.getBoxNum2 workerLocation new int2 // 求出每关围墙、箱子、目标和工人的位置信息 forint i 0 i lt mapindex - 1.length i forint j 0 j lt mapindex - 1i.length j ifmapindex - 1ij 1 wallsLocationwallIndex0 j wallsLocationwallIndex1 i wallIndex else ifmapindex - 1ij 2 boxLocationboxIndex0 j boxLocationboxIndex1 i boxIndex else ifmapindex - 1ij.