Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Morency Heitmeyer Geändert vor über 11 Jahren
1
V11 Auflösen der Formen und Abräumen der Reihen
2
Zwei neue Methoden ___________________________________ class ultris { private: … void aufloesen(); void aufruecken(); … }; 12.11.2009Claudia Langer
3
void ultris::aufloesen() { int z, s; int zz, ss; for( z = 0; z h; z++) { zz = zeile+z; if((zz >=0) && (zz<20)) { for( s = 0; s b; s++) { ss = spalte + s; if( aktuelle_form()->data[z][s] && (ss>=0) && (ss<10)) { spielfeld[zz][ss] = 1; fuellstand[zz]++; }}}}} 12.11.2009Claudia Langer aufloesen() ___________________________________
4
void ultris::aufloesen() { int z, s; int zz, ss;... 12.11.2009Claudia Langer aufloesen() - 1 ___________________________________ Zähler der Zeilen und Spalten der aktuellen Form Zähler der Zeilen ab der Position der aktuellen Form
5
void ultris::aufloesen() { int z, s; int zz, ss; for( z = 0; z h; z++) { zz = zeile+z; if((zz >=0) && (zz<20)) { for( s = 0; s b; s++) { ss = spalte + s; if( aktuelle_form()->data[z][s] && (ss>=0) && (ss<10)) { spielfeld[zz][ss] = 1; fuellstand[zz]++; }}}}} 12.11.2009Claudia Langer aufloesen() ___________________________________
6
... for( z = 0; z h; z++) { zz = zeile+z; if((zz >=0) && (zz<20)) { for( s = 0; s b; s++) { ss = spalte + s;... 12.11.2009Claudia Langer aufloesen() - 2 ___________________________________ aktuelle Form wird von oben nach unten und von links nach rechts durchlaufen
7
... for( z = 0; z h; z++) { zz = zeile+z; if((zz >=0) && (zz<20)) { for( s = 0; s b; s++) { ss = spalte + s;... 12.11.2009Claudia Langer aufloesen() – 2 ___________________________________ Die Form muss innerhalb des Spielfelds liegen
8
void ultris::aufloesen() { int z, s; int zz, ss; for( z = 0; z h; z++) { zz = zeile+z; if((zz >=0) && (zz<20)) { for( s = 0; s b; s++) { ss = spalte + s; if( aktuelle_form()->data[z][s] && (ss>=0) && (ss<10)) { spielfeld[zz][ss] = 1; fuellstand[zz]++; }}}}} 12.11.2009Claudia Langer aufloesen() ___________________________________
9
... if( aktuelle_form()->data[z][s] && (ss>=0) && (ss<10)) { spielfeld[zz][ss] = 1; fuellstand[zz]++; }}}}} 12.11.2009Claudia Langer aufloesen() - 3 ___________________________________ Wenn im data-Array in der Zeile und Spalte der aktuellen Form Werte vorliegen… (und die Form innerhalb des Spielfeldes liegt)
10
... if( aktuelle_form()->data[z][s] && (ss>=0) && (ss<10)) { spielfeld[zz][ss] = 1; fuellstand[zz]++; }}}}} 12.11.2009Claudia Langer aufloesen() – 3 ___________________________________ …wird ein Feldstein an dieser Position im Spielfeld angelegt… …und der Füllstand in dieser Zeile um 1 erhöht. Wenn im data-Array in der Zeile und Spalte der aktuellen Form Werte vorliegen… (und die Form innerhalb des Spielfeldes liegt)
11
12.11.2009Claudia Langer aufruecken() ___________________________________ void ultris::aufruecken() { int zz, z, s; int a; for( z = 19, a = 0; z >= 0; ) { if( fuellstand[z] == 10) { a++; punktestand += speed; speed += 5; 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]; } for( s = 0; s < 10; s++) spielfeld[0][s] = 0; fuellstand[0] = 0; } else z--; } …
12
12.11.2009Claudia Langer aufruecken() - 1 ___________________________________ void ultris::aufruecken() { int zz, z, s; int a;... Zeilen und Spalten des Spielfeldes Zeilen unterhalb der Zeile der aktuellen Form Zähler der abgeräumten Reihen
13
void ultris::aufruecken() { int zz, z, s; int a; for( z = 19, a = 0; z >= 0; ) { if( fuellstand[z] == 10) { a++; punktestand += speed; speed += 5; 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]; } for( s = 0; s < 10; s++) spielfeld[0][s] = 0; fuellstand[0] = 0; } else z--; } … 12.11.2009Claudia Langer aufruecken() ___________________________________
14
12.11.2009Claudia Langer aufruecken() - 2 ___________________________________... for( z = 19, a = 0; z >= 0; ) { if( fuellstand[z] == 10) { a++; punktestand += speed; speed += 5;... Zeilen werden von unten nach oben durchlaufen
15
12.11.2009Claudia Langer aufruecken() - 2 ___________________________________... for( z = 19, a = 0; z >= 0; ) { if( fuellstand[z] == 10) { a++; punktestand += speed; speed += 5;... Wenn die Zeile voll ist… …wird die Zahl der abgeräumten Reihen, der Punktestand und die Geschwindigkeit erhöht. (Geschwindigkeit und Punktestand sind proportional)
16
void ultris::aufruecken() { int zz, z, s; int a; for( z = 19, a = 0; z >= 0; ) { if( fuellstand[z] == 10) { a++; punktestand += speed; speed += 5; 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]; } for( s = 0; s < 10; s++) spielfeld[0][s] = 0; fuellstand[0] = 0; } else z--; } … 12.11.2009Claudia Langer aufruecken() ___________________________________
17
12.11.2009Claudia Langer aufruecken() - 3 ___________________________________... 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]; }... Alle Zeilen oberhalb der aktuellen Zeile werden durchlaufen
18
12.11.2009Claudia Langer aufruecken() - 3 ___________________________________... 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]; }... Die untere Zeile wird durch die obere ersetzt. Zudem muss auch der Füllstand aktualisiert werden. (untere Zeile bekommt Wert der oberen)
19
void ultris::aufruecken() { int zz, z, s; int a; for( z = 19, a = 0; z >= 0; ) { if( fuellstand[z] == 10) { a++; punktestand += speed; speed += 5; 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]; } for( s = 0; s < 10; s++) spielfeld[0][s] = 0; fuellstand[0] = 0; } else z--; } … 12.11.2009Claudia Langer aufruecken() ___________________________________
20
12.11.2009Claudia Langer aufruecken() - 4 ___________________________________... for( s = 0; s < 10; s++) spielfeld[0][s] = 0; fuellstand[0] = 0; }... Außerdem muss noch die oberste Zeile frei gemacht werden. (alle Spalten werden bei Zeile 0 durchlaufen, der Füllstand wird auf 0 gesetzt)
21
void ultris::aufruecken() { int zz, z, s; int a; for( z = 19, a = 0; z >= 0; ) { if( fuellstand[z] == 10) { a++; punktestand += speed; speed += 5; 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]; } for( s = 0; s < 10; s++) spielfeld[0][s] = 0; fuellstand[0] = 0; } else z--; } … 12.11.2009Claudia Langer aufruecken() ___________________________________
22
12.11.2009Claudia Langer aufruecken() - 5 ___________________________________... if( fuellstand[z] == 10) {...} else z--; }... Wenn die betrachtete Zeile nicht voll ist, gehen wir eine Zeile höher.
23
void ultris::aufruecken() { int zz, z, s; int a; for( z = 19, a = 0; z >= 0; ) { if( fuellstand[z] == 10) { a++; punktestand += speed; speed += 5; 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]; } for( s = 0; s < 10; s++) spielfeld[0][s] = 0; fuellstand[0] = 0; } else z--; } if( a == 0) ultris_sounds.play( sound_down); else if( a == 1) ultris_sounds.play( sound_row1); else ultris_sounds.play( sound_row2); } 12.11.2009Claudia Langer aufruecken() ___________________________________
24
12.11.2009Claudia Langer aufruecken() – 6 ___________________________________... if( a == 0) ultris_sounds.play( sound_down); else if( a == 1) ultris_sounds.play( sound_row1); else ultris_sounds.play( sound_row2); }... Die Anzahl der abgeräumten Reihen, bestimmt den Sound, der bei Ausführung gespielt wird.
25
int ultris::onestep() { if( offset) {...} else { if( blockiert()) { aufloesen(); aufruecken(); spiel_laeuft = (zeile >= 0); if( spiel_laeuft) neue_form(); else { zeige_dyn = 0; display(); ultris_sounds.play( sound_ende); } return 0; }... } 12.11.2009Claudia Langer Modifikation von onestep() ___________________________________
26
12.11.2009Claudia Langer
27
Fragen??? 12.11.2009Claudia Langer
Ähnliche Präsentationen
© 2025 SlidePlayer.org Inc.
All rights reserved.