Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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

Ähnliche Präsentationen


Präsentation zum Thema: "Vers. 6: Der Konfigurationsdialog Quelle: Spieleprogrammierung mit DirectX und C++, U. Kaiser und P. Lensing, Galileo Computing (2007)"—  Präsentation transkript:

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

2 Der Konfigurationsdialog

3 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;

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

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

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

7 Identifier des Dialogs IDD_KONFIGURATION125 IDC_STANDARD IDC_LOESCHEN IDC_VORBELEGUNG IDC_VORSCHAU IDC_CHECK1 5000 … IDC_CHECK35 5034

8 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;...

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

10 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.

11 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: … }

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

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

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

15 Ü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;

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


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

Ähnliche Präsentationen


Google-Anzeigen