我想编写某种类型的游戏,其中玩家必须在地图上显示的是loacations。我正在使用光滑的库。
我的问题是我需要一些方法来从播放器获取键盘输入。我用JOptionPane的InputDialog尝试过它,但我真的不喜欢它。我宁愿让字符串出现在屏幕的某个部分。但我不知道如何从键盘直接读取应该在屏幕上绘制的变量。我认为可以使用流,但如果我尝试获取一些示例,它们总是从文件中读取,我不知道如何使用它来从键盘读取。
String answer;
public void render(GameContainer gameContainer, StateBasedGame sbGame, Graphics g){
g.drawString(answer, 50, 50);
}
public void update(GameContainer gameContainer, StateBasedGame sbGame, int delta){
//user types something which I now call "inputFromUser"
//it does not appear anywhere before the string is drawn on the screen.
answer = inputFromUser;
}
像Scanner这样的东西对我来说不起作用,因为用户必须在控制台中键入它,我希望他“直接输入游戏”,就像它与文本字段一样。 (但我不想使用文本字段。)
答案 0 :(得分:0)
我有一种方法可以实现这一目标,但这是相当耗费资源的。首先创建一个全局变量来跟踪当前字母。现在创建一个新方法,遍历所有键以检查它们是否已关闭
private String totalString;
private void handelUserInput(Input input){
if(input.isKeyDown(Input.KEY_BACK)){
totalString = totalString.substring(0, totalString.length() - 1);
}
if(input.isKeyDown(Input.KEY_A)){
totalString += "a";
}
if(input.isKeyDown(Input.KEY_B)){
totalString += "b";
}
...etc
}
接下来在update循环中创建一个输入处理程序,以传递给句柄输入法。
public void update(GameContainer gc, StateBasedGame sbg, int delta)throws SlickException {
Input input = gc.getInput();
handelUserInput(input);
}
然后在渲染循环中在窗口的某处打印字符串。顺便说一句,Input类被构建为光滑的。