Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

07.07.2006, 21:29

Flüssige bewegung mit SDL

Hi,

bei dem folgenden Code will ich das sich die Figur flüssig bewegt und nicht auf einmal an den Punkt 15 springt:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
bool bActive = g_pFramework->KeyDown (SDLK_LEFT);

    while(bActive)
    {
        // Spieler nach links bewegen

        m_fXPos -= 30.0f * g_pTimer->GetElapsed ();

        // Animieren

        //m_fAnimPhase += 20.0f *g_pTimer->GetElapsed ();


        if (m_fXPos < 15)
        {
            bActive = false;
        }
        else
        {
            bActive = true;
        }
    }

Wie mache ich das???

Firefly

Alter Hase

Beiträge: 484

Wohnort: Irgendwoundnirgendwo

  • Private Nachricht senden

2

07.07.2006, 22:18

WAS ist denn genau jetzt dein Problem?

3

07.07.2006, 22:23

Die Figur springt jetzt von dem Punkt 300 auf den Punkt 15. Sie soll aber dort "hingleiten" so dass man sieht wie sie wandert.

Firefly

Alter Hase

Beiträge: 484

Wohnort: Irgendwoundnirgendwo

  • Private Nachricht senden

4

07.07.2006, 22:28

soll das ganze so funktionieren:
TASTENDRUCK: ->Figur gleitet nach 15
oder:
wenn TASTENDRUCK: ->Figur gleitet in Richtung 15
???

5

07.07.2006, 22:31

figur gleitet richtung 15. So dass ich in die Schleife noch if Abfragen einbauen kann wenn z.B. pfeil hoch gedrückt wird, damit der punkt dann hoch wandert.

Firefly

Alter Hase

Beiträge: 484

Wohnort: Irgendwoundnirgendwo

  • Private Nachricht senden

6

07.07.2006, 23:07

AHA! So also...

C-/C++-Quelltext

1
2
3
4
5
6
7
8
while(isRunning)
{
if(g_pFramework->KeyDown (SDLK_LEFT))
{
if(m_fXPos!=15.0f)m_fXPos -= 30.0f * g_pTimer->GetElapsed ();
}
Render();
}

7

07.07.2006, 23:12

Zitat von »"Firefly"«

AHA! So also...

C-/C++-Quelltext

1
2
3
4
5
6
7
8
while(isRunning)
{
if(g_pFramework->KeyDown (SDLK_LEFT))
{
if(m_fXPos!=15.0f)m_fXPos -= 30.0f * g_pTimer->GetElapsed ();
}
Render();
}


was muss ich jetzt für isRunning einsetzen?
wenn ich es so mache das ich einen bool wert auf true setze und ihn dann anstatt "isRunning" einsetze, dann bleibt bei mir das Fenster schwarz

Firefly

Alter Hase

Beiträge: 484

Wohnort: Irgendwoundnirgendwo

  • Private Nachricht senden

8

07.07.2006, 23:21

na ja...

C-/C++-Quelltext

1
while(isRunning){} 

ist halt die Spielschleife...

9

07.07.2006, 23:25

Aso.

Nach deinem Code wandert die Figur aber nur dann wenn man die Taste gedrückt hält. Sie soll aber auch noch weiter wandern wenn man die Taste los lässt.

Firefly

Alter Hase

Beiträge: 484

Wohnort: Irgendwoundnirgendwo

  • Private Nachricht senden

10

07.07.2006, 23:46

auch kein problem:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
while(isRunning) 
{ 
if(g_pFramework->KeyDown (SDLK_LEFT)) 
{ 
if(m_fXPos!=15.0f)m_fXPos -= 30.0f * g_pTimer->GetElapsed (); 
}
if(g_pFramework->KeyUP(SDLK_LEFT)) 
{ 
for(int i=0;i<anzahl_durchläufe;i++)
if(m_fXPos!=15.0f)m_fXPos -= 30.0f * g_pTimer->GetElapsed (); 
}  
Render(); 
}

(Das ganze ist natürlich im Pseudocode-stil gehalten...)

Werbeanzeige