Возникли проблемы с попыткой изменить размер сетки gridworld

Я хочу изменить размер сетки в gridworld с 10x10 по умолчанию на все, что захочу. Я тестировал его с 15x15, просто чтобы посмотреть, работает ли он. Но я не могу понять это, и другие источники в Интернете говорят, что то, что я делаю, должно работать.

Сетка остается 10x10, хотя я пытаюсь установить rowSize и colSize, как я могу это исправить, чтобы она открывала сетку на экране 15x15?

В этом классе я изменяю размер сетки

import info.gridworld.actor.*;
import info.gridworld.grid.BoundedGrid;

public class pokeGrid extends ActorWorld{

    private static final int rowSize = 15;
    private static final int colSize = 15;

    public pokeGrid(){
        super(new BoundedGrid<Actor>(rowSize, colSize));
    }
}

Этот класс является бегуном для актера

public class BeecherBugRunner extends pokeGrid {

    private static pokeGrid world = new pokeGrid();

    public static void main(String[] args)
    {
        ActorWorld world = new ActorWorld();
        BeecherBug beecher = new BeecherBug(4);
        world.add(new Location(7, 8), beecher);
        world.show();
    }
}

person Adamc23    schedule 16.05.2014    source источник
comment
В отличие от форумов, мы не используем слова «Спасибо» или «Любая помощь приветствуется» или подписи на Stack Overflow. См. раздел "Привет", "спасибо" слоганов и приветствий удалить из постов?.   -  person John Saunders    schedule 16.05.2014
comment
@JohnSaunders, вы должны обновить свои ссылки для копирования и вставки, чтобы перейти к MSE вместо MSO.   -  person gunr2171    schedule 16.05.2014
comment
@gunr2171: исправлено. Хороший улов.   -  person John Saunders    schedule 16.05.2014
comment
Я заметил, что вы не сказали, что делает опубликованный код. Просто это не работает. Каким образом это не работает? Сетка остается 10x10?   -  person John Saunders    schedule 16.05.2014
comment
Очень хороший. По сути, вы говорите, что я изменил размер на 15 x 15, а затем проверил каким-то образом, и сетка по-прежнему была 10 x 10. Скажите, пожалуйста, как вы тестировали - то есть, что заставляет вас думать, что сетка все еще 10x10?   -  person John Saunders    schedule 16.05.2014
comment
Проблема в том, что ActorWorld world = new ActorWorld(); затеняет ваш private static pokeGrid world = new pokeGrid();, поэтому вы работаете и показываете на немодифицированном ActorWorld.   -  person nobody    schedule 16.05.2014
comment
@AndrewMedico Это сработало, спасибо, может быть, если оно снова откроется, вы сможете опубликовать его в качестве ответа.   -  person Adamc23    schedule 16.05.2014


Ответы (1)


private static pokeGrid world = new pokeGrid();

public static void main(String[] args)
{
    ActorWorld world = new ActorWorld();

    ...
}

Проблема здесь в том, что переменная world базового типа ActorWorld, объявленная в main, затеняет вашу переменную-член pokeGrid world. Таким образом, последующие вызовы метода world работают с типом мира по умолчанию, а не с настроенным вами.

Чтобы исправить это, удалите объявление ActorWorld world = ... из main. После этого вызовы методов будут работать с вашим настроенным классом.

person nobody    schedule 16.05.2014