gpt4 book ai didi

java - 如何在每次不按回车的情况下获得输入?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:47:44 25 4
gpt4 key购买 nike

我制作了一个简单的游戏(还不是真正的游戏),玩家可以在 4x20 个角色大小的房间内移动。它在控制台中运行。

但在我的游戏循环中,我希望能够在房间内四处走动,而无需在每次我想移动时按回车键。播放器应该能够按 w/a/s/d 并立即更新屏幕,但我不知道该怎么做。

public class Main{
public static void main(String[] args){
MovementLoop();
}
public static void MovementLoop(){

Scanner input = new Scanner(System.in);

int pos=10, linepos=2;
String keypressed;
boolean playing = true;

while(playing == true){
display dObj = new display(linepos, pos);
dObj.drawImage();
keypressed=input.nextLine();
if(keypressed.equals("w")){
linepos -= 1;
}
else if(keypressed.equals("s")){
linepos += 1;
}
else if(keypressed.equals("a")){
pos -= 1;
}
else if(keypressed.equals("d")){
pos += 1;
}
else if(keypressed.equals("q")){
System.out.println("You have quit the game.");
playing = false;
}
else{
System.out.println("\nplease use w a s d\n");
}
}
}
}

public class display{

private String lines[][] = new String[4][20];
private String hWalls = "+--------------------+";
private String vWalls = "|";
private int linepos, pos;


public display(int linepos1, int pos1){
pos = pos1 - 1;
linepos = linepos1 - 1;
}
public void drawImage(){

for(int x1=0;x1<lines.length;x1++){
for(int x2=0;x2<lines[x1].length;x2++){
lines[x1][x2]="#";
}
}
lines[linepos][pos]="O";

System.out.println(hWalls);
for(int x2=0;x2<lines.length;x2++){
System.out.print(vWalls);
for(int x3=0;x3<lines[x2].length;x3++){
System.out.print(lines[x2][x3]);
}
System.out.println(vWalls);
}
System.out.println(hWalls);
}
}

最佳答案

答案很简单

你不能那样做

因为命令行环境不同于 swing,swing 可以处理事件对象,而,命令行没有事件。

所以,也许是时候离开命令行了。

关于java - 如何在每次不按回车的情况下获得输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17555515/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com