【发布时间】:2023-03-16 20:54:02
【问题描述】:
我一直在搞乱一些 java 代码,试图更好地了解该语言的工作原理,我想出了这个。我已经能够让球和框架工作,但我不能让它移动,甚至不能再跑了。它说最后一个大括号后面需要一个分号,但是当我添加它时,很多事情都变成了错误。当我尝试使用 Key Listener 时,首先出现了运行问题,如果有帮助的话。
package com.edu4java.samplegame;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import javax.swing.JPanel;
@SuppressWarnings("serial")
public class Main extends JPanel {
private static final int ScreenW = 1000;
private static final int ScreenH = 800;
private static final int S_Radius = 25;
private static final int S_X = 100;
private static final int S_Y = 100;
private static final int Step = 100;
private static int x = S_X; // x at center of the ball
private static int y = S_Y; // y at center of the ball
private static int radius = S_Radius; // radius of the ball
private void moveBall() {
/* x = x + 1;
y = y + 1;*/
}
KeyListener keyListener = new KeyListener() {
int keyCode = e.getKeyCode();{
switch( keyCode ) {
case KeyEvent.VK_UP:
x = x - Step;
break;
case KeyEvent.VK_DOWN:
x = x + Step;
break;
case KeyEvent.VK_LEFT:
y = y - Step;
break;
case KeyEvent.VK_RIGHT :
y = y + Step;
break;
}
};
@Override
public void paint(Graphics g) {
super.paint(g);
Graphics2D g2d = (Graphics2D) g;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
g2d.fillOval(x, y, 30, 30);
}
public static void main(String[] args) throws InterruptedException{
JFrame frame = new JFrame("Forgotten");
Main game = new Main();
frame.add(game);
frame.setSize(ScreenW, ScreenH);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
while (true) {
game.moveBall();
game.repaint();
Thread.sleep(10);
}
}
}
【问题讨论】:
标签: java input keylistener