0

我想做一个游戏是一个圆圈跳过障碍物但我不能让它跳跃

我已经尝试了键盘上的所有键

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”并且它没有

4

2 回答 2

0

您没有以正确的方式收听 KeyEvents。旧方法是使用 KeyListener,而较新的方法是使用键绑定,但对我来说,当我编写 Java 代码时,我发现在为游戏编写键盘控件方面,答案是使用 KeyEventDispatcher 子类,就像我在这里所做的那样

于 2019-01-29T21:13:13.083 回答
0

我正在尝试使用 isKeyPressed 方法,但它只是不起作用,是否有一个特定的地方我必须按下键?

很可能您必须在程序的 GUI 窗口具有焦点时按下该键,但当鼠标指针位于任何特定位置时则不一定。但最大的问题是时机if当控制到达语句时,您的程序测试当前是否按下了某个键。这应该在它第一次显示任何内容后非常快地发生,很可能太快以至于你无法输入,所以你的程序在你做任何事情之前飞过了它。此外,因为它(很可能)只响应程序窗口具有焦点时按下的键,所以您甚至不应该期望能够抢先按下一个键并让程序识别它。

我不确定这种事情的 StdDraw 习语是什么,如果有的话。我想您想创建一个循环来重复检查输入并更新显示。通常这样的事情会自然地在 GUI 的事件调度线程上运行,但 StdDraw 似乎旨在使您与此隔离。

于 2019-01-29T21:30:38.053 回答