我想做一个游戏,就是一圈越过障碍,但我跳不起来
我已经尝试过键盘上的所有键
import java.awt.event.KeyEvent;
public class Game {
public static void main(String[] args) {
StdDraw.setCanvasSize();
circle player = new circle(0, 0.05 , 0.05) ;
StdDraw.line(0, 0, 1, 0);
if(StdDraw.isKeyPressed(KeyEvent.VK_UP)){
System.out.println("hello");
double height = player.height;
while(height <= 0.2)
height = height + 0.05;
StdDraw.setCanvasSize();
StdDraw.line(0, 0, 1, 0);
StdDraw.filledCircle(0, height, 0.05);
StdDraw.show(100);
}
}
}
我放入了打印功能,以测试它是否在“ if”中 而且不是
答案 0 :(得分:0)
您没有以正确的方式监听KeyEvent。旧的方法是使用KeyListener,而较新的方法是使用Key绑定,但是对我来说,当我编写Java代码时,发现我在编写用于游戏的键盘控件方面,答案是使用KeyEventDispatcher子类,就像我做的{{3 }}
答案 1 :(得分:0)
我正在尝试使用isKeyPressed方法,但该方法不起作用,我必须按特定的位置来敲键吗?
很有可能您必须在程序的GUI窗口处于焦点状态时按该键,但不一定是在鼠标指针位于任何特定位置时。但是最大的问题是 timing 。当控件到达if
语句时,程序将测试当前是否按下了某个键。在第一次显示任何内容之后,这应该非常迅速地发生,这可能对您来说太快了,因此您的程序在执行任何操作之前会飞过它。此外,由于它(很可能)仅在程序窗口处于焦点状态时才响应按下的键,因此您甚至不应期望能够抢先按下某个键并使程序识别它。
我不确定这种事情的StdDraw习惯用法是什么,即使有的话。我想您想创建一个循环,反复检查输入并更新显示。通常,这种事情自然会在GUI的事件调度线程上运行,但是StdDraw似乎旨在将您与之隔离。