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

27.07.2013, 14:12

SDL Sprite Movement

Hey liebe Spieleprogrammierer,

jedes mal wenn ich mein Sprite bewege dann bewegt er sich nicht solang ich die taste drücke sondern immer nur beim Keydown und Keyup, was eigentlich auch bei meiner Abfrage dafür logisch ist. Mein Problem ist das es so nicht sein soll und deswegen wollte ich fragen wie ich es am besten lösen kann, das sich das objekt solange bewegt bis die Taste wieder losgelassen wird.

Entsprechender 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
while(SDL_PollEvent(&event))
        {
            if(event.type == SDL_QUIT)
            {
                running = false;
            }       
            if(event.key.keysym.sym == SDLK_w)
            {
                sprite->moveSprite(0, -1);
            }
            if(event.key.keysym.sym == SDLK_a)
            {
                sprite->moveSprite(-1, 0);
            }
            if(event.key.keysym.sym == SDLK_d)
            {
                sprite->moveSprite(1, 0);
            }
            if(event.key.keysym.sym == SDLK_s)
            {
                sprite->moveSprite(0, 1);
            }
        }



Freue mich über jede Anregung! ;)
Mit freundlichen Grüßen
Horius

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

2

27.07.2013, 14:16

Boolean
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Cookiezzz

Frischling

Beiträge: 91

Wohnort: Deutschland

Beruf: Schüler

  • Private Nachricht senden

3

27.07.2013, 14:29

Boolean

Das nenne ich mal treffend auf den Punkt gebracht :thumbsup: .

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

4

27.07.2013, 17:46

Ich gebe mal einen weiteren Hinweis. Es geht darum, dass du dir in einer Variable merkst ob die Taste gedrückt wurde, solange bis das Key Up Event gefeuert wird. ;)
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

5

27.07.2013, 18:02

Ich gebe mal einen weiteren Hinweis. Es geht darum, dass du dir in einer Variable merkst ob die Taste gedrückt wurde, solange bis das Key Up Event gefeuert wird. ;)

Alter Spielverderber. Man gibt doch erst einen weiteren Hinweis wenn der erste nicht ausreicht. :P
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

7

28.07.2013, 15:05

dr. hallo hatte wohl heute einen richtig blöden Tag auf der Arbeit und muss leuten die grad in die SDL einsteigen die entsprechenden Funktionen auf die möglichst unfreundlichste Weise mitteilen.


Das mit den Booleans hab ich jetzt versucht, ist ein bischen in die Hose gegangen. Ich wusste allerdings nicht das es eine Funktion gibt die mir sagt wann ein Keyup erfolgt ist.
Ich werds mal versuchen.

Mit freundlichen Grüßen,
Horius

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

8

28.07.2013, 15:47

Ich finds übrigens in Ordnung was dr hallo getan hat. Guck dir vielleicht einfach noch mal an was er dir da hat zeigen wollen. Sein Stichwort ist gut und dass er dir zeigt, dass man sowas suchen kann ist ja auch kein Verbrechen. Sieh es lieber als gut gemeinten Hinweis.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

9

28.07.2013, 15:55

dr. hallo hatte wohl heute einen richtig blöden Tag auf der Arbeit und muss leuten die grad in die SDL einsteigen die entsprechenden Funktionen auf die möglichst unfreundlichste Weise mitteilen.


Das mit den Booleans hab ich jetzt versucht, ist ein bischen in die Hose gegangen. Ich wusste allerdings nicht das es eine Funktion gibt die mir sagt wann ein Keyup erfolgt ist.
Ich werds mal versuchen.

Mit freundlichen Grüßen,
Horius

Was genau ist denn dabei in die Hose gegangen?
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

10

28.07.2013, 17:12

Ich finds übrigens in Ordnung was dr hallo getan hat. Guck dir vielleicht einfach noch mal an was er dir da hat zeigen wollen. Sein Stichwort ist gut und dass er dir zeigt, dass man sowas suchen kann ist ja auch kein Verbrechen. Sieh es lieber als gut gemeinten Hinweis.


Ein link zur Documentary oder eben der Funktionsname wäre weniger aufwendig und mehr freundlich gewesen.

Was genau ist denn dabei in die Hose gegangen?


Es hat einfach gar nicht mehr funktioniert. Jetzt habe ich es mit der SDL_GetKeyState gemacht aber die booleans rausgelassen, jetzt tut er das was er soll aber ziemlich ruckartig. Dann bring ich da gleich noch booleans ein und das Problem sollte theoretisch gegessen sein.

Danke für die Hilfe ;)
Mit freundlichen Grüßen
Horius

Werbeanzeige