J'essaie de créer un jeu de texte simple, mais j'ai rencontré un problème étrange. J'ai une classe configurée pour prendre des entrées du clavier de l'utilisateur en utilisant SDL_KEYDOWN. Lorsque la fonction check_event()
est appelée, elle exécute une boucle qui interroge l'entrée au clavier et renvoie une chaîne pour le bouton. La chose étrange est que l'appui sur les touches n'a aucun effet. Le code s'arrête pour ma boucle while, mais il semble que ma fonction n'a aucun effet.Les entrées du clavier SDL ne se déclenchent pas
Voici mon code principal:
#include <iostream>
#include <fstream>
#include <SDL.h>
#include "SDL_ttf.h"
#include "input.h"
using namespace std;
Input input;
int main(int argc, char* argv[]) {
if (SDL_Init(SDL_INIT_VIDEO|SDL_INIT_AUDIO) != 0) {
SDL_Log("Unable to initialize SDL: %s", SDL_GetError());
return 1;
}
cout << "Welcome to Hero V1.0!" << endl; //intro stuff
cout << "Written By: Jojo" << endl;
cout << endl;
cout << "1) New Game" << endl;
cout << "2) Continue Game" << endl;
while (true) {
string event = input.check_event();
if(event == "1"){
cout << "Test" << flush;
}
}
SDL_Quit();
return 0;
}
Et voici ma classe d'entrée Cpp
#include <iostream>
#include <SDL.h>
#include "Input.h"
using namespace std;
string Input::check_event() {
while (SDL_PollEvent(&event)) {
if(event.type == SDL_KEYDOWN){
switch(event.key.keysym.sym){
case SDLK_1:
return "1";
}
}
}
return "null";
}
Toute aide est grandement appréciée.
Vous ne semblez pas avoir créé une fenêtre. SDL n'a pas de fonctionnalité de saisie d'entrée de système complet (qui, pour de nombreuses raisons, peut être problématique ou pas très possible à implémenter). Pour les touches de jeu de texte, vous devez lire depuis stdin (read, getch, ...). – keltar