0

用于创建 UnboundedGrid 并显示它:

ActorWorld world = new ActorWorld(new UnboundedGrid<Actor>());
world.show();

用于创建 BoundedGrid(比如说 10x10)并显示它:

ActorWorld world = new ActorWorld(new BoundedGrid<Actor>(10, 10));
world.show();

有什么方法可以创建自定义 UnboundedGrid?通过自定义,我的意思是参数之一(列或行)不是无界的。

我检查了 UnboundedGrid 的 GridWorld 源代码,它扩展了实现 Grid 的 AbstactGrid,但我不认为有任何方法可以做到这一点。

4

1 回答 1

1

最好的想法是通过扩展 AbstractGrid 自己实现它。我建议使用一个 Maps 数组,将表示列的整数与参与者映射,数组的长度表示行数。(记住,你不能有泛型数组,所以你必须使用原始类型。)像这样:

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
}
于 2013-03-19T18:48:31.037 回答