使用Google Lanterna终端移动光标时出现问题

时间:2015-01-19 00:57:16

标签: java terminal

我正在使用googlecode lanterna图书馆。其中一个方法是“moveCursor(int x,int y)”。我有一个终端字段,我想在其中移动一个字符。但我有两个问题:

光标没有按照正确的方式进行。当我按下右箭头后按下向左箭头时,它会向下移动一些,而不是正确的方向。所有箭头都会发生这种情况 第二个问题。任何人都可以帮我在终端领域移动角色吗?我应该建立任何类或任何方法吗?或者我应该修改这个? 谢谢!

public void movePlayer()
 {
  int xLocation = s.getXLocation();
  int yLocation = s.getYLocation();
  while (true) 
   {
    Key key = t.readInput();
    if (key!=null)
     {
      if (key.getKind() == Key.Kind.ArrowLeft)
       {
        t.moveCursor(xLocation-1, yLocation);
        xLocation--;
       }
      else if (key.getKind() == Key.Kind.ArrowRight) 
       {
        t.moveCursor(xLocation+1, yLocation);
        xLocation++;
       }
      else if (key.getKind() == Key.Kind.ArrowUp)
       {
        t.moveCursor(xLocation, yLocation+1);
        yLocation--;
       }
      else if (key.getKind() == Key.Kind.ArrowDown) 
       {
        t.moveCursor(xLocation, yLocation-1);
        yLocation++;
       }
      }
    }
  }

1 个答案:

答案 0 :(得分:1)

如果你这样做,光标会正常移动,没有任何复杂情况。

public static void movePlayer() {
    int xLocation = s.getXLocation();
    int yLocation = s.getYLocation();
    while (true) {
        Key key = t.readInput();
        if (key != null) {
            if (key.getKind() == Key.Kind.ArrowLeft) {
                t.moveCursor(xLocation - 1, yLocation);
                xLocation--;
            } else if (key.getKind() == Key.Kind.ArrowRight) {
                t.moveCursor(xLocation + 1, yLocation);
                xLocation++;
            } else if (key.getKind() == Key.Kind.ArrowUp) {
                t.moveCursor(xLocation, yLocation - 1);
                yLocation--;
            } else if (key.getKind() == Key.Kind.ArrowDown) {
                t.moveCursor(xLocation, yLocation + 1);
                yLocation++;
            }
        }
    }
}

我希望我可以帮助你解决问题。

到第二个问题,到目前为止,我无法给出答案。