编程解决各种问题(一) ----------------Flash 经典智力游戏(一) 人羊菜以及狼的故事
来源:互联网 发布:如何利用网络寻找客户 编辑:程序博客网 时间:2024/05/21 15:53
第一个问题:帮助男人用船把狼、羊、和一箱菜运送到河对面,船一次只能运一样,而且有苛刻的附加条件:当男人不在时,狼会吃羊,羊也会吃卷心菜。移动鼠标,开始解题吧
这个有游戏地址 :http://www.chinaren.com/20050330/n224934721.shtml
没玩过的最好玩过再看我的代码,不懂的可以问我,写的比较乱。。。
一个有两个类,这个是主要的处理类
import java.util.ArrayList;
public class Flash {static Body sheep;static Body dish;static Body wolf;static Body people;static Body tarBody;//当前运送的东西final static ArrayList<Body> tarList = new ArrayList<Body>();final static ArrayList<Body> curList = new ArrayList<Body>();/** * @param args */public static void main(String[] args) {//初始化羊sheep = new Body(Body.SHEEP);sheep.setnAfraidIndex(Body.WOLF);sheep.setnLikeIndex(Body.DISH);//初始化菜dish = new Body(Body.DISH);dish.setnAfraidIndex(Body.NONE);dish.setnLikeIndex(Body.NONE);//初始化狼wolf = new Body(Body.WOLF);wolf.setnAfraidIndex(Body.NONE);wolf.setnLikeIndex(Body.SHEEP);//初始化特殊的人people = new Body(Body.NONE);people.setnAfraidIndex(Body.NONE);people.setnLikeIndex(Body.NONE);curList.add(people);curList.add(wolf);curList.add(sheep);curList.add(dish);new Thread(){public void run(){while(tarList.toArray().length < 4){if(curList.indexOf(people) != -1){Transportation(tarList,curList,1);}else{Transportation(curList,tarList,0);}}}}.start();}public static void Transportation(ArrayList<Body> tar,ArrayList<Body> cur,int flag){//随即取出一个备选的运送的Bodyboolean bFlag = false;if(!cur.equals(curList)){boolean bFlag2 = false;//比较剩下的Body,是否会出现弱者被吃掉的情况//首先取出一个Body,看下剩下的Body中有没有对自己不利的。。for(Body bb : cur){if(!bb.equals(people)){for(Body bbb : cur){if(!bbb.equals(people) && !bbb.equals(bb)){if(bbb.getnLikeIndex() == bb.getIndex() || bbb.getnAfraidIndex() == bb.getIndex()|| bb.getnAfraidIndex() == bbb.getIndex() || bb.getnLikeIndex() == bbb.getIndex()){bFlag2 = true;break;}}}if(bFlag2){break;}}}if(cur.toArray().length == 2 || bFlag2 == false){tar.add(people);cur.remove(people);if(flag == 1){System.out.println("向目的地运送:空");}else{System.out.println("向目原来地方运送:空");}}else{for(Body b : cur){bFlag = false;if(!b.equals(people)){if(tarBody == null){//比较剩下的Body,是否会出现弱者被吃掉的情况//首先取出一个Body,看下剩下的Body中有没有对自己不利的。。for(Body bb : cur){if(!bb.equals(b) && !bb.equals(people)){for(Body bbb : cur){if(!bbb.equals(b) && !bbb.equals(people) && !bbb.equals(bb)){if(bbb.getnLikeIndex() == bb.getIndex() || bbb.getnAfraidIndex() == bb.getIndex()|| bb.getnAfraidIndex() == bbb.getIndex() || bb.getnLikeIndex() == bbb.getIndex()){bFlag = true;break;}}}if(bFlag){break;}}}}else if(!tarBody.equals(b)){//比较剩下的Body,是否会出现弱者被吃掉的情况//首先取出一个Body,看下剩下的Body中有没有对自己不利的。。for(Body bb : cur){if(!bb.equals(b) && !bb.equals(people)){for(Body bbb : cur){if(!bbb.equals(b) && !bbb.equals(people) && !bbb.equals(bb)){if(bbb.getnLikeIndex() == bb.getIndex() || bbb.getnAfraidIndex() == bb.getIndex()|| bb.getnAfraidIndex() == bbb.getIndex() || bb.getnLikeIndex() == bbb.getIndex()){bFlag = true;break;}}}if(bFlag){break;}}}}if(!bFlag){String str = "";switch(b.getIndex()){case Body.DISH:str = "菜";break;case Body.SHEEP:str = "羊";break;case Body.WOLF:str = "狼";break;}if(flag == 1){System.out.println("向目的地运送:"+str);}else{System.out.println("向目原来地方运送:"+str);}tarBody = b;tar.add(b);tar.add(people);cur.remove(b);cur.remove(people);break;}}}}}else{for(Body b : cur){bFlag = false;if(!b.equals(people)){if(tarBody == null){//比较剩下的Body,是否会出现弱者被吃掉的情况//首先取出一个Body,看下剩下的Body中有没有对自己不利的。。for(Body bb : cur){if(!bb.equals(b) && !bb.equals(people)){for(Body bbb : cur){if(!bbb.equals(b) && !bbb.equals(people) && !bbb.equals(bb)){if(bbb.getnLikeIndex() == bb.getIndex() || bbb.getnAfraidIndex() == bb.getIndex()|| bb.getnAfraidIndex() == bbb.getIndex() || bb.getnLikeIndex() == bbb.getIndex()){bFlag = true;break;}}}if(bFlag){break;}}}}else if(!tarBody.equals(b)){//比较剩下的Body,是否会出现弱者被吃掉的情况//首先取出一个Body,看下剩下的Body中有没有对自己不利的。。for(Body bb : cur){if(!bb.equals(b) && !bb.equals(people)){for(Body bbb : cur){if(!bbb.equals(b) && !bbb.equals(people) && !bbb.equals(bb)){if(bbb.getnLikeIndex() == bb.getIndex() || bbb.getnAfraidIndex() == bb.getIndex()|| bb.getnAfraidIndex() == bbb.getIndex() || bb.getnLikeIndex() == bbb.getIndex()){bFlag = true;break;}}}if(bFlag){break;}}}}if(!bFlag){String str = "";switch(b.getIndex()){case Body.DISH:str = "菜";break;case Body.SHEEP:str = "羊";break;case Body.WOLF:str = "狼";break;}if(flag == 1){System.out.println("向目的地运送:"+str);}else{System.out.println("向目原来地方运送:"+str);}tarBody = b;tar.add(b);tar.add(people);cur.remove(b);cur.remove(people);break;}}}}}}这个是物体类,我把人菜狼和羊归为了物体
public class Body {public static final int NONE = 0;public static final int SHEEP = 1;public static final int DISH = 2;public static final int WOLF = 3;private int index;private int nLikeIndex;private int nAfraidIndex;public Body(int index){this.index = index;}public int getIndex() {return index;}public void setIndex(int index) {this.index = index;}public int getnLikeIndex() {return nLikeIndex;}public void setnLikeIndex(int nLikeIndex) {this.nLikeIndex = nLikeIndex;}public int getnAfraidIndex() {return nAfraidIndex;}public void setnAfraidIndex(int nAfraidIndex) {this.nAfraidIndex = nAfraidIndex;}}
- 编程解决各种问题(一) ----------------Flash 经典智力游戏(一) 人羊菜以及狼的故事
- 编程解决各种问题(二) ----------------Flash 经典智力游戏(二) 和尚和鬼的故事
- 智力研究(一)
- 当智力游戏遇到程序员(一 )三皇后
- 智力拼图问题–关于回溯和并行:单线到多线程再到GPU编程的进阶(一)
- 编程语言的故事(一)
- 【IQ】经典的智力问题
- 智力游戏(1)
- 智力游戏(常胜将军)
- 有趣智力面试题分享(一)
- 历史上经典的智力测试(转)
- 《多处理器编程的艺术》学习笔记一:确保线程互斥、公平地并行,以及解决死锁问题的经典思想
- Flash,Google,VP8以及互联网视频的未来(一)
- 管道的故事(一)
- 珠峰的故事(一)
- “谁动了我的奶酪”的故事(一)
- windows游戏编程(一)
- 游戏网络编程(一)
- 一种高效的外部索引算法
- mysql 某列指定值靠前排序
- CEGUI事件驱动机制2
- Nginx 内存池(pool)分析
- ppc或pc实现9段拉伸。
- 编程解决各种问题(一) ----------------Flash 经典智力游戏(一) 人羊菜以及狼的故事
- Alpha混合浅谈【转载】
- lua学习(一)
- ffmpeg解码视频存为BMP文件
- 面向对象基础续3(对象数组、内部类)
- Acronis Disk Director 11 Home下载,分区之王
- 学习软件工程过程当中所认识到的
- 屏蔽中文操作系统js代码
- silverlight