So nachdem meine Mathe Klassen so weit fertig sind, wollte ich die mal an ein rotierenden Dreieck ausprobieren... Das Dreieck verändert zwar seine Position aber nur einmal und bewegt sich danach nicht mehr... Ich hab das so gemacht das ich am Anfang der Nachrichtenschleife mir die Zeit hole wie lange der Computer gestartet ist und nachdem ich die Render und Move Funktion aufgerufen habe in einer zweiten Variable nochmal die Zeit speicher, dann zieh ich die zweite Zeit von der ersten ab und teile sie durch 1000 und speicher sie dann in eine float Variable
Hier ist nochmal der Codeausschnitt
Die Nachrichtenschleife
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
DWORD dwTime1, dwTime2;
float fTime = 0.0f;
while(TRUE)
{
dwTime1 = timeGetTime();
while(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
if(msg.message == WM_QUIT)
break;
else
{
Render();
Move(fTime);
dwTime2 = timeGetTime();
fTime = (float)(dwTime2 - dwTime2) / 1000.0f;
}
}
|
und die Movefunktion
|
C-/C++-Quelltext
|
1
2
3
4
|
void Move(float fTime)
{
g_fTime += fTime;
}
|
Das Dreieck ist dann nur einmal gedreht, so dass die Spitze nach unten zeigt, aber bewegen tut es sich nicht... Wenn ich die Sachen mit der Zeit weglasse und dann und g_fTime bei jeden Funktionsaufruf um 0.05f erhöhe dann rotiert das Dreieck zwar, aber es bewegt sich dann zu schnell
Vielen Dank im voraus
Mfg Male