如何将字符串直接读入变量? Java,光滑

时间:2014-02-22 13:31:20

标签: slick

我想编写某种类型的游戏,其中玩家必须在地图上显示的是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这样的东西对我来说不起作用,因为用户必须在控制台中键入它,我希望他“直接输入游戏”,就像它与文本字段一样。 (但我不想使用文本字段。)

1 个答案:

答案 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类被构建为光滑的。