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

Daedra22

Treue Seele

  • »Daedra22« ist der Autor dieses Themas

Beiträge: 115

Wohnort: Osten

Beruf: Student Informationstechnik

  • Private Nachricht senden

1

18.05.2014, 12:29

SDL Tastatureingabe Alternative zu getch

Hallo für mein Snake Game habe ich mir ein Highscore programmiert.
Leider hatte ich dabei immer getch() genutzt und dann mittels SDL_TTF die eingegebenen Zeichen auf dem Bildschirm auszugeben.
Nachdem ich nun die Konsole (#pragma linker console ...) auskommentiert habe, und somit nur noch das SDL_Fenster offen steht, werden die getch() Eingaben nicht mehr
berücksichtigt.

Sie werden ignoriert, vorher musste ich immer schnell die Konsole anklicken um einen Namen eingeben zu können.
Gibt es bei SDL_Event nicht einen Typ der mir die nötigen Ascii Zeichen (Eventuell hießen die anders - Unicode?) liefert ? also der genauso synonym wie getch() die Nummer einer Taste beim drücken liefert ?

Sowas wie in der Form:

while(SDL_PollEvent(&event)
if(event.type =SDL_KEYDOWN)
return event.type.key.keysym;

was ja synonym zu getch(); wäre

bei der Taste Enter würde der Rückgabewert 12 oder so lauten.

Ist da sowas in dem Typ versteckt ?

Gruß und Danke
Daedra

PS: Hier mal ein Auszug aus dem tatsächlichen Highscore







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
    while (inputstat)
    {

        std::cout << "Input Initialisierung geht" << endl;
        inputchar = _getch();
        if (inputchar == 13)
            break;
        if (inputchar == 8 && mystream.str().length() != 0)
        {

            helpstream << mystream.str().erase(mystream.str().length() - 1, 1);
            mystream.str("");
            mystream << helpstream.str();
            helpstream.str("");

            TextInput->ClearText();
            TextInput->SetStringContent("                                  ");
            TextInput->RenderTextShaded();
            TextInput->ShowText(100, 115);

            TextInput->ClearText();
            TextInput->RenderTextShaded();
            TextInput->SetStringContent(mystream.str());
            TextInput->RenderTextShaded();
            TextInput->ShowText(100, 115);
        }
        else ...














EDIT:
LÖSUNG GEFUNDEN:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
    SDL_Event myevent;
    int run22 = 1;
    SDL_EnableUNICODE(1);while (run22)
{

    while (SDL_PollEvent(&myevent))
    {
        if (myevent.type==SDL_KEYDOWN)
        cout << myevent.key.keysym.unicode<< endl;


    }
}
Who are you? - I am a game designer.
No you are not! - I am a game designer.
What kind of a designer ? - I am a game designer.
You mean you play games ? - I am a game designer.

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »Daedra22« (18.05.2014, 12:43)


Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

2

18.05.2014, 12:55

Alternativ schlage ich dir SDL TextInput vor.
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

Daedra22

Treue Seele

  • »Daedra22« ist der Autor dieses Themas

Beiträge: 115

Wohnort: Osten

Beruf: Student Informationstechnik

  • Private Nachricht senden

3

18.05.2014, 12:58

Tatsache ist ja wirklich 10 mal besser, jetzt hab ich mir das alles selbst zusammenprogrammiert xD

Das ist doch aber SDL 2.0 ? ich hab noch die veraltete 1.2 version ...
Who are you? - I am a game designer.
No you are not! - I am a game designer.
What kind of a designer ? - I am a game designer.
You mean you play games ? - I am a game designer.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Daedra22« (18.05.2014, 13:04)


Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

4

18.05.2014, 20:50

Da würde ich sagen: Wechsel. ;) SDL 2.x bietet immense Vorteile, wie du schnell erkennen wirst. Zudem fällt der Wechselt relativ leicht.
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Architekt« (19.05.2014, 11:19)


Werbeanzeige