[英]How to draw continuous enemies in java 2D
我正在创建一个战舰游戏,屏幕底部的船会左右移动。 该船向从天上掉下的炸弹直射弹丸。
目的是让炸弹不断向玩家投下,以射击并避开。
到目前为止,我只是想像这样绘制:
public static Bomb b1, b2;
private Image image, Battleship, Background, Bomb;
@Override
public void start() {
bg1 = new Background(0, 0);
ship = new Ship();
b1 = new Bomb(340, -100);
b2 = new Bomb(700, -100);
Thread thread = new Thread(this);
thread.start();
}
@Override
public void run() {
while (true) {
ship.update();
ArrayList projectiles = ship.getProjectiles();
for(int i = 0; i < projectiles.size(); i++){
Projectile p = (Projectile) projectiles.get(i);
if(p.isVisible() == true){
p.update();
}else{
projectiles.remove(i);
}
}
b1.update();
b2.update();
bg1.update();
bg2.update();
repaint();
try {
Thread.sleep(17);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
@Override
public void paint(Graphics g) {
g.drawImage(Background, bg1.getBgX(), bg1.getBgY(), this);
ArrayList projectiles = ship.getProjectiles();
for(int i = 0; i < projectiles.size(); i++){
Projectile p = (Projectile) projectiles.get(i);
g.setColor(Color.BLACK);
g.fillRect(p.getX(), p.getY(), 5, 10);
}
g.drawImage(Battleship, ship.getCenterX() + 230, ship.getCenterY() -23, this);
g.drawImage(Bomb, b1.getCenterX() - 20, b1.getCenterY() - 19, this);
g.drawImage(Bomb, b2.getCenterX() - 20, b2.getCenterY() - 19, this);
g.setFont(font);
g.setColor(Color.BLACK);
g.drawString(text, 650, 30);
g.drawString(Integer.toString(score), 720, 30);
}
因此,我开始绘制的所有内容都将如何不断添加炸弹?
我在评论中的意思是这样的:
ArrayList bombs;
public void run() {
while (true) {
ship.update();
ArrayList projectiles = ship.getProjectiles();
for(int i = 0; i < projectiles.size(); i++){
Projectile p = (Projectile) projectiles.get(i);
if(p.isVisible() == true){
p.update();
}else{
projectiles.remove(i);
}
}
for(int i=0; i<bombs.size(); i++){
Bomb b = bombs.get(i);
b.update();
}
int timechangeinsec = getTimeChange(); //fix somehow
if(timechangeinsec > 5){
Bomb b = new Bomb(randomx, randomy);
bombs.add(b);
}
bg1.update();
bg2.update();
repaint();
try {
Thread.sleep(17);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
对于炸弹,是这样的:
for(int i=0; i<bombs.size(); i++){
Bomb b = bombs.get(i);
g.drawImage(Bomb, b.getCenterX() - 20, b.getCenterY() - 19, this);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.