我刚刚开始学习编程applet和java GUI,我试图制作一个简单的游戏。目前,我有主要类(游戏)和玩家类(玩家)我让玩家绘制到屏幕上,但我很难让关键事件发挥作用,任何帮助表示赞赏!
玩家图像显示完全正常,但当我完全按下按键时位置不会改变。
编辑:为播放器发布了错误代码,已更新
Game.java:
public class Game extends Applet {
Player player;
@Override
public void init() {
player = new Player(this);
this.setSize(800, 600);
addKeyListener(player);
}
@Override
public void paint(Graphics g) {
player.paint(g);
}
}
Player.java:
public class Player implements KeyListener {
Game game;
Image image;
int x;
int y;
public Player(Game game) {
this.game = game;
x = 0;
y = 0;
image = game.getImage(game.getCodeBase(), "images/Player.png");
}
public void paint(Graphics g) {
g.drawImage(image, x, y, game);
}
@Override
public void keyTyped(KeyEvent e) {
return;
}
@Override
public void keyPressed(KeyEvent e) {
switch (e.getKeyCode()) {
case KeyEvent.VK_A:
x -= 1;
break;
case KeyEvent.VK_D:
x += 1;
break;
case KeyEvent.VK_S:
y += 1;
break;
case KeyEvent.VK_W:
y -= 1;
break;
}
game.repaint();
}
@Override
public void keyReleased(KeyEvent e) {
return;
}
}
答案 0 :(得分:9)
小组可能没有焦点,或者无法集中注意力。
试试这段代码。我将键更改为左/右/上/下箭头。为简单起见,我将其保留为基于AWT的小程序。
// <applet code='Game' width=400 height=100></applet>
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class Game extends Applet implements KeyListener {
Player player;
@Override
public void init() {
player = new Player(getImage(32));
addKeyListener(this);
setFocusable(true);
requestFocusInWindow();
}
@Override
public void paint(Graphics g) {
player.paint(g);
}
public Image getImage(int size) {
Image img = createImage(size,size);
Graphics g = img.getGraphics();
g.setColor(Color.RED);
g.fillRect(0,0,size,size);
g.dispose();
return img;
}
@Override
public void keyTyped(KeyEvent e) {
return;
}
@Override
public void keyPressed(KeyEvent e) {
switch (e.getKeyCode()) {
case KeyEvent.VK_LEFT:
player.x -= 1;
break;
case KeyEvent.VK_RIGHT:
player.x += 1;
break;
case KeyEvent.VK_DOWN:
player.y += 1;
break;
case KeyEvent.VK_UP:
player.y -= 1;
break;
}
repaint();
}
@Override
public void keyReleased(KeyEvent e) {
return;
}
}
class Player {
Image image;
int x;
int y;
public Player(Image image) {
x = 0;
y = 0;
this.image = image;
}
public void paint(Graphics g) {
g.drawImage(image, x, y, null);
}
}