Ultris Version 8: Erzeugen der Formen und Anzeigen der Vorschau 8.11.2007.

Slides:



Advertisements
Ähnliche Präsentationen
Ziele von EINI I + II Einführen in „Informatik“
Advertisements

DES-Simulator in JAVA, objektorientiert
Klassen - Verkettete Liste -
Professional XNA Game Programming
Kapitel 3: Listen Lineare Liste: endliche Folge von Elementen eines Grundtyps (n>=0), leere Liste falls n=0 Listenelemente besitzen.
V04: Definition und Implementierung der Formen. Spieler kann aus Gesamtzahl von 35 Steinen seine Spielsteine wählen Einheitliche Datenstruktur wird benötigt,
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 V10 Bewegen, Drehen und Kollisionserkennung.
V11 Auflösen der Formen und Abräumen der Reihen. Zwei neue Methoden ___________________________________ class ultris { private: … void aufloesen(); void.
Gliederung Motivation / Grundlagen Sortierverfahren
Java: Dynamische Datentypen
Dynamischer Speicher und Struktur
Polymorphie (Vielgestaltigkeit)
Felder sortieren. Aufgabe: Die Zahlen eines Feldes sollen der Größe (zuerst die kleinste Zahl) nach sortiert werden.
Dynamischer Speicher. In einer Funktion wird z.B. mit der Deklaration int i; Speicher auf dem sogenannten Stack reserviert. Wenn die Funktion verlassen.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (13 – Offenes Hashing) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (07 - Skiplisten) Prof. Th. Ottmann.
V03 Laden und Initialisieren der Grafiken - Grafiken des Spiels laden und testweise auf dem Bildschirm anzeigen - eine Klasse anlegen, die alle erforderlichen.
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,
Processing: Arrays & Laden von Dateien Aufbauend auf dem Beispiel: File I/O LoadFile1.
Tag 2 Look-up-Tabellen, Zufallszahlen, Listen, Speichermanagement und Dateiverwaltung Quelle: 3D-Spiele mit C++ und DirectX in 21 Tagen, Alexander.
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 Kapitel 10 Claudio Moraga; Gisbert Dittrich FBI Unido
3.1.4 Leser/Schreiber-Ausschluß (reader/writer exclusion)
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Listen-
Schleifen mit der Turtle
Informatik Grundkurse mit Java
Balance V01 Der Windows-Rahmen S Vortrag von Lisa Rau.
3D Programmierung Version 12 - Highscores. Die vom Spieler erzielte Punktzahl wird mit 5 vorgegebenen Punktzahlen verglichen und, falls nötig, in die.
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,
Informatik 1 Übung 8. NACHBESPRECHUNG Übung 8 Rekursion Existiert Weg von A nach B?
Das Streichholzspiel.
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
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
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
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 Fakultät.
Einführung in die Programmierung
Einführung in die Programmiersprache C 4
Informatik 1 Letzte Übung.
Arrays / Felder Themen: Arrays / Felder / Vektoren Was soll das eigentlich? Erstellen von Arrays Arrays auslesen. Wie sie verwaltet werden.
Starten der Entwicklungsumgebung (IDE)
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Der Windows-Desktop Beispiel für den Windows-Desktop.
Unity 4.x Cookbook Softwaretechnologie II (Teil 2) - Maximilian Berndt.
Java-Kurs - 8. Übung Besprechung der Hausaufgabe.
Polymorphie (Vielgestaltigkeit). Wenn eine Methode, wie z.B. print für verschiedene Programmteile steht (und z.B. einmal Objekte verschiedener Klassen.
Java-Kurs Übung Benutzeroberflächen und Graphik
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
1 // Heap als ADT // JW: V1.0 // Vorlage gemaess EED-Quelltext // #include #include // für double pow (double d, int i) #include // fuer INT_MIN.
Visual Rekapitulation Tag 1
Zufallsprogrammierung
Programmierkurs JavaUE 4 Anweisungen und ProgrammeDietrich BolesSeite 1 Programmierkurs Java Dr. Dietrich Boles Teil Imperative Programmierung Unterrichtseinheit.
Diskrete Mathe Diskrete Mathematik I Listen Vorlesung 4.
Java Programme nur ein bisschen objektorientiert.
Tutorium Software-Engineering SS14 Florian Manghofer.
Pointer, Arrays und verkettete Listen. Mehrdimensionale Arrays  Pointer auf ein Array von Pointern  int32 **matrix = new int32*[3];  matrix: Zeiger.
Tutorium Software-Engineering SS14 Florian Manghofer.
Ein Spiel mit der SDL - Teil I. Ein Spiel mit der SDL  kostenlose Bibliothek – Simple DirectMedia Layer Grafik darstellen Benutzereingaben abfragen Sounds.
Felder in Java.
3. Die Datenstruktur Graph 3.2 Repräsentation von Graphen
 Präsentation transkript:

Ultris Version 8: Erzeugen der Formen und Anzeigen der Vorschau

// Punktwerte aller Steinformen const int formwert[anzahl_formen] = { 8,12,12,10,10,10, 6, 25,25, 4,20,10,10,20, 1, 8,25,40,15,25,35, 2, 4,10,10,20,20,25, 25,30,25,25,10,15,25 }; 1) Festlegen der Punkte, die für jede Form vergeben werden

2) Erweitern der Klasse ultris: 6 Steine (aktueller Stein + 5 Steine in der Vorschau) müssen verwaltet werden class ultris { struct formwahl { int ix; Index der Form int dv;Drehvariante der Form }; private: (...) formwahl formen[6]; 0 aktuelle Form, 1-5 Vorschau int zeile; int spalte;Position des aktuellen Steins int offset; int sichtbar; int zeige_dyn;Zeige den dynamischen Anteil (0/1) (...) }; Offset: Anzahl der Pixel, die sich der aktuelle Stein von seiner Zeile aus schon weiter nach unten bewegt hat in der Funktion void ultris::initialisieren() zeige_dyn = 0 ergänzen, damit die Steine bei Spielstart noch nicht angezeigt werden

3) Neue Memberfunktionen für die Klasse ultris class ultris { private: (...) void display_vorschau(); void display_form(); void naechste_form(); const form *aktuelle_form(){return ultris_form[formen[0].ix][formen[0].dv];} public: (...) void neue_form(); display_vorschauVorschausteine rechts einblenden display_formaktuellen Stein im Spielfeld anzeigen naechste_formnächsten Stein ins Spiel bringen aktuelle_formZeiger auf den aktuellen Stein zurückgeben neue_formeine neue Form erstellen und initialisieren

void ultris::naechste_form() { int z, i, ix; for( i = 0; i < 5; i++)die Formen rutschen im Array formen[i] = formen[i+1];einen Platz nach vorne... z = rand()%anz_aktive_formen+1; for( ix = -1; z; z--) {weshalb der letzte Platz im Array while( !aktive_formen[++ix])mit einer zufälligen neuen Form ;in einer zufälligen Drehvariante }aufgefüllt werden muss formen[5].ix = ix; formen[5].dv = rand()%4; } 4) Einmal Durchrücken bitte: die Funktion naechste_form

