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

13.09.2015, 19:42

Sprite Steuerung - SDL->SDL2 Migration

Hallo erstmal, :)

ich nutze als Einstieg in SDL momentan das Tutorial: (SDL-Tutorial), also jenes hier im Wiki. Da es in v1.2 angeboten wird und v2 besser scheint, hab ich angefangen das Tutorial zu migrieren. Es klappt auch alles relativ gut, nur hab ich nun das Problem, dass [SDLK_LAST], welches für das Bewegen des Sprites genutzt wird, in SDL2 laut dem MigrationGuide gar nicht mehr existiert. Ich habe bereits eine Idee die auch funktioniert. Hier wollte ich nur fragen ob es eine bessere Möglichkeit dafür gebe. So sieht es momentan bei mir aus

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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
SDL_Event event;
        while (SDL_PollEvent(&event))
        {
            switch (event.type)
            {
            case SDL_KEYDOWN:
                switch (event.key.keysym.sym)
                {
                case SDLK_UP:
                    b[0] = 1; break;

                case SDLK_DOWN:
                    b[1] = 1; break;

                case SDLK_RIGHT:
                    b[2] = 1; break;

                case SDLK_LEFT:
                    b[3] = 1; break;
                }
                break;

            case SDL_KEYUP:
                switch (event.key.keysym.sym)
                {
                case SDLK_UP:
                    b[0] = 0; break;

                case SDLK_DOWN:
                    b[1] = 0; break;

                case SDLK_RIGHT:
                    b[2] = 0; break;

                case SDLK_LEFT:
                    b[3] = 0; break;
                }
                break;

            case SDL_QUIT:
                run = false;
                break;
            }
                        //hoch
            if (b[0] == true)
                imagePosition.y -= 10;
                        //runter
            if (b[1] == true)
                imagePosition.y += 10;
                        //rechts
            if (b[2] == true)
                imagePosition.x += 10;
                        //links
            if (b[3] == true)
                imagePosition.x -= 10;

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

2

13.09.2015, 20:06

Du könntest SDL_GetKeyboardState verwenden. Der Parameter numkeys wäre für dich interessant:

Zitat


numkeys
if non-NULL, receives the length of the returned array


Sollte standardmäßig 512 ergeben.
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

3

13.09.2015, 21:53

Vielen Dank für den Tipp. Durfte mir jetzt 40 Zeilen und einen Array sparen.

Werbeanzeige