Ich versuche, das Spiel Tetris in Java zu machen.Java: Tetris zufälliger Block erzeugt nach Zeile löschen
Ich habe es zu dem Punkt, wo:
ein neuer Block erzeugt wird, wenn er trifft den Boden oder seine y + 1 nicht null ist (was bedeutet, es gibt einen anderen Block unter ihm)
public void collisionCheck(int x, int y) { if (activetile.getY() == this.height-2 || getTileAt(x, y+1) != null) { activetile = new Tile(this, 0, 0); } }
Eine Zeile wird gelöscht, wenn die untere Zeile voll mit Werten ungleich Null ist, oder die Tetris-Teile (für y = 4 (der Boden), Schleife x bis x = 4 und prüfen, ob alle nicht null sind)
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++; } }
Gerade jetzt, ich bin Tasten um den Block zu bewegen:
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();
}
}
es zwei Probleme, das ich habe:
1) Auf dem Bild werden Sie feststellen, Ich habe den Block bis auf den Boden fallen lassen ... und die Reihe ist geklärt. Nach dem Löschen erzeugt es einen Block nach oben links (x = 0, y = 1), auf den ich keine Kontrolle habe.
2) Auf dem Boden scheint eine rote Linie zu sein ... was ich annehme ist eine Reihe von Blöcken, die vom JFrame versteckt sind ... Ich bin nicht sicher, warum das dort ist.
FYI: Wenn Sie sich fragen, warum grid [j] [i] hat die Zeilen und Spalten gespiegelt (aka, warum es nicht grid [i] [j]) ist, weil ich es instanziiert als grid = new Tile[height][width];
Irgendwelche Gedanken?
Danke!