我正在通过在线教程自学如何用 Java 编写游戏。我正在使用 Java Applets 创建 Pong 游戏。每个 Racket 由不同的键控制,进行 1v1 比赛。如果两个用户在不同的时间按下键,这就可以正常工作。但是当一个键被按住然后另一个键被按住时(例如:按住箭头键,然后用户 2 按住“S”键),第二个键覆盖第一个并且第一个桨将停止移动。我猜我需要使用线程,但我对它们知之甚少,而且我无法理解如何使用/实现它们。当按下两个(或更多)键时,我将如何处理这种情况?
奖励:就像我说的那样,我对线程知之甚少 - 我假设我还需要一个线程来让球/冰球在其他所有事情进行时四处移动。是正确的吗?如果是这样,我该如何在不需要输入的东西上放置线程?
谢谢你的帮助, 打碟机
最佳答案
你通常做的是记住每个按键的状态。
您可以保留一系列操作(如果需要,也可以保留所有键的数组)。 keyDown 事件导致例如
boolean actions[12];...
...
public boolean keyDown( Event e, int key ) {
if (key == 'a') {
actions[ACTION_LEFT] = true;
}
..
}
并且您需要捕获 keyup 事件并在释放键时将操作设置为 false。
在移动逻辑中,您可以只检查按键的状态
if(actions[ACTION_LEFT] == true)
moveLeft();
if(actions[ACTION_RIGTH] == true)
moveRight();
关于java - 如何处理 Java Applet 中的多个按键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1133369/