我正在尝试制作一个简单的文字游戏,但我遇到了一个奇怪的问题。我有一个类设置为使用SDL_KEYDOWN从用户的键盘获取输入。当调用函数Candidate
时,它会运行一个循环,轮询键盘输入并返回按钮的字符串。奇怪的是,按下按键无效。代码在我的while循环中停止,但似乎我的函数根本没有效果。
这是我的主要代码:
check_event()
这是我的输入类.cpp
#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;
}
非常感谢任何帮助。
答案 0 :(得分:0)
有多个红旗。
首先,std::cout
不适用于sdl。该库使用窗口,而不是控制台/终端。如果要渲染文本,请阅读相应的教程。
其次,如果您尚未初始化事件处理程序,则无法检查事件。您应该在while循环之前添加SDL_Event event;
。
第三,使用class来处理输入是不必要的,这更合适:
bool quit = false;
SDL_Event event;
while (!quit)
{
while (SDL_PollEvent(&event) != 0)
{
if (event.type == SDL_QUIT)
{
quit = true;
}
// Add if blocks, switch statements, and what have you
}
}