import javax.swing.*;
import java.awt.*;
import java.util.ArrayList;
import java.util.List;

public class GamePanel extends JPanel {
    // 英雄机
    Hero hero = new Hero();

    // 敌机列表
    List<Enemy> enemies = new ArrayList<>();

    // 子弹列表
    List<TrackingBullet> bullets = new ArrayList<>();

    // 分数
    int score = 0;

    public GamePanel() {
        // 初始化敌机
        for (int i = 0; i < 5; i++) {
            enemies.add(new Enemy(100 + i * 100, 50));
        }

        // 定时器，用于更新游戏状态
        Timer timer = new Timer(16, e -> update());
        timer.start();
    }

    private void update() {
        // 更新英雄机位置
        hero.update();

        // 更新敌机位置
        for (Enemy enemy : enemies) {
            enemy.update();
        }

        // 更新子弹位置
        for (TrackingBullet bullet : bullets) {
            bullet.update(enemies);
        }

        // 检测碰撞
        for (TrackingBullet bullet : bullets) {
            for (Enemy enemy : enemies) {
                if (bullet.intersects(enemy)) {
                    enemies.remove(enemy);
                    bullets.remove(bullet);
                    score += 10;
                    break;
                }
            }
        }

        // 重新绘制面板
        repaint();
    }

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        setBackground(Color.BLACK);

        // 绘制英雄机
        g.drawImage(hero.img, hero.x, hero.y, hero.w, hero.h, null);

        // 绘制敌机
        for (Enemy enemy : enemies) {
            g.drawImage(enemy.img, enemy.x, enemy.y, enemy.w, enemy.h, null);
        }

        // 绘制子弹
        for (TrackingBullet bullet : bullets) {
            g.drawImage(bullet.img, bullet.x, bullet.y, bullet.w, bullet.h, null);
        }

        // 绘制分数
        g.setColor(Color.WHITE);
        g.setFont(new Font("Arial", Font.BOLD, 20));
        g.drawString("Score: " + score, 10, 30);
    }

    public void shoot() {
        bullets.add(new TrackingBullet(hero.x + hero.w / 2, hero.y));
    }
}