Java游戏-潜艇杀手-随时按下向下键发射炸弹
我有这段代码,我试图学习Java,这基本上是我的第一个游戏,它类似于潜艇杀手,你是一艘船,向潜艇发射炸弹。 我下面的班级是炸弹。当我按下向下箭头时,炸弹会发射,但我不能发射另一颗,直到它击中潜艇或离开屏幕。我的问题是:如何在第一颗炸弹离开船后立即发射下一颗炸弹?基本上只要我按下向下键就可以发射炸弹Java游戏-潜艇杀手-随时按下向下键发射炸弹,java,applet,awt,key-events,Java,Applet,Awt,Key Events,我有这段代码,我试图学习Java,这基本上是我的第一个游戏,它类似于潜艇杀手,你是一艘船,向潜艇发射炸弹。 我下面的班级是炸弹。当我按下向下箭头时,炸弹会发射,但我不能发射另一颗,直到它击中潜艇或离开屏幕。我的问题是:如何在第一颗炸弹离开船后立即发射下一颗炸弹?基本上只要我按下向下键就可以发射炸弹 public void keyPressed(KeyEvent evt) { int code = evt.getKeyCode(); if (code == KeyEve
public void keyPressed(KeyEvent evt) {
int code = evt.getKeyCode();
if (code == KeyEvent.VK_DOWN) {
if (bomb.isFalling == false)
bomb.isFalling = true;
}
}
-
私有类炸弹{
int centerX,centerY;
他正在下降;
炸弹(){
isFalling=false;
}
void updateForNewFrame(){
如果(正在下降){
如果(中心>高度){
isFalling=false;
}
其他的
if(数学abs(centerX-sub.centerX)您需要根据炸弹列表而不是单个炸弹来重写代码。然后,您的按键事件需要更改以向列表中添加新炸弹,而不仅仅是设置单个炸弹的属性。然后,您的处理代码也需要更改-您需要循环列表并依次处理每个炸弹。最好早点帮上忙,发个帖子。谢谢你的回答,我还是没弄明白,但我会继续努力的。
private class Bomb {
int centerX, centerY;
boolean isFalling;
Bomb() {
isFalling = false;
}
void updateForNewFrame() {
if (isFalling) {
if (centerY > height) {
isFalling = false;
}
else
if (Math.abs(centerX - sub.centerX) <= 36 && Math.abs(centerY - sub.centerY) <= 21) {
sub.isExploding = true;
sub.explosionFrameNumber = 1;
isFalling = false; // Bomba reapare in barca
}
else {
centerY += 10;
}
}
}
void draw(Graphics g) {
if ( !isFalling ) {
centerX = boat.centerX;
centerY = boat.centerY + 23;
}
g.setColor(Color.RED);
g.fillOval(centerX - 8, centerY - 8, 16, 16);
}
}