1 / 27

V11

V11. Auflösen der Formen und Abräumen der Reihen. Zwei neue Methoden ___________________________________. class ultris { private: … void aufloesen () ; void aufruecken () ; … };. aufloesen () ___________________________________. void ultris :: aufloesen () { int z, s;

kim-sherman
Download Presentation

V11

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. V11 Auflösen der Formen und Abräumen der Reihen

  2. Zwei neue Methoden___________________________________ classultris { private: … voidaufloesen(); voidaufruecken(); … }; Claudia Langer

  3. aufloesen()___________________________________ voidultris::aufloesen() { int z, s; intzz, ss; for( z = 0; z < aktuelle_form()->h; z++) { zz = zeile+z; if((zz >=0) && (zz<20)) { for( s = 0; s < aktuelle_form()->b; s++) { ss = spalte + s; if( aktuelle_form()->data[z][s] && (ss>=0) && (ss<10)) { spielfeld[zz][ss] = 1; fuellstand[zz]++; }}}}} Claudia Langer

  4. aufloesen() - 1___________________________________ voidultris::aufloesen() { int z, s; intzz, ss; ... Zähler der Zeilen und Spalten der aktuellen Form Zähler der Zeilen ab der Position der aktuellen Form Claudia Langer

  5. aufloesen()___________________________________ voidultris::aufloesen() { int z, s; intzz, ss; for( z = 0; z < aktuelle_form()->h; z++) { zz = zeile+z; if((zz >=0) && (zz<20)) { for( s = 0; s < aktuelle_form()->b; s++) { ss = spalte + s; if( aktuelle_form()->data[z][s] && (ss>=0) && (ss<10)) { spielfeld[zz][ss] = 1; fuellstand[zz]++; }}}}} Claudia Langer

  6. aufloesen() - 2___________________________________ ... for( z = 0; z < aktuelle_form()->h; z++) { zz = zeile+z; if((zz >=0) && (zz<20)) { for( s = 0; s < aktuelle_form()->b; s++) { ss = spalte + s; ... aktuelle Form wird von oben nach unten und von links nach rechts durchlaufen Claudia Langer

  7. aufloesen() – 2___________________________________ ... for( z = 0; z < aktuelle_form()->h; z++) { zz = zeile+z; if((zz >=0) && (zz<20)) { for( s = 0; s < aktuelle_form()->b; s++) { ss = spalte + s; ... Die Form muss innerhalb des Spielfelds liegen Claudia Langer

  8. aufloesen()___________________________________ voidultris::aufloesen() { int z, s; intzz, ss; for( z = 0; z < aktuelle_form()->h; z++) { zz = zeile+z; if((zz >=0) && (zz<20)) { for( s = 0; s < aktuelle_form()->b; s++) { ss = spalte + s; if( aktuelle_form()->data[z][s] && (ss>=0) && (ss<10)) { spielfeld[zz][ss] = 1; fuellstand[zz]++; }}}}} Claudia Langer

  9. aufloesen() - 3___________________________________ ... if( aktuelle_form()->data[z][s] && (ss>=0) && (ss<10)) { spielfeld[zz][ss] = 1; fuellstand[zz]++; }}}}} Wenn im data-Array in der Zeile und Spalte der aktuellen Form Werte vorliegen… (und die Form innerhalb des Spielfeldes liegt) Claudia Langer

  10. aufloesen() – 3___________________________________ ... if( aktuelle_form()->data[z][s]&& (ss>=0) && (ss<10)) { spielfeld[zz][ss] = 1; fuellstand[zz]++; }}}}} …wird ein Feldstein an dieser Position im Spielfeld angelegt… Wenn im data-Array in der Zeile und Spalte der aktuellen Form Werte vorliegen… (und die Form innerhalb des Spielfeldes liegt) …und der Füllstand in dieser Zeile um 1 erhöht. Claudia Langer

  11. aufruecken()___________________________________ voidultris::aufruecken() { intzz, 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--; } … Claudia Langer

  12. 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 Claudia Langer

  13. aufruecken()___________________________________ voidultris::aufruecken() { intzz, 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--; } … Claudia Langer

  14. 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 Claudia Langer

  15. aufruecken() - 2___________________________________ ... for( z = 19, a = 0; z >= 0; ) { if( fuellstand[z] == 10) { a++; punktestand += speed; speed+= 5; ... …wird die Zahl der abgeräumten Reihen, der Punktestand und die Geschwindigkeit erhöht. (Geschwindigkeit und Punktestand sind proportional) Wenn die Zeile voll ist… Claudia Langer

  16. aufruecken()___________________________________ voidultris::aufruecken() { intzz, 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--; } … Claudia Langer

  17. 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 Claudia Langer

  18. 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]; } ... Zudem muss auch der Füllstand aktualisiert werden. (untere Zeile bekommt Wert der oberen) Die untere Zeile wird durch die obere ersetzt. Claudia Langer

  19. aufruecken()___________________________________ voidultris::aufruecken() { intzz, 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--; } … Claudia Langer

  20. 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) Claudia Langer

  21. aufruecken()___________________________________ voidultris::aufruecken() { intzz, 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--; } … Claudia Langer

  22. aufruecken() - 5___________________________________ ... if( fuellstand[z] == 10) {...} else z--; } ... Wenn die betrachtete Zeile nicht voll ist, gehen wir eine Zeile höher. Claudia Langer

  23. aufruecken()___________________________________ voidultris::aufruecken() { intzz, 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); } Claudia Langer

  24. 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. Claudia Langer

  25. Modifikation von onestep()___________________________________ 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; } ... } } Claudia Langer

  26. Claudia Langer

  27. Fragen??? Claudia Langer

More Related