gpt4 book ai didi

java - 如何让多个键绑定(bind)同时工作?

转载 作者:行者123 更新时间:2023-11-29 09:54:09 25 4
gpt4 key购买 nike

我需要设计一个有两个玩家的游戏。每个人都有一个球,应该能够将球向右或向左移动,第一个玩家使用“a”“d”按钮,第二个玩家使用左右箭头按钮。然而,目前一名球员需要等待另一名球员的 Action 完成才能移动自己的球。我该如何解决这个问题?这是我的代码的相关部分:

    public class AnimationWindow extends JPanel{

public AnimationWindow()
{

super();
....
....
cezmiMover();

}



public void cezmiMover(){

this.getInputMap().put(KeyStroke.getKeyStroke('a'), "left1");
this.getActionMap().put("left1", new AbstractAction() {

public void actionPerformed(ActionEvent e) {

board.cezmi1.moveLeft();
}
});

this.getInputMap().put(KeyStroke.getKeyStroke('d'), "right1");
this.getActionMap().put("right1", new AbstractAction() {

public void actionPerformed(ActionEvent e) {

board.cezmi1.moveRight();
}
});

this.getInputMap().put(KeyStroke.getKeyStroke("LEFT"), "left2");
this.getActionMap().put("left2", new AbstractAction() {

public void actionPerformed(ActionEvent e) {

board.cezmi2.moveLeft();
}
});

this.getInputMap().put(KeyStroke.getKeyStroke("RIGHT"), "right2");
this.getActionMap().put("right2", new AbstractAction() {

public void actionPerformed(ActionEvent e) {

board.cezmi2.moveRight();
}
});
}
}

最佳答案

您需要使用一系列标志和某种“更新”循环来根据标志的状态更新游戏状态...

例如,首先创建一系列标志...

private boolean p1Left, p1Right, p2Left, p2Right = false;

这些可以很容易地由各个玩家对象维护,但您没有提供那么多代码...

接下来,您需要监控按键和按键释放事件,并根据需要设置标志的状态...

this.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_D, 0, false), "right1down");
this.getActionMap().put("right1down", new AbstractAction() {
public void actionPerformed(ActionEvent e) {
p1Right = true;
}
});

this.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_D, 0, true), "right1up");
this.getActionMap().put("right1up", new AbstractAction() {
public void actionPerformed(ActionEvent e) {
p1Right = false;
}
});

然后您需要某种可以更新游戏状态的循环或计时器。就个人而言,我喜欢使用 javax.swing.Timer,但那只是我。

在更新循环的每次运行中,您需要检查每个标志的状态并相应地更新对象...

if (p1Right) {
board.cezmi1.moveRight();
}

对于 example

关于java - 如何让多个键绑定(bind)同时工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20672834/

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