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

Gelöschter Benutzer

unregistriert

1

28.05.2015, 18:56

[C++] Texteingabe Ingame-Chat

Hallo,

ich arbeite gerade mit einem Freund an einem Spiel, bei dem ich der Programmierer bin. Dabei stoße ich auf ein Problem, bei welchem ich auf eure Hilfe angewiesen bin, da ich auch nach langer Google/Bing-Suche keinen passenden Rat gefunden habe.

Erst einmal etwas Allgemeines:
Compiler: VS 2013
Bibliothek: SFML 2.2
Sprache: C++
Typ: Konsolenanwendung

Nun zum Problem:
Unser Spiel soll einen kleinen Ingame-Chat erhalten, welcher auch schon funktioniert, allerdings funktioniert es mit der Eingabe von Texten über die Tastatur noch nicht ganz. Mein erster Ansatz war es, mithilfe der SFML abzufragen, ob eine Taste gedrückt ist oder nicht. Dies funktioniert auch ganz gut, allerdings fehlen mir bei der SFML Zeichen wie "ß, ä, ö, ü, ?, ...". Ich habe diese auch nicht hier gefunden: http://www.sfml-dev.org/documentation/2.…1_1Keyboard.php Ein weiteres Problem ist, das "Z" und "Y" vertauscht sind (ich vermute die SFML nutzt das amerikanische Tastatur-Layout). Da dies natürlich gerade für einen Chat in unserer Gegend nicht hinnehmbar wäre, habe ich gegoogelt. Dabei bin ich auf "_kbhit()" und "_getch()" gestoßen. Also habe ich für einen Test eine weitere Konsolenanwendung erstellt, es hat alles tadellos funktioniert. Ich habe begonnen, dies nun in dem Hauptprojekt zu integrieren, allerdings habe ich festgestellt, dass dies nur geht, wenn das Konsolenfenster aktiv ist, was eigentlich nicht geht, wenn das kleine Chat-SFML-Fenster den Fokus hat. Nach erneuter Suche bin ich auf GetAsyncKeyState() gekommen, welches aber anscheinend auch keine Unterstützung für "ä, ö, ü" bietet. Zumindest konnte ich hier keine entsprechendes Keycodes ausfindig machen: https://msdn.microsoft.com/en-us/library…1(v=vs.85).aspx Kann es sein das ich sie überlesen habe, bzw. kennt einer von euch, falls es sie gibt, die Keycodes? Oder bin ich mit meinen Ansätzen komplett auf dem falschen Weg?

Weiteres:
Eine mögliche Lösung sollte so sein, dass nicht gewartet wird, bis eine Taste gedrückt wird, weil ich Multithreading vermeiden möchte. Wenn es geht, wäre ich auch dankbar, wenn ich nicht auf eine Win32-Anwendung "umsatteln" müsste, da ich die schnelle Möglichkeit Variablen für das Debugging mit std::cout über die Konsole auszulesen, nicht missen möchte.

Ich hoffe ich konnte euch mein Problem so gut wie möglich schildern,

Mit freundlichen Grüßen

alex41018

Nimelrian

Alter Hase

Beiträge: 1 216

Beruf: Softwareentwickler (aktuell Web/Node); Freiberuflicher Google Proxy

  • Private Nachricht senden

2

28.05.2015, 19:03

Schau dir mal sf::Event::TextEvent an :)
Ich bin kein UserSideGoogleProxy. Und nein, dieses Forum ist kein UserSideGoogleProxyAbstractFactorySingleton.

3

28.05.2015, 19:41

Falls du die Win32 API doch nutzen möchtest, kannst du auch WM_CHAR nutzen: https://msdn.microsoft.com/en-us/library…v=vs.85%29.aspx
Cube Universe
Entdecke fremde Welten auf deiner epischen Reise durchs Universum.

Sylence

Community-Fossil

Beiträge: 1 663

Beruf: Softwareentwickler

  • Private Nachricht senden

4

28.05.2015, 19:46

Wenn es geht, wäre ich auch dankbar, wenn ich nicht auf eine Win32-Anwendung "umsatteln" müsste, da ich die schnelle Möglichkeit Variablen für das Debugging mit std::cout über die Konsole auszulesen, nicht missen möchte.


Off-Topic:
1. hindert dich eine Win32 Anwendung nicht daran ein Konsolenfenster zu erzeugen ;)
2. Gibt es den Debugger um Inhalt von Variablen anzugucken (und noch viel mehr)

Gelöschter Benutzer

unregistriert

5

29.05.2015, 09:10

Erst einmal vielen Dank für die vielen Antworten :)

@Nimelrian: sf::Event::TextEvent funktioniert gut, danke für den Tipp.

@Magogan: Auch danke, aber nachdem die integrierte SFML-Lösung gut funktioniert, werde ich deinen Ansatz wohl nicht verwenden, aber für andere Anwendungen im Hinterkopf behalten.

@Sylence: Dann werde ich mal googeln und mich informieren was sich so alles findet :)

@Forum-Administration: Wenn ich Posts erstelle fällt mir auf, dass z. B. durch klicken auf einen Smiley dieser nicht eingefügt wird oder der Zitat-Button bei mir nicht gehen. Das Gleiche gilt für die Quelltext-Buttons. Ich verwende den Internet Explorer 11. Ist das nur bei mir so?

Edit: Die hier verwenden Smileys hab ich über ": )" eingefügt

6

29.05.2015, 18:28

Zitat

Internet Explorer 11

Ja, liegt sicherlich an dir.

MfG
Check

Werbeanzeige