Próbuję zrobić grę Tetris w języku Java.java: losowy blok tetris wygenerowany w wierszu wyczyść
Dostałam go do punktu, w którym:
nowy blok jest generowany, gdy upadnie na podłogę lub jej y + 1 nie jest null (co oznacza, że jest inny blok pod nią)
public void collisionCheck(int x, int y) { if (activetile.getY() == this.height-2 || getTileAt(x, y+1) != null) { activetile = new Tile(this, 0, 0); } }
wiersz usuwa gdy dolny rząd jest pełna wartość niż zero lub kawałki Tetris (na y = 4 (podłoże) w pętli x aż x = 4 i sprawdzić, czy wszystko nie jest pusta)
public void checkBottomFull(int x, int y) { while (getTileAt(x,y) != null) { say("(" + x + ", " + y +")"); if (x == 3) { say("row is full"); //replace full row with tiles from above for (int i = 0; i < 4; i++) { for (int j = 5; j > 0; j--) { grid[j][i] = getTileAt(i,j-1); grid[j-1][i] = null; } } break; } x++; } }
Teraz używam klawiszy, aby przenieść blok:
public void keyPressed(KeyEvent e) {
int keyCode = e.getKeyCode();
if(keyCode == KeyEvent.VK_DOWN) {
activetile.setLocation(activetile.getX(), activetile.getY()+1);
System.out.println("coordinates: " + activetile.getX() + ", " + activetile.getY());
collisionCheck(activetile.getX(),activetile.getY());
checkBottomFull(0,4);
repaint();
}
}
Są dwie kwestie Mam:
1) w obrazie zauważysz Zrzuciłem blok na całą podłogę ... i rząd się wyjaśnił. Po wyczyszczeniu wygeneruje blok w lewym górnym rogu (x = 0, y = 1), nad którym nie mam kontroli.
2) Na podłodze wydaje się być czerwona linia ... która, jak zakładam, to rząd bloków ukrytych przez JFrame ... Nie jestem pewien, dlaczego tak jest.
FYI: Jeśli zastanawiasz się, dlaczego siatkę [j] [i] zawiera wiersze i kolumny przerzucony (aka, dlaczego to nie jest grid [i] [j]), to dlatego, że instancja go jako grid = new Tile[height][width];
Jakieś myśli?
Dzięki!