我正在制作几个简单的类来计算大富翁游戏中的一些东西。
我的第一堂课(BoardSquare)有获取和设置玩家ID方格名称和广场上的房屋数量的方法,而我有另一种方法,使用if语句根据广场上的房屋数量计算租金。
我的第二类(房子)有一个方法,可以在另一个if语句中获取新房子的房产成本,然后有一个设置方法来设置房价。
我的目标是在板方形类中使用 House 类。我的意思是,而不是有一个实例变量
int houses;
为了保持正方形上的房屋数量,我使用房屋类型的变量。换句话说,不是在一个正方形上有很多房子,而是有 0 或 1 个房子。
我知道我想做什么,只是不知道该怎么做。
所以我有一个实例变量 房子;和我的getHouses方法读取
public House getHouses(this is where i had int h(from the constructor) but I dont know what to put here now)
{
Whatever I need to put here to access the class House
}
希望你能理解我想要完成的任务。如果您能提供任何提示,我将不胜感激。
你想要一个Collection<House>
。
不要使用 LinkedList<House>
,除非需要链表的特定行为。 这也适用于ArrayList
. 您可能希望其中任何一个作为实现,但尽可能使用最抽象的集合。
-
List
房屋的顺序很重要 -
Set
,如果您只想强制执行每种房屋类型的一个实例(可能不适用)
所以:
Collection<House> houses = new ArrayList<House>();
public Collection<House> getHouses() {
return houses;
}
public void addHouse(House newHouse) {
houses.add(newHouse);
}
我选择了一个ArrayList
实现,因为将新元素添加到列表末尾是有效的。 LinkedList
也是如此,但LinkedList
增加了额外的开销,使得将条目插入List
变得高效。 有关详细信息,请参阅文档。
在 BoardSquare 类中添加一个实例变量,如下所示:
LinkedList<House> houses;
如果只能有 0 或 1 个房屋,则可以有一个 House 类型的实例变量,以及一个名为 hasHouses 的布尔类型的实例变量。