编程解决各种问题(一) ----------------Flash 经典智力游戏(一) 人羊菜以及狼的故事
2011-07-28 12:06
731 查看
第一个问题:帮助男人用船把狼、羊、和一箱菜运送到河对面,船一次只能运一样,而且有苛刻的附加条件:当男人不在时,狼会吃羊,羊也会吃卷心菜。移动鼠标,开始解题吧
这个有游戏地址 :http://www.chinaren.com/20050330/n224934721.shtml
没玩过的最好玩过再看我的代码,不懂的可以问我,写的比较乱。。。
一个有两个类,这个是主要的处理类
这个有游戏地址 :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; } }
相关文章推荐
- 编程解决各种问题(二) ----------------Flash 经典智力游戏(二) 和尚和鬼的故事
- ubuntu 下遇到的各种问题,以及解决办法
- select挡住div的解决方法以及frame问题和IE、FLASH与实用代码
- C#串口编程遇到的问题以及解决方法
- java语言gui编程之内部类和鼠标事件经典2之两个问题的解决
- 【iOS-Cocos2d游戏开发之十八】解决滚屏背景/拼接地图有黑边(缝隙)以及禁止游戏中自动锁屏问题
- C# 网络编程之豆瓣OAuth2.0认证详解和遇到的各种问题及解决
- lr各种问题以及解决办法
- nginx+thinkphp下解决不支持pathinfo模式以及存在的各种404,500问题
- 你所不知道的SQL Server数据库启动过程,以及启动不起来的各种问题的分析及解决技巧(转)
- 【iOS-Cocos2d游戏开发之十八】解决滚屏背景/拼接地图有黑边(缝隙)/动画播放出现毛边以及禁止游戏中自动锁屏问题!
- 各种编码问题产生原因以及解决办法---------响应编码,请求编码,URL编码
- 在SharePoint中服务器端使用Word编程模型转换PDF遇到的问题以及解决方法
- 解决ie6、7 position异常问题,以及flash文件挡住position定位
- 网络编程中常见问题以及解决思路
- 【iOS-Cocos2d游戏开发之十八】解决滚屏背景/拼接地图有黑边(缝隙)以及禁止游戏中自动锁屏问题!
- C# 串口编程遇到的问题以及解决方法
- 你所不知道的SQL Server数据库启动过程,以及启动不起来的各种问题的分析及解决技巧
- vc编程遇到的各种问题和解决方法
- 自定义照相机实现前后切换摄像头以及拍照预览各种问题解决