我正在尝试创建坦克游戏,但仍在学习如何用 Java 进行图形编程。我最初尝试使用 KeyListeners 移动两个图像之一(哪个取决于哪个播放器)。有人告诉我,键绑定可能是解决此问题的更有效方法。这是我的一些代码:
public class FrameMain extends JFrame{
...
public FrameMain(){
this.addBindings();
addBindings() 方法:
protected void addBindings() {
InputMap inputMap = pnlPlay.getInputMap();
KeyStroke key = KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT, Event.KEY_PRESS);
inputMap.put(key, pnlPlay.pnlGame.MoveTank(2, pnlPlay.nPlayer));
key = KeyStroke.getKeyStroke(KeyEvent.VK_LEFT, Event.KEY_PRESS);
inputMap.put(key, pnlPlay.pnlGame.MoveTank(-2, pnlPlay.nPlayer));
}
移动坦克方法:
public int MoveTank(int xChange, int nPlayer){
System.out.println("move "+nPlayer);
if(nPlayer==0){
tank1.x+=xChange;
}else tank2.x+=xChange;
repaint();
return 1;
}
我遇到的问题是,当我按下右箭头键或左箭头键时,我没有得到任何响应。它应该打印“move #”,但事实并非如此。如果有人知道我做错了什么,或者可以指出一些做同样事情的代码的方向,我将不胜感激。我最好从按工作顺序查看代码然后玩弄它来学习。