v11 auflösen der formen und abräumen der reihen. zwei neue methoden...
TRANSCRIPT
![Page 1: V11 Auflösen der Formen und Abräumen der Reihen. Zwei neue Methoden ___________________________________ class ultris { private: … void aufloesen(); void](https://reader035.vdokument.com/reader035/viewer/2022062512/55204d6349795902118b93c3/html5/thumbnails/1.jpg)
V11 Auflösen der Formen und Abräumen der Reihen
![Page 2: V11 Auflösen der Formen und Abräumen der Reihen. Zwei neue Methoden ___________________________________ class ultris { private: … void aufloesen(); void](https://reader035.vdokument.com/reader035/viewer/2022062512/55204d6349795902118b93c3/html5/thumbnails/2.jpg)
Zwei neue Methoden___________________________________
class ultris
{
private:
…
void aufloesen();
void aufruecken();
…
};
12.11.2009 Claudia Langer
![Page 3: V11 Auflösen der Formen und Abräumen der Reihen. Zwei neue Methoden ___________________________________ class ultris { private: … void aufloesen(); void](https://reader035.vdokument.com/reader035/viewer/2022062512/55204d6349795902118b93c3/html5/thumbnails/3.jpg)
void ultris::aufloesen()
{
int z, s;
int zz, 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]++;
}}}}}
12.11.2009 Claudia Langer
aufloesen()___________________________________
![Page 4: V11 Auflösen der Formen und Abräumen der Reihen. Zwei neue Methoden ___________________________________ class ultris { private: … void aufloesen(); void](https://reader035.vdokument.com/reader035/viewer/2022062512/55204d6349795902118b93c3/html5/thumbnails/4.jpg)
void ultris::aufloesen(){int z, s;int zz, ss;...
12.11.2009 Claudia Langer
aufloesen() - 1___________________________________
Zähler der Zeilen und Spalten der aktuellen Form
Zähler der Zeilen ab der Position der aktuellen Form
![Page 5: V11 Auflösen der Formen und Abräumen der Reihen. Zwei neue Methoden ___________________________________ class ultris { private: … void aufloesen(); void](https://reader035.vdokument.com/reader035/viewer/2022062512/55204d6349795902118b93c3/html5/thumbnails/5.jpg)
void ultris::aufloesen()
{
int z, s;
int zz, 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]++;
}}}}}
12.11.2009 Claudia Langer
aufloesen()___________________________________
![Page 6: V11 Auflösen der Formen und Abräumen der Reihen. Zwei neue Methoden ___________________________________ class ultris { private: … void aufloesen(); void](https://reader035.vdokument.com/reader035/viewer/2022062512/55204d6349795902118b93c3/html5/thumbnails/6.jpg)
...
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;
...
12.11.2009 Claudia Langer
aufloesen() - 2___________________________________
aktuelle Form wird von oben nach unten und von linksnach rechts durchlaufen
![Page 7: V11 Auflösen der Formen und Abräumen der Reihen. Zwei neue Methoden ___________________________________ class ultris { private: … void aufloesen(); void](https://reader035.vdokument.com/reader035/viewer/2022062512/55204d6349795902118b93c3/html5/thumbnails/7.jpg)
...
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;
...
12.11.2009 Claudia Langer
aufloesen() – 2___________________________________
Die Form muss innerhalb des Spielfelds liegen
![Page 8: V11 Auflösen der Formen und Abräumen der Reihen. Zwei neue Methoden ___________________________________ class ultris { private: … void aufloesen(); void](https://reader035.vdokument.com/reader035/viewer/2022062512/55204d6349795902118b93c3/html5/thumbnails/8.jpg)
void ultris::aufloesen()
{
int z, s;
int zz, 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]++;
}}}}}
12.11.2009 Claudia Langer
aufloesen()___________________________________
![Page 9: V11 Auflösen der Formen und Abräumen der Reihen. Zwei neue Methoden ___________________________________ class ultris { private: … void aufloesen(); void](https://reader035.vdokument.com/reader035/viewer/2022062512/55204d6349795902118b93c3/html5/thumbnails/9.jpg)
...
if( aktuelle_form()->data[z][s] && (ss>=0) && (ss<10))
{
spielfeld[zz][ss] = 1;
fuellstand[zz]++;
}}}}}
12.11.2009 Claudia Langer
aufloesen() - 3___________________________________
Wenn im data-Array in der Zeile und Spalte der aktuellen Form Werte vorliegen…(und die Form innerhalb des Spielfeldes liegt)
![Page 10: V11 Auflösen der Formen und Abräumen der Reihen. Zwei neue Methoden ___________________________________ class ultris { private: … void aufloesen(); void](https://reader035.vdokument.com/reader035/viewer/2022062512/55204d6349795902118b93c3/html5/thumbnails/10.jpg)
...
if( aktuelle_form()->data[z][s] && (ss>=0) && (ss<10))
{
spielfeld[zz][ss] = 1;
fuellstand[zz]++;
}}}}}
12.11.2009 Claudia 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)
![Page 11: V11 Auflösen der Formen und Abräumen der Reihen. Zwei neue Methoden ___________________________________ class ultris { private: … void aufloesen(); void](https://reader035.vdokument.com/reader035/viewer/2022062512/55204d6349795902118b93c3/html5/thumbnails/11.jpg)
12.11.2009 Claudia 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--;
} …
![Page 12: V11 Auflösen der Formen und Abräumen der Reihen. Zwei neue Methoden ___________________________________ class ultris { private: … void aufloesen(); void](https://reader035.vdokument.com/reader035/viewer/2022062512/55204d6349795902118b93c3/html5/thumbnails/12.jpg)
12.11.2009 Claudia 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
![Page 13: V11 Auflösen der Formen und Abräumen der Reihen. Zwei neue Methoden ___________________________________ class ultris { private: … void aufloesen(); void](https://reader035.vdokument.com/reader035/viewer/2022062512/55204d6349795902118b93c3/html5/thumbnails/13.jpg)
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.2009 Claudia Langer
aufruecken()___________________________________
![Page 14: V11 Auflösen der Formen und Abräumen der Reihen. Zwei neue Methoden ___________________________________ class ultris { private: … void aufloesen(); void](https://reader035.vdokument.com/reader035/viewer/2022062512/55204d6349795902118b93c3/html5/thumbnails/14.jpg)
12.11.2009 Claudia Langer
aufruecken() - 2___________________________________...for( z = 19, a = 0; z >= 0; )
{if( fuellstand[z] == 10)
{a++;punktestand += speed;speed += 5;...
Zeilen werden von unten nachoben durchlaufen
![Page 15: V11 Auflösen der Formen und Abräumen der Reihen. Zwei neue Methoden ___________________________________ class ultris { private: … void aufloesen(); void](https://reader035.vdokument.com/reader035/viewer/2022062512/55204d6349795902118b93c3/html5/thumbnails/15.jpg)
12.11.2009 Claudia 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)
![Page 16: V11 Auflösen der Formen und Abräumen der Reihen. Zwei neue Methoden ___________________________________ class ultris { private: … void aufloesen(); void](https://reader035.vdokument.com/reader035/viewer/2022062512/55204d6349795902118b93c3/html5/thumbnails/16.jpg)
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.2009 Claudia Langer
aufruecken()___________________________________
![Page 17: V11 Auflösen der Formen und Abräumen der Reihen. Zwei neue Methoden ___________________________________ class ultris { private: … void aufloesen(); void](https://reader035.vdokument.com/reader035/viewer/2022062512/55204d6349795902118b93c3/html5/thumbnails/17.jpg)
12.11.2009 Claudia 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
![Page 18: V11 Auflösen der Formen und Abräumen der Reihen. Zwei neue Methoden ___________________________________ class ultris { private: … void aufloesen(); void](https://reader035.vdokument.com/reader035/viewer/2022062512/55204d6349795902118b93c3/html5/thumbnails/18.jpg)
12.11.2009 Claudia 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üllstandaktualisiert werden.(untere Zeile bekommt Wert der oberen)
![Page 19: V11 Auflösen der Formen und Abräumen der Reihen. Zwei neue Methoden ___________________________________ class ultris { private: … void aufloesen(); void](https://reader035.vdokument.com/reader035/viewer/2022062512/55204d6349795902118b93c3/html5/thumbnails/19.jpg)
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.2009 Claudia Langer
aufruecken()___________________________________
![Page 20: V11 Auflösen der Formen und Abräumen der Reihen. Zwei neue Methoden ___________________________________ class ultris { private: … void aufloesen(); void](https://reader035.vdokument.com/reader035/viewer/2022062512/55204d6349795902118b93c3/html5/thumbnails/20.jpg)
12.11.2009 Claudia 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)
![Page 21: V11 Auflösen der Formen und Abräumen der Reihen. Zwei neue Methoden ___________________________________ class ultris { private: … void aufloesen(); void](https://reader035.vdokument.com/reader035/viewer/2022062512/55204d6349795902118b93c3/html5/thumbnails/21.jpg)
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.2009 Claudia Langer
aufruecken()___________________________________
![Page 22: V11 Auflösen der Formen und Abräumen der Reihen. Zwei neue Methoden ___________________________________ class ultris { private: … void aufloesen(); void](https://reader035.vdokument.com/reader035/viewer/2022062512/55204d6349795902118b93c3/html5/thumbnails/22.jpg)
12.11.2009 Claudia Langer
aufruecken() - 5___________________________________...if( fuellstand[z] == 10)
{...}else
z--;}...
Wenn die betrachtete Zeile nicht voll ist,gehen wir eine Zeile höher.
![Page 23: V11 Auflösen der Formen und Abräumen der Reihen. Zwei neue Methoden ___________________________________ class ultris { private: … void aufloesen(); void](https://reader035.vdokument.com/reader035/viewer/2022062512/55204d6349795902118b93c3/html5/thumbnails/23.jpg)
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.2009 Claudia Langer
aufruecken()___________________________________
![Page 24: V11 Auflösen der Formen und Abräumen der Reihen. Zwei neue Methoden ___________________________________ class ultris { private: … void aufloesen(); void](https://reader035.vdokument.com/reader035/viewer/2022062512/55204d6349795902118b93c3/html5/thumbnails/24.jpg)
12.11.2009 Claudia 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ührunggespielt wird.
![Page 25: V11 Auflösen der Formen und Abräumen der Reihen. Zwei neue Methoden ___________________________________ class ultris { private: … void aufloesen(); void](https://reader035.vdokument.com/reader035/viewer/2022062512/55204d6349795902118b93c3/html5/thumbnails/25.jpg)
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.2009 Claudia Langer
Modifikation von onestep()___________________________________
![Page 26: V11 Auflösen der Formen und Abräumen der Reihen. Zwei neue Methoden ___________________________________ class ultris { private: … void aufloesen(); void](https://reader035.vdokument.com/reader035/viewer/2022062512/55204d6349795902118b93c3/html5/thumbnails/26.jpg)
12.11.2009 Claudia Langer
![Page 27: V11 Auflösen der Formen und Abräumen der Reihen. Zwei neue Methoden ___________________________________ class ultris { private: … void aufloesen(); void](https://reader035.vdokument.com/reader035/viewer/2022062512/55204d6349795902118b93c3/html5/thumbnails/27.jpg)
Fragen???
12.11.2009 Claudia Langer