Ich schreibe gerade ein Tetris in C++ und ich bin auf der letzten Stufe, ich muss eine Zeile löschen, wenn es voll ist. Sobald ein Stück fällt, wird es in einem booleschen Array gespeichert Gitter [20] [10]. Zum Beispiel ich heraus, welche Zeile voll ist (oder wahre), wenn es nenne ich eine Methode deleteRow, wo n eine Anzahl von Zeilen ist:Tetris verschieben 2D-Array
void Grid::deleteRow(int n)
{
for (j = 0; j < WIDTH; j++)
{
grid[n][j] = false;
}
}
Sobald die Zeile gelöscht wird Ich nenne eine Methode moveRowDown:
void Grid::moveRowDown()
{
for (i = 0; i < HEIGHT; i++)
{
for (j = 0; j < WIDTH; j++)
{
grid[i+1][j]=grid[i][j];
}
}
}
So funktioniert diese Methode nicht, und alle Teile verschwinden. Ich weiß, dass mir die Logik fehlt. Danke für die Hilfe im Voraus!
Es funktioniert! Ich verstehe die Logik jetzt! Vielen Dank für Ihre Zeit! Vielen Dank! –
Betrachten Sie auch einen ['std :: vector'] (http://en.cppreference.com/w/cpp/container/vector) von Zeilen anstelle eines 2D-Arrays. Vektor macht praktisch die ganze Arbeit für Sie. – user4581301