2010-05-31 8 views
0

이전 문제가 수정되었습니다. 하지만 지금은 오른쪽에, 그리고 9 타일에 도착하려고 노력하는 9 개 타일을 이동하려고하면 내 타일지도를 ... ... 나는이 오류가 발생합니다 때 :자바 애플릿 - ArrayIndexOutOfBoundsException (pt 2)

여기
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

나는 많은 해결책을 시도했지만 모두 실패했습니다.

+0

System.out.println()을 많이 보았습니다. 출력의 마지막 줄을 표시 할 수 있습니까? –

답변

1

좌표가 섞여있는 것이 문제라고 생각합니다. X를 왼쪽으로 오른쪽 좌표로 사용하고 Y를 위 아래로으로 사용하십시오. 반대 방향 일 때 (또는 보드를 대칭시켜야하는 경우). 바로가는시

, 당신은 X가 증가하고 보드에, 그 효과적으로 의미 당신이 아래로 한 행 이동합니다. 보드에 8 개의 행이 있으므로 9 번째 이동으로 범위를 벗어납니다.

+0

OH 예 !!! 나는 문제를 본다! :) 감사. 그것은 타이, 텍사스라고 가정합니다 : D – nn2

+0

또 다른 것은 ... 타일을 차단하는 더 좋은 방법이 있다고 생각합니까? 그렇게하면 그것은 단지 하나의 방법 일 뿐이고 간단 할 수 있습니까? – nn2

+0

@ 단, 지금 당장은 현명한 통찰력이 없습니다. 나는'blocked '를 그대로두면 코드가 더 읽기 쉽도록 만든다. OTOH 테스트 표현식은이 형식으로 나에게 더 간단하고 읽기 쉽게 보일 것입니다 :'if (! blocked (x1, y1))'- 그러나 이것은 사소한 문제입니다. –