50 likes | 200 Views
V11. Auflösen der Formen Abräumen der Reihen. Erweiterung der Klasse ultris. class ultris { private: … void aufloesen() void aufruecken() public: … }. 10 . Wenn eine Form den Boden erreicht, wird sie auf die Spielfeldmatrix projeziert
E N D
V11 Auflösen der Formen Abräumen der Reihen
Erweiterung der Klasse ultris class ultris { private: … void aufloesen() void aufruecken() public: … }
10 • Wenn eine Form den Boden erreicht, wird sie auf die Spielfeldmatrix projeziert • Jede Form wird in ihre Einzelbausteine „aufgelöst“ (void ultris::aufloesen()) • Die Spielfeldmatrix merkt sich, an welchen Stellen sich Bausteine befinden • Insbesondere stellt die Spielfeldmatrix fest, ob eine Reihe vollständig ist • Vollständige Reihen werden „abgeräumt“ und die Reihen darüber „aufgerückt“ (void ultris::aufruecken()) Spielfeld 20
void ultris::aufloesen() { int zz, ss; // Position in der Matrix des Spielfelds for ( int z = 0; z < aktuelle_form()->h; z++ ) // Form wird „steinweise“ durchwandert { zz = zeile + z; // Position des nten Steins in der Matrix wird bestimmt (Zeile) for ( int s = 0; s < aktuelle_form()->b; s++ ) { ss = spalte + s; // die Position des nten Steins wird bestimmt (Spalte) if ( aktuelle->form()->data[z][s] ) { spielfeld[zz][ss] = 1; // Wenn Stein Position im Spielfeld wird markiert fuellstand[zz]++; // und der Füllstandzähler der Reihe wird erhöht } }
void ultris::aufruecken() { for ( int z = 19, int a = 0; z >= 0; ) { if ( fuellstand[z] == 10 ) { for ( zz = z -1; zz >= 0; zz-- ) { for ( s= 0; s < 10; s++ ) { spielfeld[zz+1][s] = spielfeld[zz][s]; fuellstand[zz+1] = fuellstand[zz]; } } } else zz--; } }