黑马程序员技术交流社区
标题:
老农过河问题,谁能帮忙加上IO,做个控制台版的小游戏~
[打印本页]
作者:
想飞的鱼
时间:
2014-6-8 22:31
标题:
老农过河问题,谁能帮忙加上IO,做个控制台版的小游戏~
本帖最后由 想飞的鱼 于 2014-6-9 09:27 编辑
这是我的源码,求指导。希望加上IO,做成控制台版的小游戏~
//package com.itheima;
/**
第10题:一位老农带着猫、狗、鱼过河,河边有一条船,每次老农只能带一只动物过河。
当老农不和猫狗鱼在一起时,狗会咬猫,猫会吃鱼,当老农和猫狗鱼在一起时,则不会发生这种问题。编程解决猫狗鱼过河问题。
@author Mr.Hou
思路:
1,观察问题经分析,可用两个集合代表河的左岸和右岸
2,将人、狗、猫、鱼的对象存入集合中,姑且用字符串对象代表,就不描述类了
3,初始化时的河左岸是有人、狗、猫、鱼
4,开始渡河,如果左岸不是空,就循环移动人和动物
5,判断人在左岸还是右岸,各有不同的移动方式
6,判断是否“打架”,如果打架就返回来,带下一个动物 用get(0)实现,因为如果打架,
返回来的动物就添加到了集合的末尾
7,直到渡河成功
*/
import java.util.*;
class Test10
{
ArrayList<String> left = null;//创建一个集合代表左岸
ArrayList<String> right = null;//右岸
Test10()
{
/*
一初始化就有了左岸,右岸,
所有的动物和人开始都在左岸
*/
left = new ArrayList<String>();
right = new ArrayList<String>();
left.add("person");
left.add("dog");
left.add("cat");
left.add("fish");
}
public static void main(String [] args)
{
new Test10().duHe();
}
public void duHe()
{
while (!left.isEmpty())//如果左岸空了,则渡河成功,循环结束
{
if (left.contains("person"))//判断人在哪岸,在左岸就带一个动物过去
{
left.remove("person");
String animal = left.get(0);//获取一个动物
left.remove(animal);
right.add("person");//表示移动到右岸
right.add(animal);
if (this.daJia())//如果打架,则在返回来,添加到了left集合的末尾
{
right.remove("person");
right.remove(animal);
left.add("person");
left.add(animal);
}
else
{
System.out.println("person 把 "+animal+" 带到了右岸");//如果不打架就成功过河一次
}
}
else//人在右岸的情况
{
right.remove("person");
left.add("person");
if (this.daJia())//如果只移动人,发生“打架”,就再移动一个动物返回左岸
{
while (this.daJia())
{
String animal = right.get(0);
right.remove(animal);
left.add(animal);
if (this.daJia())//如果移动的某个动物还是反生打架,就把此动物返回右岸,移动其他动物,while实现
{
left.remove(animal);
right.add(animal);
}
else
{
System.out.println("person 和 "+animal+" 返回左岸");
}
}
}
else
{
System.out.println("person 自己返回左岸");
}
}
}
System.out.println("渡河成功!!!!");
}
public boolean daJia()
{
/*
判断左岸和右岸是否发生打架,
*/
//如果人不在左岸,左岸还包含dog和cat则打架,以下同理
if ((!left.contains("person")) && left.contains("dog") && left.contains("cat"))
return true;
if ((!left.contains("person")) && left.contains("cat") && left.contains("fish"))
return true;
if ((!right.contains("person")) && right.contains("dog") && right.contains("cat"))
return true;
if ((!right.contains("person")) && right.contains("cat") && right.contains("fish"))
return true;
return false;
}
}
复制代码
作者:
superob123
时间:
2014-6-8 22:43
高人!!!!!!!
作者:
佛说
时间:
2014-12-14 17:17
学习了,好好的看看:)
作者:
dimost
时间:
2014-12-25 23:12
学习了 学习了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2