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

Slides:



Advertisements
Ähnliche Präsentationen
Klassen - Verkettete Liste -
Advertisements

VO2 Laden und Initialisieren der Sounds. Wir wollen Sounds in unsere Applikation laden Menü erweitern –um den Menüpunkt Sound –mit dem Identifier ID_ULTRIS_SOUND.
Ultris Version 8: Erzeugen der Formen und Anzeigen der Vorschau
Ultris V10 Bewegen, Drehen und Kollisionserkennung.
FOR Anweisung.
FOR Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (05 – Elementare Datenstrukturen) Prof. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 6 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
V10: Bewegen der Formen und Kollisionserkennung Steuerung der Spielsteine durch Tastenbefehle (Übersicht der Befehle unter der Hilfe)
V09 Fallende Formen, Geschwindigkeitsregelung und Timing Daniel Ebner Spieleprogrammierung mit DirectX und C++
Softwaretechnologie II WS 08/09 SpieleProgrammieren UlTris V07 Reihen vorbelegen, Spielfeld anzeigen und Punktestand ausrechnen Sibylle C. Schellhorn,
Vers. 6: Der Konfigurationsdialog Quelle: Spieleprogrammierung mit DirectX und C++, U. Kaiser und P. Lensing, Galileo Computing (2007)
Spieleprogrammierung mit DirectX und C++
V03 Laden und Speichern von Spielfeldern und der Spielfeldeditor.
V11 Auflösen der Formen Abräumen der Reihen. Erweiterung der Klasse ultris class ultris { private: … void aufloesen() void aufruecken() public: … }
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 7 Claudio Moraga, Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Diskrete Mathematik I Vorlesung 6 Binärer Suchbaum II.
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
Zusammenfassung Vorwoche
Einführung in die Programmierung Anweisungen und Datentypen
Thema: Fibonacci-Zahlen
Struktogramme IF-ELSE FOR – Schleife
3D Programmierung Version 12 - Highscores. Die vom Spieler erzielte Punktzahl wird mit 5 vorgegebenen Punktzahlen verglichen und, falls nötig, in die.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Einfach verkettete Listen
Einfach verkettete Listen (OOP)
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Grundkonzepte Java - Klassendefinition
Rekursive Funktionen (Fakultät)
Java programmieren mit JavaKara
Einführung in die Programmierung
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Die Zählschleife int s = 0 for (int k=1; k
Einführung in die Programmiersprache C 4
Informatik 1 Übung 4.
Vom Umgang mit Daten. public void myProgram() { int[] saeulenWerte = new int[world.getSizeX()]; for (int i = 0; i < saeulenWerte.length; i++) { saeulenWerte[i]
Die Grundidee Funktionsaufruf Funktionsname (Kopf) Code der Funktion
Aufruf einer Methode eines Objektes vom Typ „Bruch“
CuP - Java Neunte Vorlesung Entspricht Kapitel 4.2 und 5 des Skriptums
LEGO NXT Roboter in Java programmieren
Informatik Datenstruktur Graph 3.3 Durchlaufen von Graphen
Programmiervorkurs WS 2014/15 Methoden
Java-Kurs - 8. Übung Besprechung der Hausaufgabe.
early binding (frühe Bindung) late binding (späte Bindung)
© 2004 Pohlig Informatik Kurse © 2004 Pohlig Informatik Kurse Der Tramp tanzt die Rekursion zünderUntersuchen(…) Basisfall Rückmeldung:
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Programmierkurs JavaUE 4 Anweisungen und ProgrammeDietrich BolesSeite 1 Programmierkurs Java Dr. Dietrich Boles Teil Imperative Programmierung Unterrichtseinheit.
Institut für Kartographie und Geoinformation Diskrete Mathematik I Vorlesung Binärer Suchbaum I-
Funktionen. Aufgabe : Eingabe zweier Zahlen ---> Minimum bestimmen Dann nochmals Eingabe zweier Zahlen ---> Minimum bestimmen.
1 // Verkettete Liste 2 // demonstriert verkettete Listen und // Rekursion // (Einfügen am "Fuß") // #include struct Liste { int Element; Liste *weiter;
Controller Werkstatt updaten Werkstatt ws = werkstattarray.get(werkstattId); ws.setName(name); ws.setAnsprechpartner(ansprechpartner); ws.setTelefonnummer(telefonnummer);
Tutorium Software-Engineering SS14 Florian Manghofer.
JAVA lernen: Methoden.
Rekursion – Speicherverwaltung
Aufgaben zu Rückgabewerten
Wiederholungen mit Zähler
Felder in Java.
Kniffelergebnisse.
Cäsar-Verschlüsselung
Grundkurs Informatik mit Java
Schleifen mit der Turtle
Cäsar-Verschlüsselung
Grundkurs Informatik 11-13
Kara: act()-Methode.
Heapsort-Algorithmus
 Präsentation transkript:

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

Zwei neue Methoden ___________________________________ class ultris { private: … void aufloesen(); void aufruecken(); … }; Claudia Langer

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]++; }}}}} Claudia Langer aufloesen() ___________________________________

void ultris::aufloesen() { int z, s; int zz, ss; Claudia Langer aufloesen() - 1 ___________________________________ Zähler der Zeilen und Spalten der aktuellen Form Zähler der Zeilen ab der Position der aktuellen Form

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]++; }}}}} Claudia Langer aufloesen() ___________________________________

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

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

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]++; }}}}} Claudia Langer aufloesen() ___________________________________

... if( aktuelle_form()->data[z][s] && (ss>=0) && (ss<10)) { spielfeld[zz][ss] = 1; fuellstand[zz]++; }}}}} 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)

... if( aktuelle_form()->data[z][s] && (ss>=0) && (ss<10)) { spielfeld[zz][ss] = 1; fuellstand[zz]++; }}}}} 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)

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--; } …

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

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--; } … Claudia Langer aufruecken() ___________________________________

Claudia 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

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)

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--; } … Claudia Langer aufruecken() ___________________________________

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

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üllstand aktualisiert werden. (untere Zeile bekommt Wert der oberen)

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--; } … Claudia Langer aufruecken() ___________________________________

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)

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--; } … Claudia Langer aufruecken() ___________________________________

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

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); } Claudia Langer aufruecken() ___________________________________

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ührung gespielt wird.

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 Modifikation von onestep() ___________________________________

Claudia Langer

Fragen??? Claudia Langer