Java-апплет - ArrayIndexOutOfBoundsException (часть 2) - PullRequest
0 голосов
/ 01 июня 2010

Я исправил свою предыдущую проблему. Но теперь, когда на моей карте тайлов ... если я попытаюсь перейти на 9 тайлов к ПРАВО, и при попытке добраться до 9-го тайла .... я получу эту ошибку:

Exception in thread "AWT-EventQueue-1" java.lang.ArrayIndexOutOfBoundsException: 8
    at tileGen.blocked(tileGen.java:125)
    at tileGen.keyPressed(tileGen.java:58)
    at java.awt.Component.processKeyEvent(Component.java:6221)
    at java.awt.Component.processEvent(Component.java:6040)
    at java.awt.Container.processEvent(Container.java:2041)
    at java.awt.Component.dispatchEventImpl(Component.java:4630)
    at java.awt.Container.dispatchEventImpl(Container.java:2099)
    at java.awt.Component.dispatchEvent(Component.java:4460)
    at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1850)
    at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:712)
    at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:990)
    at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:855)
    at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:676)
    at java.awt.Component.dispatchEventImpl(Component.java:4502)
    at java.awt.Container.dispatchEventImpl(Container.java:2099)
    at java.awt.Component.dispatchEvent(Component.java:4460)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

Вот код: http://www.so.pastebin.com/hYkpQf13

Я перепробовал много решений, но все они потерпели неудачу.

1 Ответ

1 голос
/ 01 июня 2010

Я думаю, проблема в том, что вы перепутали координаты. Вы используете X в качестве координаты влево-вправо и Y в качестве вверх-вниз , когда это должно быть наоборот (или вы должны отразить свою доску).

Пройдя направо, вы увеличиваете X и на своей доске это означает, что вы фактически перемещаетесь на один ряд вниз . Поскольку на доске 8 рядов, 9-й ход выводит вас за пределы.

...