0

我解决了我之前的问题。但是现在在我的瓦片地图上......如果我尝试向右移动 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

我尝试了很多解决方案,但都失败了。

4

1 回答 1

1

我相信问题是你混淆了坐标。你使用 X 作为左右坐标, Y 作为up-down,当它应该是相反的时候(或者你应该镜像你的板)。

向右移动时,你增加 X,在你的板上,这意味着你有效地向下移动了一行。由于棋盘有 8 行,第 9 步将带您出界。

于 2010-05-31T20:32:55.643 回答