Applet de Java - ArrayIndexOutOfBoundsException (pt 2)
-
05-10-2019 - |
Pregunta
Me fijo mi problema anterior. Pero ahora, cuando en mi mapa de baldosas ... si trato de ir 9 azulejos a la derecha, y en tratar de llegar a la novena baldosas .... voy a conseguir este error:
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)
Aquí está el código: http://www.so.pastebin.com/hYkpQf13
He intentado muchas soluciones, todas las cuales han fracasado.
Solución
Creo que el problema es que mezclar las coordenadas. Se utiliza X como de izquierda a derecha de coordenadas e Y como el arriba-abajo , cuando debería ser al revés (o que debe reflejar su tablero).
Al ir a la derecha, se incrementa X, y en su tablero, que significa en la práctica que se mueven una fila por . Dado que la placa tiene 8 filas, el 9 de movimiento que lleva fuera de límites.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow