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

Max.1114

Frischling

  • »Max.1114« ist der Autor dieses Themas

Beiträge: 10

Beruf: Schüler

  • Private Nachricht senden

1

09.05.2010, 11:49

[SDL] SDL_Rect negativ?

Hallo liebe Community,
ich bin grad dabei ein kleines Spiel zu programmieren und ich möchte, dass sich der Hintergrund mitbewegt... bis jetzt klappt es auch, jedoch nur nach recht oder unten. Wenn ich versuche das SDL Rect negativ zu machen und es bei -1 angelangt ist, wird es automatisch auf 0 gesetzt, aber das Spielfeld sollte auch ins negative gehen.

Hier ein Codeausschnitt:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
  // Richtung (-2 = unten; -1 = links; 1 = rechts; 2 = oben)
    if(direction == -2) // nach unten bewegen
    {
        m_Rect.y += 50 * g_pTimer->GetElapsed ();
        
    }

    if(direction == -1) // nach links bewegen
    {
        m_Rect.x -= 50 * g_pTimer->GetElapsed ();
        
    }

    if(direction == 1) // nach rechts bewegen
    {
        m_Rect.x += 50 * g_pTimer->GetElapsed ();
        
    }

    if(direction == 2) // nach oben bewegen
    {

        m_Rect.y -= 50 * g_pTimer->GetElapsed ();
        
    }

  // Sprite rendern
  SDL_BlitSurface (m_pImage, NULL, m_pScreen, &m_Rect);


ich hoffe mir kann jemand hierbei helfen
gruß
Max.1114

2

09.05.2010, 12:35

Also ein Rect kann nichts ins negative gehen. Warum willst du denn unbedingt nach links scrollen? macht doch keinen Sinn.
Ich weiß es dauert viel zu lange, aber ich habe echt nur Pech. Habe mir heute mal eben im Zeigefinger Nerv und Sehne durchtrennt. Dennoch kann es nicht mehr all zu lange dauern mit dem Tutorial. Außerdem kamen auch noch Prüfungen und dergleichen dazwischen.
Klatscht die Hopper an die Wand, Deutschland ist ein Raverland! :D

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

3

09.05.2010, 12:42

hi milton <3 gothic

entweder ist es ein rundungsfehler(du multiplizierst mit float, speicherst in int) oder SDL_BlitSurface kommt damit nicht klar.

speicher die position in einem float-vektor, das sollte eine flüssigere animation geben.
kleiner tipp: schau dir mal switch&case und richtungsvektoren an. du wirst es nicht bereuen.

edit: @insane laut der doc ist die position signed also kann sie ins negative gehen. ausserdem würde es bei unsigned aus dem bild verschwinden.
und es macht durchaus sinn den hintergrund nach links oder oben zu scrollen. z.b. wenn der spieler sich nach rechts bewegt.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »NachoMan« (09.05.2010, 12:47)


Werbeanzeige