繁体   English   中英

如何在Java 2D中绘制连续敌人

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM