php代码实现 人狼羊菜,人羊菜以及狼的故事 .

第一个问题:帮助男人用船把狼、羊、和一箱菜运送到河对面,船一次只能运一样,而且有苛刻的附加条件:当男人不在时,狼会吃羊,羊也会吃卷心菜。移动鼠标,开始解题吧

没玩过的最好玩过再看我的代码,不懂的可以问我,写的比较乱。。。

一个有两个类,这个是主要的处理类

importjava.util.ArrayList;import java.util.ArrayList;

publicclassFlash {

staticBody sheep;

staticBody dish;

staticBody wolf;

staticBody people;

staticBody tarBody;//当前运送的东西

finalstaticArrayList

 tarList =newArrayList();

finalstaticArrayList

 curList =newArrayList();

/**

* @param args

*/

publicstaticvoidmain(String[] args) {

//初始化羊

sheep =newBody(Body.SHEEP);

sheep.setnAfraidIndex(Body.WOLF);

sheep.setnLikeIndex(Body.DISH);

//初始化菜

dish =newBody(Body.DISH);

dish.setnAfraidIndex(Body.NONE);

dish.setnLikeIndex(Body.NONE);

//初始化狼

wolf =newBody(Body.WOLF);

wolf.setnAfraidIndex(Body.NONE);

wolf.setnLikeIndex(Body.SHEEP);

//初始化特殊的人

people =newBody(Body.NONE);

people.setnAfraidIndex(Body.NONE);

people.setnLikeIndex(Body.NONE);

curList.add(people);

curList.add(wolf);

curList.add(sheep);

curList.add(dish);

newThread(){

publicvoidrun(){

while(tarList.toArray().length <4){

if(curList.indexOf(people) != -1){

Transportation(tarList,curList,1);

}else{

Transportation(curList,tarList,0);

}

}

}

}.start();

}

publicstaticvoidTransportation(ArrayList

 tar,ArrayList cur,intflag){

//随即取出一个备选的运送的Body

booleanbFlag =false;

if(!cur.equals(curList)){

booleanbFlag2 =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;

}

}

}

}elseif(!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()){

caseBody.DISH:

str ="菜";

break;

caseBody.SHEEP:

str ="羊";

break;

caseBody.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;

}

}

}

}elseif(!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()){

caseBody.DISH:

str ="菜";

break;

caseBody.SHEEP:

str ="羊";

break;

caseBody.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 Flash {

static Body sheep;

static Body dish;

static Body wolf;

static Body people;

static Body tarBody;//当前运送的东西

final static ArrayList

tarList = new ArrayList();

final static ArrayList

curList = new ArrayList();

/**

* @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

tar,ArrayList 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;

}

}

}

}

}

}这个是物体类,我把人菜狼和羊归为了物体

publicclassBody {

publicstaticfinalintNONE =0;

publicstaticfinalintSHEEP =1;

publicstaticfinalintDISH =2;

publicstaticfinalintWOLF =3;

privateintindex;

privateintnLikeIndex;

privateintnAfraidIndex;

publicBody(intindex){

this.index = index;

}

publicintgetIndex() {

returnindex;

}

publicvoidsetIndex(intindex) {

this.index = index;

}

publicintgetnLikeIndex() {

returnnLikeIndex;

}

publicvoidsetnLikeIndex(intnLikeIndex) {

this.nLikeIndex = nLikeIndex;

}

publicintgetnAfraidIndex() {

returnnAfraidIndex;

}

publicvoidsetnAfraidIndex(intnAfraidIndex) {

this.nAfraidIndex = nAfraidIndex;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值