Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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

Ähnliche Präsentationen


Präsentation zum Thema: "Ultris Version 8: Erzeugen der Formen und Anzeigen der Vorschau 8.11.2007."—  Präsentation transkript:

1 Ultris Version 8: Erzeugen der Formen und Anzeigen der Vorschau

2 // 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

3

4 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

5 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

6 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

7 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

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

9 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

10 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!)

11 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

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


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

Ähnliche Präsentationen


Google-Anzeigen