效果图:

import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;public class MainFrame extends Frame  implements KeyListener {public MainFrame() throws HeadlessException {targetInit(); // 目标位置  (笼子)wolfInit();// 狼sheepInit();// 羊   (箱子)treeInit();// 树backgroundInit();// 调用  初始化背景的方法setMainFrameUI();// 界面this.addKeyListener(this);// 键盘监听器}/*** 目标位置  (笼子)*/private void targetInit() {ImageIcon i = new ImageIcon("8.png"); //  创建一张图片  笼的图片JLabel target1_Lab = new JLabel(i); // 使用JLabel 组件 模拟笼target1_Lab.setBounds(12+700,36+4*50,50,50);// 设置 笼的位置   四个空分别是  横坐标、纵坐标、笼的宽、笼的高this.add(target1_Lab);// 把笼添加到组件内datas[4][14] = 8;JLabel target2_Lab = new JLabel(i); // 使用JLabel 组件 模拟笼target2_Lab.setBounds(12+700,36+5*50,50,50);// 设置 笼的位置   四个空分别是  横坐标、纵坐标、笼的宽、笼的高this.add(target2_Lab);// 把笼添加到组件内datas[5][14] = 8;JLabel target3_Lab = new JLabel(i); // 使用JLabel 组件 模拟笼target3_Lab.setBounds(12+700,36+6*50,50,50);// 设置 笼的位置   四个空分别是  横坐标、纵坐标、笼的宽、笼的高this.add(target3_Lab);// 把笼添加到组件内datas[6][14] = 8;JLabel target4_Lab = new JLabel(i); // 使用JLabel 组件 模拟笼target4_Lab.setBounds(12+700,36+7*50,50,50);// 设置 笼的位置   四个空分别是  横坐标、纵坐标、笼的宽、笼的高this.add(target4_Lab);// 把笼添加到组件内datas[7][14] = 8;}JLabel [] []  sheeps = new JLabel[12][16];/*** 羊   (箱子)*/private void sheepInit() {ImageIcon i = new ImageIcon("4.png"); //  创建一张图片  羊的图片JLabel sheep1_Lab = new JLabel(i); // 使用JLabel 组件 模拟羊sheep1_Lab.setBounds(12+6*50,36+2*50,50,50);// 设置 羊的位置   四个空分别是  横坐标、纵坐标、羊的宽、羊的高this.add(sheep1_Lab);// 把羊添加到组件内// 修改羊的位置  遍布在地图内datas[2][6] = 4;sheeps[2][6] = sheep1_Lab;JLabel sheep2_Lab = new JLabel(i); // 使用JLabel 组件 模拟羊sheep2_Lab.setBounds(12+6*50,36+4*50,50,50);// 设置 羊的位置   四个空分别是  横坐标、纵坐标、羊的宽、羊的高this.add(sheep2_Lab);// 把羊添加到组件内// 修改羊的位置  遍布在地图内datas[4][6] = 4;sheeps[4][6] = sheep2_Lab;JLabel sheep3_Lab = new JLabel(i); // 使用JLabel 组件 模拟羊sheep3_Lab.setBounds(12+6*50,36+6*50,50,50);// 设置 羊的位置   四个空分别是  横坐标、纵坐标、羊的宽、羊的高this.add(sheep3_Lab);// 把羊添加到组件内// 修改羊的位置  遍布在地图内datas[6][6] = 4;sheeps[6][6] = sheep3_Lab;JLabel sheep4_Lab = new JLabel(i); // 使用JLabel 组件 模拟羊sheep4_Lab.setBounds(12+6*50,36+8*50,50,50);// 设置 羊的位置   四个空分别是  横坐标、纵坐标、羊的宽、羊的高this.add(sheep4_Lab);// 把羊添加到组件内// 修改羊的位置  遍布在地图内datas[8][6] = 4;sheeps[8][6] = sheep4_Lab;}// 场景模拟  二维数组进行模拟//①  数字1 代表的是障碍//②  数字0 代表的是空地//③  数字4 代表的是羊(箱子)//④  数字8 代表的是目标(笼子)//④  数字12 代表的是羊进入了目标(笼子)// 12 row *  16colint [][] datas = {{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,1,1,1,0,0,0,1},{1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1},{1,0,0,0,0,0,0,0,0,1,1,1,0,0,0,1},{1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1},{1,0,0,0,0,0,0,0,0,1,1,1,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,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}};//代表狼的横向位置int wx;//代表狼的纵向位置int wy;int num  = 0 ;//当前的羊进入笼内的个数int total= 4; //一共有多少个笼private void treeInit() {ImageIcon i = new ImageIcon("1.png");for (int j = 0; j < datas.length; j++) {for (int k = 0; k < datas[j].length; k++) {if (datas[j][k] == 1){JLabel lab = new JLabel(i);lab.setBounds(12+50*k,36+50*j,50,50);this.add(lab);}}}}JLabel wolf_lab;//显示狼的方法private void wolfInit() {wx = 4;wy = 5;ImageIcon i = new ImageIcon("-10.png");wolf_lab  = new JLabel(i);wolf_lab.setBounds(12+ wx *50 , 36+ wy *50,50,50);this.add(wolf_lab);}// 下面方法是处理  大草坪 背景的private void backgroundInit() {ImageIcon i = new ImageIcon("floor.png");JLabel lab = new JLabel(i);lab.setBounds(12,36,800,600);this.add(lab);}// 显示窗体背景public void  setMainFrameUI(){this.setTitle(BoxConfig.title);this.setLocation(BoxConfig.Uix,BoxConfig.Uiy);this.setSize(BoxConfig.width,BoxConfig.height);this.setVisible(true); //  设置窗口显示出来}@Overridepublic void keyTyped(KeyEvent e) {}@Overridepublic void keyPressed(KeyEvent e) {}// ←   会显示 37数字// ↑   会显示 38数字// →   会显示 39数字// ↓   会显示 40数字@Overridepublic void keyReleased(KeyEvent e) {int keyNumber = e.getKeyCode();System.out.println(keyNumber);if (keyNumber == 39){if (datas[wy][wx + 1] == 0){ // 判断是 空地wx = wx  + 1;int x = (int) wolf_lab.getLocation().getX();//获取狼的横坐标int y = (int) wolf_lab.getLocation().getY();//获取狼的纵坐标wolf_lab.setLocation(x + 50 , y);//因为是39 所以是往右走,为横坐标移动 ,  往右是前进 所以是  +ImageIcon icon = new ImageIcon("0-1.png");wolf_lab.setIcon(icon);}if (datas[wy][wx + 1] == 1){// 判断是 障碍return;}if (datas[wy][wx + 1] == 4 && datas[wy][wx + 2] == 1){// 判断的是 狼碰到羊 且 羊往右还是树时return;}if (datas[wy][wx + 1] == 4 && datas[wy][wx + 2] == 4){// 判断的是 狼碰到羊 且 羊往右还是羊时return;}if (datas[wy][wx + 1] == 4 && datas[wy][wx + 2] == 12){// 判断的是 狼碰到羊 且 羊往右还是已进入笼子内的羊时return;}if (datas[wy][wx + 1] == 12 && datas[wy][wx + 2] == 1){// 判断的是 狼碰到羊 且 羊往右还是已进入笼子内的羊时return;}if (datas[wy][wx + 1] == 12 && datas[wy][wx + 2] == 4){// 判断的是 狼碰到羊 且 羊往右还是已进入笼子内的羊时return;}if (datas[wy][wx + 1] == 12 && datas[wy][wx + 2] == 12){// 判断的是 狼碰到羊 且 羊往右还是已进入笼子内的羊时return;}if (datas[wy][wx + 1] == 12 && datas[wy][wx + 2] == 0){// 判断的是 狼碰到羊 且 羊往右还是已进入笼子内的羊时datas[wy][wx + 1] = 8;//笼datas[wy][wx + 2] = 4;//羊num -- ;}if (datas[wy][wx + 1] == 12 && datas[wy][wx + 2] == 8){// 判断的是 狼碰到羊 且 羊往右还是已进入笼子内的羊时datas[wy][wx + 1] = 8;//笼datas[wy][wx + 2] = 12;//目标地}if (datas[wy][wx + 1] == 4 && datas[wy][wx + 2] == 8){// 判断的是 狼碰到羊 且 羊往右还是已进入笼子内的羊时datas[wy][wx + 1] = 0;//空地datas[wy][wx + 2] = 12;//目标地num ++ ;}if (datas[wy][wx + 1] == 4 && datas[wy][wx + 2] == 0){// 判断的是 狼碰到羊 且 羊往右还是空地时datas[wy][wx + 1] = 0;datas[wy][wx + 2] = 4;}sheeps[wy][wx+1].setLocation(12+wx*50+100 , 36+wy*50);sheeps[wy][wx+2] = sheeps[wy][wx+1];sheeps[wy][wx+1] = null;wx = wx + 1;int x = (int) wolf_lab.getLocation().getX();//获取狼的横坐标int y = (int) wolf_lab.getLocation().getY();//获取狼的纵坐标wolf_lab.setLocation(x + 50 , y);//因为是39 所以是往右走,为横坐标移动 ,  往右是前进 所以是  +ImageIcon icon = new ImageIcon("0-1.png");wolf_lab.setIcon(icon);vectory();}if (keyNumber == 37){if (datas[wy][wx - 1] == 0){wx = wx  - 1;int x = (int) wolf_lab.getLocation().getX();//获取狼的横坐标int y = (int) wolf_lab.getLocation().getY();//获取狼的纵坐标wolf_lab.setLocation(x - 50 , y);//因为是37 所以是往左走,为横坐标移动 ,  往右是前进 所以是  -ImageIcon icon = new ImageIcon("01.png");wolf_lab.setIcon(icon);}if (datas[wy][wx - 1] == 1){return;}if (datas[wy][wx - 1] == 4 && datas[wy][wx - 2] == 1){// 判断的是 狼碰到羊 且 羊往右还是树时return;}if (datas[wy][wx - 1] == 4 && datas[wy][wx - 2] == 4){// 判断的是 狼碰到羊 且 羊往右还是羊时return;}if (datas[wy][wx - 1] == 4 && datas[wy][wx - 2] == 12){// 判断的是 狼碰到羊 且 羊往右还是已进入笼子内的羊时return;}if (datas[wy][wx - 1] == 12 && datas[wy][wx - 2] == 1){//return;}if (datas[wy][wx - 1] == 12 && datas[wy][wx - 2] == 4){//return;}if (datas[wy][wx - 1] == 12 && datas[wy][wx - 2] == 12){//return;}if (datas[wy][wx - 1] == 4 && datas[wy][wx - 2] == 0){datas[wy][wx - 1] = 0;datas[wy][wx - 2] = 4;}if (datas[wy][wx - 1] == 4 && datas[wy][wx - 2] == 8){datas[wy][wx - 1] = 0;datas[wy][wx - 2] = 12;num++;}if (datas[wy][wx - 1] == 12 && datas[wy][wx - 2] == 0){//datas[wy][wx - 1] = 8;datas[wy][wx - 2] = 4;num--;}if (datas[wy][wx - 1] == 12 && datas[wy][wx - 2] == 8){//datas[wy][wx - 1] = 8;datas[wy][wx - 2] = 12;}sheeps[wy][wx-1].setLocation(12+wx*50-100 , 36+wy*50);sheeps[wy][wx-2] = sheeps[wy][wx-1];sheeps[wy][wx-1] = null;wx = wx - 1;int x = (int) wolf_lab.getLocation().getX();//获取狼的横坐标int y = (int) wolf_lab.getLocation().getY();//获取狼的纵坐标wolf_lab.setLocation(x - 50 , y);//因为是37 所以是往左走,为横坐标移动 ,  往右是前进 所以是  -ImageIcon icon = new ImageIcon("01.png");wolf_lab.setIcon(icon);vectory();}if (keyNumber == 38){if (datas[wy - 1][wx] == 0){wy = wy  - 1;int x = (int) wolf_lab.getLocation().getX();//获取狼的横坐标int y = (int) wolf_lab.getLocation().getY();//获取狼的纵坐标wolf_lab.setLocation(x  , y- 50);//因为是37 所以是往左走,为横坐标移动 ,  往右是前进 所以是  +ImageIcon icon = new ImageIcon("10.png");wolf_lab.setIcon(icon);}if (datas[wy - 1][wx] == 1){return;}if (datas[wy - 1][wx]== 4 && datas[wy - 2][wx] ==1){return;}if (datas[wy - 1][wx]== 4 && datas[wy - 2][wx] == 4){return;}if (datas[wy - 1][wx]== 4 && datas[wy - 2][wx] == 12){return;}if (datas[wy - 1][wx]== 12 && datas[wy - 2][wx] == 1){return;}if (datas[wy - 1][wx]== 12 && datas[wy - 2][wx] == 4){return;}if (datas[wy - 1][wx]== 12 && datas[wy - 2][wx] == 12){return;}if (datas[wy - 1][wx]== 4 && datas[wy - 2][wx] == 0){datas[wy-1][wx] = 0;datas[wy-2][wx] = 4;}if (datas[wy - 1][wx]== 4 && datas[wy - 2][wx] == 8){datas[wy-1][wx] = 0;datas[wy-2][wx] = 12;num++;}if (datas[wy - 1][wx]== 12 && datas[wy - 2][wx] == 0){datas[wy-1][wx] = 8;datas[wy-2][wx] = 4;num--;}if (datas[wy - 1][wx]== 12 && datas[wy - 2][wx] == 8){datas[wy-1][wx] = 8;datas[wy-2][wx] = 12;}sheeps[wy-1][wx].setLocation(12+wx*50,36+wy*50-100);sheeps[wy-2][wx]= sheeps[wy-1][wx];sheeps[wy-1][wx] = null;wy = wy  - 1;int x = (int) wolf_lab.getLocation().getX();//获取狼的横坐标int y = (int) wolf_lab.getLocation().getY();//获取狼的纵坐标wolf_lab.setLocation(x  , y- 50);//因为是37 所以是往左走,为横坐标移动 ,  往右是前进 所以是  +ImageIcon icon = new ImageIcon("10.png");wolf_lab.setIcon(icon);vectory();}if (keyNumber == 40){if (datas[wy + 1][wx] == 0){wy = wy  + 1;int x = (int) wolf_lab.getLocation().getX();//获取狼的横坐标int y = (int) wolf_lab.getLocation().getY();//获取狼的纵坐标wolf_lab.setLocation(x  , y+ 50);//因为是37 所以是往左走,为横坐标移动 ,  往右是前进 所以是  +ImageIcon icon = new ImageIcon("-10.png");wolf_lab.setIcon(icon);}if (datas[wy + 1][wx] == 1){return;}if (datas[wy + 1][wx]== 4 && datas[wy + 2][wx] == 1){return;}if (datas[wy + 1][wx]== 4 && datas[wy + 2][wx] == 4){return;}if (datas[wy + 1][wx]== 4 && datas[wy + 2][wx] == 12){return;}if (datas[wy + 1][wx]== 12 && datas[wy + 2][wx] == 1){return;}if (datas[wy + 1][wx]== 12 && datas[wy + 2][wx] == 4){return;}if (datas[wy + 1][wx]== 12 && datas[wy + 2][wx] == 12){return;}if (datas[wy + 1][wx]== 4 && datas[wy + 2][wx] == 0){datas[wy+1][wx] = 0;datas[wy+2][wx] = 4;}if (datas[wy + 1][wx]== 4 && datas[wy + 2][wx] == 8){datas[wy+1][wx] = 0;datas[wy+2][wx] = 12;num++;}if (datas[wy + 1][wx]== 12 && datas[wy + 2][wx] == 0){datas[wy+1][wx] = 8;datas[wy+2][wx] = 4;num--;}if (datas[wy + 1][wx]== 12 && datas[wy + 2][wx] == 8){datas[wy+1][wx] = 8;datas[wy+2][wx] = 12;}sheeps[wy+1][wx].setLocation(12+wx*50,36+wy*50+100);sheeps[wy+2][wx]= sheeps[wy+1][wx];sheeps[wy+1][wx] = null;wy = wy  + 1;int x = (int) wolf_lab.getLocation().getX();//获取狼的横坐标int y = (int) wolf_lab.getLocation().getY();//获取狼的纵坐标wolf_lab.setLocation(x  , y+ 50);//因为是37 所以是往左走,为横坐标移动 ,  往右是前进 所以是  +ImageIcon icon = new ImageIcon("-10.png");wolf_lab.setIcon(icon);vectory();}}private void vectory() {if (num == total){System.out.println("您已获得胜利!");}}}

喜洋洋大战灰太狼(大结局)相关推荐

  1. 动画片“喜洋洋与灰太狼”和“麦兜”的营销策略

    一.成绩 (1)               08年7月,风云决3300万元票房. (2)               09年1月,喜洋洋和灰太狼之牛气冲天,1亿元票房. (3)            ...

  2. 实力封装:Unity打包AssetBundle(大结局)

    →→前情提要:让用户选择要打包的文件←← 大结局:更多选择 Unity打包AssetBundle从入门到放弃系列终于要迎来大结局了[小哥哥表示实在写不动了o(╥﹏╥)o]... 经过上一次的教程,其实 ...

  3. 大白话系列之C#委托与事件讲解大结局

    今天是大白话系列之C#委托与事件讲解的大结局,也是我们最关心的,在日常的MES系统编程中到底怎样使用这样的利器,其实我们每天都在使用事件,一个窗体,一个按钮都包含这事件,只是很少用到自己写的委托和事件 ...

  4. NBA表格_多伦多猛龙,向NBA大结局说不!猛龙夺冠创下了哪些记录?

    多伦多猛龙终于在昨天,夺去了本赛季的NBA总冠军,这场比赛,也是勇士主场甲骨文球馆47年历史的最后一天,注定了这也一定是个不平凡的总决赛. 多伦多猛龙,代表了多伦多,代表了加拿大,代表着那些想打破勇士 ...

  5. 跟我学 Java 8 新特性之 Stream 流(七)流与迭代器,流系列大结局

    转载自   跟我学 Java 8 新特性之 Stream 流(七)流与迭代器,流系列大结局 恭喜你们,马上就要学完Java8 Stream流的一整系列了,其实我相信Stream流对很多使用Java的同 ...

  6. 第十五天 图【下】(大结局)

    今天是大结局,说下"图"的最后一点东西,"最小生成树"和"最短路径". 一: 最小生成树 1. 概念 首先看如下图,不知道大家能总结点什么. ...

  7. 4月还完债务,“真还传”大结局?罗永浩回应:纯属造谣...

    3月21日消息,日前,中国企业家网报道称,交个朋友内部人士透露,罗永浩最早将在下个月彻底还完债务,"真还传"将迎来大结局,下一步将"进军方向与VR相关方向.同时,还表示罗 ...

  8. 二阶齐次线性微分方程的通解公式_高数大结局二阶常系数非线性齐次方程

    高数的全部知识点 到这里就要结束了 也许对你们来说是种解脱 但对姑姑来说是种不舍 感谢你们一直以来 给予姑姑和木叔无限的包容和爱 感谢你们两个学期 给予高数叔所有的帮助和鼓励 希望未来三年时间 高数叔 ...

  9. 如何让《隐秘的角落》快速大结局?只需要一份保险......

    学姐最近追了一部火爆的网剧<隐秘的角落>,豆瓣评分高达8.9分. 说实话,学姐已经很长时间没有看到制作这么精良的国产剧了.背景音乐配上剧情,太震撼了.到现在,学姐脑海中还时不时地响起&qu ...

  10. 长安十二时辰大结局一段时间了

    小说: 先从小说开始,小说原著中没有李必,而是李泌. 主要人物名字是从网上搜的: ['李泌','张小敬','龙波','姚汝能','曹破延','元载','伊斯','葛老','崔器','徐宾','檀棋', ...

最新文章

  1. python中的EVAL函数的定义和用法!
  2. 用一个比喻说明项目里各个成员的角色
  3. 使用Office组件读取Excel,引用Microsoft.Office.Interop.Excel出现的问题
  4. 禁忌搜索算法求解带时间窗的车辆路径问题原理讲解
  5. python实现数字时钟_Python 写的全屏数字时钟软件,看看还有什么改进的地方
  6. 1.3 收敛数列的性质
  7. 【网络特效】12 个炫酷背景特效库
  8. 操作系统形式化验证实践教程(2) - HOL列表与集合
  9. linux用户motd,linux需要装?那就和我一起来配置一个动态的MOTD登陆效果吧
  10. XP访问网络共享文件夹的方法
  11. 一个Python的迷宫小游戏
  12. LOG的含义 : Mysql 之 binlog介绍
  13. 什么是接口测试和功能测试?
  14. 哈夫曼树的概念与特点
  15. 重装系统过后,解决键盘的背景不能亮问题
  16. Python 使用csv库处理CSV文件
  17. 视频怎么转gif动图?
  18. javascript 网页游戏:猜拳
  19. Debian Linux的简单网络设置
  20. 无线传感器网络WSN覆盖优化问题

热门文章

  1. dos命令以及制作.bat文件
  2. Linux系统搭建房卡游戏教程,2020年H5电玩房卡游戏源码合集运营级:超强后台控制+部署教程文档...
  3. 操作系统原理与Linux实践教程申丰山版习题2的2-3答案
  4. Matlab:风向玫瑰图,我也行
  5. VB实现List集合
  6. 怎么判断日出时间早晚_怎样判断一个地方的日出或日落时间
  7. Android 开发,你遇上 Emoji 头疼吗?
  8. Struts2通配符详解
  9. 公开课丨重中之重!Web安全漏洞与防御
  10. ftp服务器管理网页,ftp服务器 web管理工具