void ultris::neue_form() { naechste_form(); zeile = -aktuelle_form()->h;Position des aktuellen Steins initialisieren: spalte = 5-(aktuelle_form()->b)/2;abhängig von Höhe und Breite der Form offset = 0; sichtbar = 0; punktestand += formwert[formen[0].ix];Punktestand erhöhen } 5) Ein neuer Stein kommt aufs Spielfeld: neue_form

void ultris::start() { (...) naechste_form(); neue_form(); zeige_dyn = 1; } 6) Beim Spielstart

void ultris::display_vorschau() { int z, s, p, y; const form *f; if( !sichtbar)wenn der aktuelle Stein noch unter sichtbar = (zeile >= 0);der Abdeckung ist for( y = 0, p = sichtbar; y < vorschau; p++, y++) { f = ultris_form[formen[p].ix][formen[p].dv]; for( z = 0; z h; z++) { for( s = 0; s b; s++) { if( f->data[z][s]) ultris_display.prevstein(y, z, s, f->b, f->h); } 7) Zeichnen der 5 Vorschausteine zeilen- und spaltenweises Zeichnen der Spielsteine in ihrem jeweiligen Vorschaufeld

void ultris::display_form() { int z, s; for( z = 0; z h; z++) { for( s = 0; s b; s++) { if( aktuelle_form()->data[z][s]) { ultris_display.fallstein( zeile+z, spalte+s, offset); } 8) Zeichnen des Steins im Spielfeld ebenfalls zeilen- und spaltenweises Zeichnen (mit Berücksichtigung des Offsets!)

void ultris::display() { ultris_display.hintergrund(); display_spielfeld(); if( zeige_dyn) { display_vorschau();unsere neuen Programmteile display_form(); } //ultris_display.abdeckung();hier nur zu Testzwecken deaktiviert! //display_punktestand(); ultris_display.present(); } 9) Ergänzung in ultris::display

LRESULT CALLBACK ultris_windowhandler( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch(msg) { case WM_COMMAND: switch( LOWORD( wParam)) { (...) case IDM_TEST: mein_spiel.neue_form(); PostMessage( ultris_window, WM_PAINT, 0, 0); return 0; } (...) 10) Nur zum Testen – neuen Spielstein einfügen mit Strg + T IDM_TEST muss in der zugehörigen.rc-Datei noch mit der Tastenkombination Strg + T verknüpft werden.