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 を作成する方法はありますか? カスタムでは、パラメーターの 1 つ (列または行) が無制限ではないことを意味します。

UnboundedGrid の GridWorld ソース コードを確認しましたが、Grid を実装する AbstactGrid を拡張していますが、これを行う方法は想像できません。

4

1 に答える 1

1

最良のアイデアは、AbstractGrid を拡張して自分で実装することです。列を表す整数をアクターにマップし、配列の長さが行数を表すマップの配列を使用することをお勧めします。(ジェネリック配列を持つことはできないので、生の型を使用する必要があることに注意してください。) 次のように:

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 に答える