Timer erstellen im MFC

knapper

Grünschnabel
Hallo

Wer kann mir erklären, wie ich einen Timer im MFC erstellen kann, welcher von 0 raufzählt, bis das spiel fertig ist?

bin gespannt, danke
 
Wenn das Spiel beginnt, merkst du dir die Startzeit:
C++:
DWORD dwStart;
dwStart = GetTickCount();
Und wenn alle Paare aufgedeckt sind, ermittelst du die Zeitdifferenz:
C++:
DWORD dwTimeDiff = GetTickCount() - dwStart; // Ergebnis ist in Millisekunden
Gruß
MCoder
 
Kann ich bei dieser Methode die laufende Zeit in einer Box ausgeben, damit der Spieler weiss wie lange er schon daran ist?
 
Die Zeile "DWORD dwTimeDiff = GetTickCount() - dwStart;" kannst du jederzeit aufrufen, um die aktuell vergangene Zeit zu ermitteln. Die Ausgabe selbst solltest du dann am besten über einen Timer steuern:
C++:
// Member Variable für die Zeit (in .h)
DWORD m_dwStart;

// Initialisierung bei Spielbeginn
#define TIMER_EVENT 1

m_dwStart = GetTickCout();
SetTimer(TIMER_EVENT, 1000, NULL); // Intervall 1 Sekunde

// Handler für WM_TIMER einfügen (Klassenassistent)
void CMyDialog::OnTimer(UINT nIDEvent) 
{
    if( nIDEvent == TIMER_EVENT )
    {
        DWORD dwTime = GetTickCount() - m_dwStart;
        
        // ... Ausgabe der Zeit
    }

    CDialog::OnTimer(nIDEvent);
}

// Timer am Ende des Spiels stoppen
KillTimer(TIMER_EVENT);
Gruß
MCoder
 
vielen Dank!!
nur noch eine kleine Frage fürs verständnis.
Ich kann die Zeit nach jeder Sekunde aufrufen, dass er si mir auf dem Bildschrim ausgibt, oder kann ich das irgendwie direkt sagen, er soll mir die laufende Zeit direkt ausgeben und stoppen wenn spiel fertig?
 
Ich weiss nicht genau, was du mit "direkt" meinst. Die Ausgabe der Zeit erfolgt muss ja quasi parallel zum eigentlichen Spielablauf erfolgen. Damit hast du 2 Prozesse: Einmal das Spiel selbst, also die Überwachung und Auswertung der Benutzereingaben und zum anderen die Zeitanzeige. Die Variante mit dem Timer ist dabei eine recht einfache Möglichkeiten, diesen zweiten Prozess zyklisch zu initiieren.

Gruß
MCoder
 
Bei meinem Spiel handelt es sich um ein Memory.
Dort haben wir die Spielfläche und daneben eine Listbox, welche die anzahl Versuche ausgibt.
Ich möchte für den Timer auch eine solche Listbox haben, wo ich immer sehen kann wie lange ich schon am spielen bin.
 
Dort, wo ich im Beispielcode die Zeile " // ... Ausgabe der Zeit" hingeschrieben habe, müsstest du dann die Ausgabe in einer Listbox oder wohin auch immer programmieren.

Gruß
MCoder
 
Zurück