gridworld помогают движущимся твари открыть место

1

Хорошо, поэтому у меня есть проект, связанный с информатикой, и мне нужна помощь в сетчатом мире. У меня есть код, написанный так, что я могу нажать на твитер, но я хочу щелкнуть на криттере один раз, а затем нажать на открытое пятно на сетке, чтобы переместить трэтер. Но это не сработает. Мне нужно заставить это работать, и я не знаю, что не так с моим кодом. Взглянуть. Спасибо за всю вашу помощь

Actor t;

public boolean locationClicked(Location loc)
{
    Grid<Actor> gr = getGrid();
    t = gr.get(loc);
    Actor j;
    //Location second;
    if (t != null) 
    { 
        setMessage("Click on " + t);
        numOfClicks++;
        if(t instanceof BlackCheckers || t instanceof RedCheckers)
        {

            if(numOfClicks==0)
            {
                secondClick(second);
            }

        }
    }
    else
    {            

        setMessage("Click on nothing");

    }      
    return true;   
}
Location second;
public void secondClick(Location second)
{
    this.second=second;
    Grid<Actor> op=getGrid();
    Actor te=op.get(second);
    if(te==null)
    {
        t.moveTo(second);
    }
}
Теги:
bluej
gridworld

1 ответ

0

Это выходит за рамки того, что я знаю о Gridworld, но я нашел кое-что, что могло бы помочь.


Как вы можете перехватывать клики мыши и нажатия клавиш

У World Class есть дружественные студентам механизмы для перехвата щелчков мышью и нажатия клавиш. Не требуется знание событий AWT.

Когда пользователь нажимает на местоположение сетки, вызывается метод locationClicked для World. По умолчанию этот метод возвращает false, который сообщает фреймворку инициировать действие по умолчанию, а именно перемещать квадрат выбора и отображать конструктор или меню методов.

Чтобы перехватить щелчок мыши, переопределите метод locationClicked. Выполните любое желаемое действие и верните true. Место сетки, на которое щелкнул пользователь, передается как параметр. Типичные действия включают перелистывание плит, заполнение пустых мест и т.д.

Иногда вам нужно запросить у пользователя дополнительную информацию после щелчка мышью. Самый простой способ - использовать JOptionPane.

Давайте рассмотрим общую ситуацию. В игре пользователь выбирает кусок. Вы хотите спросить, где пользователь хочет переместить кусок. Вы можете ждать другого щелчка мыши. Это означает, что ваш метод locationClicked должен отслеживать состояние щелчка (выбор фрагмента по сравнению с выбором цели). Или вы можете перечислить все правовые цели и вызвать JOptionPane.showOptionDialog.

Когда пользователь нажимает клавишу, keyPressed метод keyPressed для World. По умолчанию этот метод возвращает false, что указывает платформе инициировать действие ключа по умолчанию. Если пользователь нажал клавишу курсора, квадрат выбора перемещается. Если пользователь нажал клавишу Enter, отобразится меню конструктора или метода. Все остальные клавиши игнорируются.

Чтобы перехватить нажатие клавиши, переопределите метод keyPressed. Метод получает текущее местоположение и строку нажатия клавиши, закодированную в том же формате, который используется классом java.awt.KeyStroke. Пример строк нажатия клавиш: "INSERT" или "Alt shift X". Ваш метод keyPressed должен проверить строку нажатия клавиши. Если строка соответствует нажатию клавиши, которую вы хотите перехватить, выполните любое требуемое действие и верните true. Возвращает false для всех других нажатий клавиш. Это хорошая идея - вернуть false для клавиш курсора и клавиши Enter. В противном случае стандартные действия будут отключены для вашего мира.


Источник (стр. 16)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню