创建UnboundedGrid并显示它:
ActorWorld world = new ActorWorld(new UnboundedGrid<Actor>());
world.show();
创建BoundedGrid(比方说10x10)并显示它:
ActorWorld world = new ActorWorld(new BoundedGrid<Actor>(10, 10));
world.show();
有什么方法可以创建自定义UnboundedGrid吗? 根据自定义,我的意思是其中一个参数(cols或rows)不是无限制的。
我已经检查了UnboundedGrid的GridWorld源代码,它扩展了AbstactGrid,它实现了Grid,但我无法想象这样做。
答案 0 :(得分:1)
最好的想法是通过扩展AbstractGrid来实现它。我建议使用一个映射数组,映射表示列的整数与actor,数组的长度表示行数。 (请记住,你不能拥有泛型数组,所以你必须使用原始类型。)像这样:
public class CustomUnboundedGrid<E> extends AbstractGrid<E>
{
private Map[] data;
private int cols;
public CustomUnboundedGrid(int rows, int cols)
{
if(cols <= 0)
throw new IllegalArgumentException();
try
{
data = new Map[rows];
for(int i = 0; i < rows; ++i)
{
data[i] = new HashMap();
}
}
catch(NegativeArraySizeException e)
{
throw new IllegalArgumentException();
}
}
//override methods from AbstractGrid
}