gpt4 book ai didi

java - 为什么我的椭圆不动 Java

转载 作者:搜寻专家 更新时间:2023-11-01 04:00:00 25 4
gpt4 key购买 nike

我正在写一个像蛇一样的小游戏,我正在实现按键事件监听器,所以当按下箭头键时它会监听它增加或减少椭圆在框架中的位置。下面是我的代码,你认为发生了什么?我尝试在谷歌上搜索可能的解决方案,但结果是空的。

package snakegame;

import java.awt.Graphics;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.JFrame;

/**
*
* @author PlaixHax0r
*/
public class SnakeGame extends JFrame{

int x, y;

public class ActionListener extends KeyAdapter{
public void KeyPressed(KeyEvent a){

int KeyCode = a.getKeyCode();

if(KeyCode == KeyEvent.VK_RIGHT){
x++;
}

if(KeyCode == KeyEvent.VK_LEFT){
x--;
}

if(KeyCode == KeyEvent.VK_DOWN){
y++;
}

if(KeyCode == KeyEvent.VK_UP){
y--;
}


}

public void KeyReleased(KeyEvent a){

}

}



public SnakeGame(){
addKeyListener(new ActionListener());
setTitle("Snake 1.0");
setVisible(true);
setSize(500, 500);
setResizable(false);
setDefaultCloseOperation(EXIT_ON_CLOSE);

x=150;
y=150;

}

public void paint(Graphics g){
g.drawString("Welcome to Snake Empire", 180, 50);
g.fillOval(x, y, 15, 15);

repaint();
}


public static void main(String[] args) {
new SnakeGame();

}
}

最佳答案

几个建议:

  • 不要直接在 JFrame 中绘制。查看绘图教程,您将看到如何在 JPanel 或其他 JComponent 的 paintComponent(...) 方法重写中绘图。
  • paintComponent(...) 的第一行通常是调用 super 的方法:super.paintComponent(g)
  • 不要在paint(...)paintComponent(...) 中调用repaint()。这是尝试制作不受控制的动画的糟糕方法。
  • 改用 Swing 计时器。
  • 不要将类命名为与核心类相同的名称,尤其不要将其命名为 ActionListener,因为这将使您几乎不可能在需要时使用实际的 ActionListener。
  • KeyListeners 仅在监听的组件可聚焦且具有焦点时才起作用。
  • 避免将 KeyListeners 与 Swing 应用一起使用,而是使用键绑定(bind)。请搜索此站点,因为这已通过许多示例进行了多次讨论,其中一些是我的。

请看Key Bindings Tutorial然后看看我使用键绑定(bind)的示例代码 herehere .

关于java - 为什么我的椭圆不动 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14547988/

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