Softwaretechnologie II WS 08/09 SpieleProgrammieren UlTris V07 Reihen vorbelegen, Spielfeld anzeigen und Punktestand ausrechnen Sibylle C. Schellhorn,

Slides:



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

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 Version 8: Erzeugen der Formen und Anzeigen der Vorschau
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.
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Listen Richard Göbel.
Java: Grundlagen der Objektorientierung
Konstruktoren.
Polymorphie (Vielgestaltigkeit)
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 (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.
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++
Tag 2 Look-up-Tabellen, Zufallszahlen, Listen, Speichermanagement und Dateiverwaltung Quelle: 3D-Spiele mit C++ und DirectX in 21 Tagen, Alexander.
V12 Highscores WS 2009/10 Simulation und 3D Programmierung Prof. Dr. Manfred Thaller Martina Hänsel.
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: … }
KB-Tris - Ein Tetris Derivat Kai Hermann & Benjamin Halbrock.
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,
Abstrakter Datentyp in C++ I - Klasse -
DVG Klassen und Objekte
Einführung in die Programmierung Datensammlung
Presenter: Daniel Walzenbach Technologieberater
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.
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Das Streichholzspiel.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Einführung in die Programmierung Wintersemester 2012/13 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmierung Wintersemester 2008/09 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.
Einführung in die Programmierung
Informatik 1 Letzte Übung.
Elektronischer Würfel
CuP - Java Eingabe über Tastatur, AudioClips, überschreiben, Quiz Montag, 18. November 2002.
Aufruf einer Methode eines Objektes vom Typ „Bruch“
EPROG Tutorium #3 Philipp Effenberger
Informatik Datenstruktur Graph 3.3 Durchlaufen von Graphen
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Unity 4.x Cookbook Softwaretechnologie II (Teil 2) - Maximilian Berndt.
Programmiervorkurs WS 2014/15 Methoden
Java-Kurs - 8. Übung Besprechung der Hausaufgabe.
CuP - Java Achte Vorlesung Entspricht ungefähr Kapitel 4.1 des Skriptums Montag, 28. Oktober 2002.
3. Beschreibung von Abläufen durch Algorithmen 3.4 Zufall
Java-Kurs Übung Benutzeroberflächen und Graphik
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
[03] Kalendar mit aktivem Eintrag 1. Navigation zu „Meine Seite“ 2. Folgen des Links „Alle mir zugewiesene Arbeitspakete anzeigen“ (3. Falls dieser Bereich.
Visual Rekapitulation Tag 1
Programmierkurs JavaUE 4 Anweisungen und ProgrammeDietrich BolesSeite 1 Programmierkurs Java Dr. Dietrich Boles Teil Imperative Programmierung Unterrichtseinheit.
Controller Werkstatt updaten Werkstatt ws = werkstattarray.get(werkstattId); ws.setName(name); ws.setAnsprechpartner(ansprechpartner); ws.setTelefonnummer(telefonnummer);
Java Programme nur ein bisschen objektorientiert.
Tutorium Software-Engineering SS14 Florian Manghofer.
Tutorium Software-Engineering SS14 Florian Manghofer.
C++ FÜR cOMPUTERSPIELENTWICKLER
Konstruktoren.
Wiederholungen mit Zähler
Felder in Java.
Cäsar-Verschlüsselung
Grundkurs Informatik mit Java
Cäsar-Verschlüsselung
 Präsentation transkript:

Softwaretechnologie II WS 08/09 SpieleProgrammieren UlTris V07 Reihen vorbelegen, Spielfeld anzeigen und Punktestand ausrechnen Sibylle C. Schellhorn, Medieninformatik

Ziel des Abschnitts V07: ST-II, WS 08/09: Ulrich Kaisers Tetris=UlTris, V07 - Sibylle C. Schellhorn Vorbelegen von Spielreihen, Anzeige des Feldes, des Punktestandes 2 Durch Angeben der Anzahl von Reihen festlegen, wie viele Steine schon im Spielfeld vorbelegt sind.

Anschließend Punktestand errechnen und Spiel anzeigen ST-II, WS 08/09: Ulrich Kaisers Tetris=UlTris, V07 - Sibylle C. Schellhorn Vorbelegen von Spielreihen, Anzeige des Feldes, des Punktestandes 3

ST-II, WS 08/09: Ulrich Kaisers Tetris=UlTris, V07 - Sibylle C. Schellhorn Vorbelegen von Spielreihen, Anzeige des Feldes, des Punktestandes 4 Sowie das Tastaturkürzel F1 für den Start eines neuen Spiels inizialisieren

Der Klasse Ultris neue Member hinzufügen, um statischen Elemente zu erfassen class ultris { private: int vorbelegung; // Anzahl der bei Spielbeginn vorzubelegenden Zeilen int vorschau; // Anzahl der Formen in der Vorschau int spielfeld[20][10];// Das Spielfeld, 20 Zeilen z à 10 Steinen s int fuellstand[20];// Der Fuellstand einer Reihe (= Anzahl Segmente in der Reihe) int punktestand; // Der aktuelle Punktestand void initialisieren(); void vorbelegen(); void display_spielfeld(); void display_punktestand(); public: int spiel_laeuft; // Indikator, dass das Spiel laeuft ultris() { srand( GetTickCount()); initialisieren(); vorbelegung = 0; vorschau = 1;} int get_vorbelegung() { return vorbelegung;} void set_vorbelegung( int v) {if( v 20) v = 20; vorbelegung = v;} int get_vorschau() { return vorschau;} void set_vorschau( int v) {if( v 5) v = 5; vorschau = v;} void start(); void display(); }; ST-II, WS 08/09: Ulrich Kaisers Tetris=UlTris, V07 - Sibylle C. Schellhorn Vorbelegen von Spielreihen, Anzeige des Feldes, des Punktestandes 5

void ultris::initialisieren() Ein leeres Spielfeld wird erzeugt, solange der Spieler keine eigene Auswahl trifft ST-II, WS 08/09: Ulrich Kaisers Tetris=UlTris, V07 - Sibylle C. Schellhorn Vorbelegen von Spielreihen, Anzeige des Feldes, des Punktestandes 6

void ultris::initialisieren() { int z, s; for( z = 0; z < 20; z++) { fuellstand[z] = 0; for( s = 0; s < 10; s++) spielfeld[z][s] = 0; } spiel_laeuft = 0; // muß noch gestartet werden punktestand = 0; } ST-II, WS 08/09: Ulrich Kaisers Tetris=UlTris, V07 - Sibylle C. Schellhorn Vorbelegen von Spielreihen, Anzeige des Feldes, des Punktestandes 7

void ultris::vorbelegen() { int z, s, i; for( i = 0; i < vorbelegung*5; i++) { z = 19-rand()%vorbelegung; s = rand()%10; if( !spielfeld[z][s]) { spielfeld[z][s] = 1; fuellstand[z]++; } punktestand = vorbelegung * 2500; } ST-II, WS 08/09: Ulrich Kaisers Tetris=UlTris, V07 - Sibylle C. Schellhorn Vorbelegen von Spielreihen, Anzeige des Feldes, des Punktestandes 8

void ultris::vorbelegen() Exkurs: Die Funkion rand() void ultris::vorbelegen() { int z, s, i; for( i = 0; i < vorbelegung*5; i++) { z = 19-rand()%vorbelegung; s = rand()%10; if( !spielfeld[z][s]) { spielfeld[z][s] = 1; fuellstand[z]++; } punktestand = vorbelegung * 2500; } ST-II, WS 08/09: Ulrich Kaisers Tetris=UlTris, V07 - Sibylle C. Schellhorn Vorbelegen von Spielreihen, Anzeige des Feldes, des Punktestandes 9 Mit der parameterlosen Funktion rand(), // für random die durch die stdio.h zur Verfügung gestellt wird, Erzeugt man Zufallszahlen Eine Zufallszahl zw. a und b (inlcl. A und b) erzeugt man mit: a+ (rand() %(b-a+1))

void ultris::vorbelegen() den Spielstand hochzählen void ultris::vorbelegen() { int z, s, i; for( i = 0; i < vorbelegung*5; i++) { z = 19-rand()%vorbelegung; s = rand()%10; if( !spielfeld[z][s]) { spielfeld[z][s] = 1; fuellstand[z]++; } punktestand = vorbelegung * 2500; } ST-II, WS 08/09: Ulrich Kaisers Tetris=UlTris, V07 - Sibylle C. Schellhorn Vorbelegen von Spielreihen, Anzeige des Feldes, des Punktestandes 10 Der Spielstand wird nur hochgezählt, wenn ein Feld mit einem Stein belegt ist. Sollte es durch die rand() zu einer Doppelbelegung kommen, beeinflußt das den Zähler des Standes nicht.

void ultris::start() { ultris_sounds.play( sound_start); initialisieren(); vorbelegen(); spiel_laeuft = 1; } ST-II, WS 08/09: Ulrich Kaisers Tetris=UlTris, V07 - Sibylle C. Schellhorn Vorbelegen von Spielreihen, Anzeige des Feldes, des Punktestandes 11 Sound wird gestartet Die bisher implementierten Vorgele- gungen werden durchgeführt

void ultris::display_spielfeld() { int z, s; for( z = 0; z < 20; z++) { for( s = 0; s < 10; s++) { if( spielfeld[z][s]) ultris_display.feldstein( z, s); } // das angelegte Array wird zeilenweise durchlaufen // und für jedes belegte Feld // wird an der Stelle ein Stein angezeigt ST-II, WS 08/09: Ulrich Kaisers Tetris=UlTris, V07 - Sibylle C. Schellhorn Vorbelegen von Spielreihen, Anzeige des Feldes, des Punktestandes 12

void ultris::display_punktestand() { int i, z, p; for( i = 5, p = punktestand; i >= 0; i--, p/= 10) { z = p % 10; ultris_display.ziffer( i, z); } // der Punktestand wird in einzelne Ziffern z zerlegt // und mit der Funktion ziffer aus der Klasse display // (ultris_display.ziffer, V02) ausgegeben. ST-II, WS 08/09: Ulrich Kaisers Tetris=UlTris, V07 - Sibylle C. Schellhorn Vorbelegen von Spielreihen, Anzeige des Feldes, des Punktestandes 13

void ultris::display () { ultris_display.hintergrund(); display_spielfeld(); ultris_display.abdeckung(); display_punktestand(); ultris_display.present(); } // die Methode wird erweitert ST-II, WS 08/09: Ulrich Kaisers Tetris=UlTris, V07 - Sibylle C. Schellhorn Vorbelegen von Spielreihen, Anzeige des Feldes, des Punktestandes 14

Akkzelerator für F1=Neues Spiel In der Demo.rc ID_ULTRIS_NEUESSPIEL existiert schon und bekommt den key / die Taste F1 zugewiesen Der Windowshandler in Demo.cpp wird um die Funktion mein_spiel.start() erweitert, ST-II, WS 08/09: Ulrich Kaisers Tetris=UlTris, V07 - Sibylle C. Schellhorn Vorbelegen von Spielreihen, Anzeige des Feldes, des Punktestandes 15

LRESULT CALLBACK ultris_windowhandler( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) […] case ID_ULTRIS_NEUESSPIEL: mein_spiel.start(); CheckMenuItem( ultris_menu, ID_ULTRIS_PAUSE, MF_UNCHECKED); PostMessage( ultris_window, WM_PAINT, 0, 0); break; schicken eine message an WM_PAINT und das Spielfeld wird neu gezeichnet: case WM_PAINT: mein_spiel.display(); break; ST-II, WS 08/09: Ulrich Kaisers Tetris=UlTris, V07 - Sibylle C. Schellhorn Vorbelegen von Spielreihen, Anzeige des Feldes, des Punktestandes 16

Ende Vielen Dank für Ihre Aufmerksamkeit ST-II, WS 08/09: Ulrich Kaisers Tetris=UlTris, V07 - Sibylle C. Schellhorn Vorbelegen von Spielreihen, Anzeige des Feldes, des Punktestandes 17