我正在使用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++;
}
}
}
}
答案 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++;
}
}
}
}
我希望我可以帮助你解决问题。
到第二个问题,到目前为止,我无法给出答案。