gpt4 book ai didi

Java - 收集过去值的最佳方法

转载 作者:太空宇宙 更新时间:2023-11-04 06:47:03 24 4
gpt4 key购买 nike

我有一个简单的马里奥游戏,并且有决定玩家不同动画和 Action 的关键事件。

他们是:

  • 向左移动
  • 向右移动
  • 向左跳转
  • 向右跳转

正如你可以想象的,玩家只有在向右移动并且按下了跳跃按钮时才能播放向右跳跃动画

enter image description here

我遇到的问题是一次只能发送 1 个键值。这使得带有 && 条件的 if 语句毫无用处。

这是不起作用的代码:

        if(key == KeyEvent.VK_LEFT) {
if(distanceTraveled<300)dx=-5; else dx=-4;
if(key == KeyEvent.VK_UP)
player = jump_L_anim.getImage();
else
player = walk_L_anim.getImage();
} else {
if(distanceTraveled<300)dx=5; else dx=4;
if(key == KeyEvent.VK_UP)
player = jump_R_anim.getImage();
else
player = walk_R_anim.getImage();
}

很简单,我意识到有解决方案,并开始尝试找出当前按下的键之前按下的键。(该键不能等于当前按下的键)。

<小时/>

这将允许 if 语句,例如

if key==right    &&     lastKey == up
run jump_R animation
<小时/>

我设法能够捕获最后一个键,但不能捕获最后一个不是重复的键。

我感到很困惑,决定观看this missile guidance for dummies video 。这让我更加困惑,在我无聊的会计课上,我发现解决方案必须是将所有以前的值存储在一个数组中,然后我将从最后一个值循环到开头。我会继续这样做,直到数字不再继续为止。重复停止的数字是我要查找的最后一个值。

对于任何对此感到困惑的人,请查看这些关键 Action 的控制台读数

48
48
48
49
49
49
49
47
47
47

在这种情况下我要查找的数字是 49。这是因为它是最后按下的键,而不是当前键。

我这个问题背后的逻辑正确吗?你会如何解决这个问题?如果有一个简单的仅变量解决方案可用,我宁愿不使用数组。我正在寻找最快、最有效的逻辑。

最佳答案

也许你可以将当前按下的键存储到 HashSet 中,if 语句将类似于:

if (keyCodeSet.contains(x) && keyCodeSet.contains(y))

其中 x 和 y 是您想要的关键数字。释放按键后,您只需将它们从按键组中删除即可。

关于Java - 收集过去值的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23839544/

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