Vers. 6: Der Konfigurationsdialog Quelle: Spieleprogrammierung mit DirectX und C++, U. Kaiser und P. Lensing, Galileo Computing (2007)

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

Klassen - Verkettete Liste -
DVG Dateien Dateien. DVG Dateien 2 Die Klasse File Die Klasse File stellt die Verbindung zwischen dem Filesystem des Rechners und dem.
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
PKJ 2005/1 Stefan Dissmann Vorwoche - Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private.
Objektorientierte Programmierung Definition von Klassen
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
V11 Auflösen der Formen und Abräumen der Reihen. Zwei neue Methoden ___________________________________ class ultris { private: … void aufloesen(); void.
Threads Richard Göbel.
Java: Dynamische Datentypen
Listen Richard Göbel.
Java: Grundlagen der Objektorientierung
Konstruktoren.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (05 – Elementare Datenstrukturen) 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,
V12 Highscores WS 2009/10 Simulation und 3D Programmierung Prof. Dr. Manfred Thaller Martina Hänsel.
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 10 Claudio Moraga; Gisbert Dittrich FBI Unido
Diskrete Mathematik I Vorlesung 6 Binärer Suchbaum II.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
DVG Klassen und Objekte
Wir müssen also überlegen: Implementierung der Knoten, Implementierung der Kanten, daraus: Implementierung des Graphen insgesamt. Annahme: die Knoteninhalte.
© 2002 Dr. Cavelius - Ley - Pohlig - Taulien Programmierung im Netz und Internet: Einführung in die Programmiersprache Java Teil I 1 Klassen Objekte von.
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.
FH-Hof 1 XML-Parser Richard Göbel. FH-Hof 2 XML-Parser- DOM Object Tree Parser Objekt der Klasse 'DocumentBuilderFactory' mit 'newInstance()' erzeugen.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
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 2.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
EPROG Tutorium Einheit 4 Klassen und Objekte. Wiederholung Schleifen do... while while for break/continue Strings String char Methoden für Strings Arrays.
Von der Planung bis zum Hauptmenü Seminar: Softwaretechnologie II Dozent: Prof. Manfred Thaller Referent: Jan Bigalke.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
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 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 Wintersemester 2011/12 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Informatik 1 Letzte Übung.
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
Dynamische Datentypen
Variablenkonzept Klassisch, in Java Basistyp
Purga - Scriptengine Ein Einblick.
EPROG Tutorium #3 Philipp Effenberger
Starten der Entwicklungsumgebung (IDE)
Java-Kurs - 8. Übung Besprechung der Hausaufgabe.
1 // 13_2_ADT_Unger_Graph // ungerichteter, knotenmarkierter Graph als ADT // #include struct Knoten { public: void Erzeuge_Kn (int, char*); char* Get_Marke.
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
Institut für Kartographie und Geoinformation Diskrete Mathematik I Vorlesung Binärer Suchbaum I-
Controller Werkstatt updaten Werkstatt ws = werkstattarray.get(werkstattId); ws.setName(name); ws.setAnsprechpartner(ansprechpartner); ws.setTelefonnummer(telefonnummer);
Tutorium Software-Engineering SS14 Florian Manghofer.
C++ FÜR cOMPUTERSPIELENTWICKLER
Konstruktoren.
Rekursion – Speicherverwaltung
Java-Kurs - 4. Übung weitere Kontrollstrukturen
Felder in Java.
Implementieren von Klassen
Grundkurs Informatik 11-13
 Präsentation transkript:

Vers. 6: Der Konfigurationsdialog Quelle: Spieleprogrammierung mit DirectX und C++, U. Kaiser und P. Lensing, Galileo Computing (2007)

Der Konfigurationsdialog

Array zum Festlegen der Formen char aktive_formen[anzahl_formen] = { 1,1,1,1,1,1,1, 0,0,0,0,0,0,0, 0,0,0,0,0,0,0 }; int anz_aktive_formen = 7;

Definition der Klasse ultris und einer Instanz class ultris { private: public: }; // Erzeugen der Instanz: ultris mein_spiel;

Variablen und Funktionen der Klasse ultris Daten des Spiels werden eingefügt: class ultris { private: int vorbelegung; // Anzahl der bei Spielbeginn vorzubelegenden Zeilen int vorschau;// Anzahl der Formen in der Vorschau public: ultris(){ 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;} };

Die Funktionen der Klasse ultris Der Konstruktor erzeugt Initialwerte: ultris(){ vorbelegung = 0; vorschau = 1;} Die Get-Funktion liest die Grundeinstellungen int get_vorbelegung() { return vorbelegung;} int get_vorschau() { return vorschau;} Die Set-Funktion ändert die Einstellungen void set_vorschau( int v) {if( v 5) v = 5; vorschau = v;} void set_vorbelegung( int v) {if( v 20) v = 20; vorbelegung = v;}

Identifier des Dialogs IDD_KONFIGURATION125 IDC_STANDARD IDC_LOESCHEN IDC_VORBELEGUNG IDC_VORSCHAU IDC_CHECK … IDC_CHECK

Implementierung der Funktionen LRESULT CALLBACK ultris_windowhandler ( HWNDhWnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch(msg) case WM_COMMAND: switch( LOWORD( wParam)) { … case ID_EINSTELLUNGEN_KONFIGURATION:DialogBox ( ultris_instance, MAKEINTRESOURCE( IDD_KONFIGURATION), ultris_window, konfigurationsdialog); return 0;...

Fallunterscheidungen des Dialoghandlers BOOL CALLBACK konfigurationsdialog (..) { switch (uMsg) { case WM_INITDIALOG: … case WM_COMMAND: … } … Return FALSE; }

Die Funktionen der Checkboxen und der Eingabefelder BOOL CheckDlgButton(HWND hDlg, int nIDButton, UINT uCheck) Handle ID Häckchen gesetzt? BOOL SetDlgItemInt(HWND hDlg, nIDDlgItem, UINT uValue, BOOL bSigned); Handle ID Wert Eingabef.

Die Initialisierung der Checkboxen und der Eingabefelder BOOL CALLBACK konfigurationsdialog (..) { Int i; switch (uMsg) { case WM_INITDIALOG: for( i = 0; i < anzahl_formen; i++) CheckDlgButton( hwndDlg, 5000+i, aktive_formen[i] ? BST_CHECKED : BST_UNCHECKED); SetDlgItemInt( hwndDlg, IDC_VORBELEGUNG, mein_sp iel.get_vorbelegung(), FALSE); SetDlgItemInt( hwndDlg, IDC_VORSCHAU, mein_spiel.get_vorschau(), FALSE); return TRUE; WM_COMMAND: … }

WM_COMMAND Fallunterscheidungen BOOL CALLBACK konfigurationsdialog (..) { … case WM_COMMAND: … if(wParam == IDOK) {…} if(wParam == IDCANCEL) {…} if (HIWORD(wParam) == BN_CLICKED) {…} …

Der Fall IDOK Die Häckchen werden ausgelesen und im Array aktive_formen abgelegt. if(wParam == IDOK) { for( i = 0, anz_aktive_formen = 0; i < anzahl_formen; i++) { aktive_formen[i] = 0; if(IsDlgButtonChecked( hwndDlg, 5000+i) == BST_CHECKED) { aktive_formen[i] = 1; anz_aktive_formen++; } … }

Default-Werte if( anz_aktive_formen == 0) { aktive_formen[0] = 1; anz_aktive_formen = 1; }

Übertragen der internen Daten und Beenden des Dialogs // Daten für die Vorbelegung und Vorschau: mein_spiel.set_vorbelegung( GetDlgItemInt( hwndDlg, IDC_VORBELEGUNG, NULL, FALSE)); mein_spiel.set_vorschau( GetDlgItemInt( hwndDlg, IDC_VORSCHAU, NULL, FALSE)); // Hinterher wird der Dialog beendet: EndDialog(hwndDlg, wParam); return TRUE;

Alle Löschen, Standard und Alle Auswählen switch( LOWORD(wParam)) { case IDC_LOESCHEN: for( i = 0; i < anzahl_formen; i++) CheckDlgButton( hwndDlg, 5000+i, BST_UNCHECKED); return TRUE; case IDC_ALLE: for( i = 0; i < anzahl_formen; i++) CheckDlgButton( hwndDlg, 5000+i, BST_CHECKED); return TRUE; case IDC_STANDARD: for( i = 0; i < anzahl_formen; i++) CheckDlgButton( hwndDlg, 5000+i, i < 7 ? BST_CHECKED:BST_UNCHECKED); return TRUE; }