저는 안드로이드 용 게임 프로그래밍을 배우기 위해 안드로이드 용 테트리스 게임을 만들려고합니다. 내 goLeft/권리는 버튼을 누를 때 오른쪽 나누기, 왼쪽으로가는 코드는 필드 int 배열과 목록 부분 배열로 구분 된 클래스에 있습니다. 필드 배열은 참조 된 변수 (TetrisWorld tetrisworld;)에 의해 액세스됩니다. 파트 목록 배열은 public이므로 이렇게 goLeft() 코드에있는 변수 (부분) 코드를 통해 액세스합니다. 이는 고장시 : 왼쪽위한 경우 (! tetrisworld.fields는 [X] [part.y] = 0) 코드 :테트리스, 안드로이드/자바에 대한 int 배열에서 왼쪽/오른쪽을 확인하십시오.
public void goLeft() {
int x = 0;
for(int i = 0; i < 4; i++) {
TetrisParts part = parts.get(i);
x = part.x - 1;
if(tetrisworld.fields[x][part.y] != 0) {
noleft = true;
break;
}
}
if(noleft == false) {
for(int i = 0; i < 4; i++) {
TetrisParts part = parts.get(i);
part.x--;
}
}
}
필드의 int 배열하는 코드 :
int fields[][] = new int[WORLD_WIDTH][WORLD_HEIGHT];
WORLD_WIDTH 및 WORLD_HEIGHT 너비가 9이고 높이가 19 인 정적 최종 정수입니다.
if (tetrisworld.fields [0] [0] == 0) 퍼팅을 시도했는데 충돌이 발생하여 생각하지 않습니다. 변수들로 처리하십시오. 또한 x = 5 주위에 산란하는 teroid가 있기 때문에 코드를 추가하지 않아도 코드가 추가되지 않더라도 왼쪽/오른쪽으로 갈 수 없기 때문에 바깥으로 나가지 않습니다. 일어났습니다
나는 "world = TetrisWorld();"가있는 gamescreen 클래스로 goLeft/Right 메소드를 옮겨 보았습니다. 그리고 여전히 같은 자리
UPDATE에서 버그 아웃 :
좋아 단지 추가 : 첫 번째로
tetrisworld != null
문은, 내 질문에 지금, 왜 그것을 해결 되었습니까 고정하면? 왜이 수표없이 이동할 수 없습니까? 분명히 내가 아는 바로는 null이 아닙니다. 지금은 완전히 반응합니다.
그러나 쉬운 방법은 정적에fields
을 변화 쉬운 SOOOO 인이 해결했다고 ... 그때는 리카에 액세스하는 것은 너무 :
TetrisWorld.fields
그래서 내 업데이트 된 코드는 다음과 같습니다 당신이 경우 IndexOutOfBoundsException를 치는 것 같은
public void goLeft()
{
noleft = false;
for (int i = 0; i < 4; i++)
{
part = parts.get(i);
if (part.x - 1 < 0 || TetrisWorld.fields[part.x - 1][part.y] != 0)
{
noleft = true;
break;
}
}
if (noleft == false)
{
for (int i = 0; i < 4; i++)
{
part = parts.get(i);
part.x--;
}
}
}
Java 프로그램이 거의 충돌하지 않습니다. 대부분의 경우 유형, 메시지 및 스택 추적을 사용하여 예외가 발생합니다. 그들을 읽고, 당신이 그들을 이해할 수없는 경우에 게시하십시오. –
'tetrisworld'의 값은 어떻게 설정하고 있습니까? –
초보자를위한 게임? 어, 오, 그게 문제를 비명 지어. 그런 일을하기 전에 안드로이드의 기초를 배워야합니다. 게임은 내 경험으로 프로그램하기가 더 어려운 것 중 하나입니다. – JoxTraex