Java游戏:雪碧不会显示



正如我之前的大多数问题所指出的,我正在用Java开发一个简单的2D游戏。这是一个"Pong"克隆。

目前,我在屏幕上有两个蓝色的"拨片"(一个在屏幕顶部,一个在底部),由左右箭头键以及"a"one_answers"d"键控制,在x轴上移动。

还有"乒乓球"在周围飞行,并对与球拍和墙壁的碰撞做出反应。

现在,每当按下按钮时,我都在努力让球拍发射导弹。按下VK_SPACE时,底部桨叶发射导弹,按下VK_SHIFT时,顶部桨叶发射导弹。

我用底部划桨成功了。当按下太空按钮时,它确实发射了一枚导弹。

但这不会发生在最上面的球拍上。这里有一些代码:

在运行大部分游戏的Board类中。它实现KeyListener:

public void keyPressed(KeyEvent e) {
int key = e.getKeyCode();           
if(key==KeyEvent.VK_LEFT || key==KeyEvent.VK_RIGHT) bPaddle.keyPressed(e);
if(key==KeyEvent.VK_A || key==KeyEvent.VK_D) tPaddle.keyPressed(e);
if(key == KeyEvent.VK_SPACE) bPaddle.keyPressed(e);
if(key == KeyEvent.VK_SHIFT) tPaddle.keyPressed(e);
}

Paddle

public void keyPressed(KeyEvent e){
int key = e.getKeyCode();
// Some code that happens when the arrow keys or a/d keys are pushed.
// ..........
// ..........
if(key == KeyEvent.VK_SPACE){
missiles.add(new Missile(x, 300, "bottom"));
}
if(key == KeyEvent.VK_SHIFT){
missiles.add(new Missile(x, 400, "bottom"));
}
}

Missile类的构造函数:

public Missile(int x, int y, String type){  
this.x = x;
this.y = y;
image = new ImageIcon(this.getClass().getResource("sprites/missile.png")).getImage();
width = image.getWidth(null);
height = image.getHeight(null);
dx = 0;
if(type=="top")dy=3;
if(type=="bottom")dy=-3;    
visible = true;
}

可能是什么问题?(如果我需要在这里发布更多的代码,请告诉我)。谢谢:)

我怀疑问题出在这个块上:

if(key == KeyEvent.VK_SHIFT){
missiles.add(new Missile(x, 400, "bottom"));
}

因为VK_SHIFT是用来要求顶部桨开火的,所以在对该块的导弹构造函数的调用中,"bottom"不应该被替换为"top"吗?

在导弹构造函数中:

  1. 是否检查了代码是否正在执行?你查过dy的值了吗?如果dx和dy的值为零,即使执行代码,也不会有任何移动。

  2. 不要将"=="用于对象(字符串)比较。使用equals(...)方法。我的猜测是,设置dy值的代码永远不会被执行。

在keyPressed()代码中,是否检查是否正在处理VK_SHIFT键事件?您是使用调试器来遵循逻辑流还是添加println()语句?

相关内容

  • 没有找到相关文章

最新更新