第一个问题:帮助男人用船把狼、羊、和一箱菜运送到河对面,船一次只能运一样,而且有苛刻的附加条件:当男人不在时,狼会吃羊,羊也会吃卷心菜。移动鼠标,开始解题吧
这个有游戏地址 :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){ //随即取出一个备选的运送的Body boolean 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; } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。