code java territoire

🧩 Syntax:
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;

import javax.swing.JFrame;
import javax.swing.JPanel;

class Territory {
    private int x;
    private int y;
    private int size;
    private Color color;

    public Territory(int x, int y, int size) {
        this.x = x;
        this.y = y;
        this.size = size;
        this.color = generateRandomColor();
    }

    public int getX() {
        return x;
    }

    public int getY() {
        return y;
    }

    public int getSize() {
        return size;
    }

    public Color getColor() {
        return color;
    }

    public void setSize(int size) {
        this.size = size;
    }

    public void setColor(Color color) {
        this.color = color;
    }

    private Color generateRandomColor() {
        Random random = new Random();
        int r = random.nextInt(256);
        int g = random.nextInt(256);
        int b = random.nextInt(256);
        return new Color(r, g, b);
    }
}

class GamePanel extends JPanel implements KeyListener {
    private static final long serialVersionUID = 1L;
    private static final int WIDTH = 800;
    private static final int HEIGHT = 600;
    private static final int TERRITORY_SIZE = 20;

    private List<Territory> territories;
    private boolean[] keys;

    public GamePanel() {
        setPreferredSize(new java.awt.Dimension(WIDTH, HEIGHT));
        setBackground(Color.WHITE);
        setFocusable(true);
        addKeyListener(this);

        territories = new ArrayList<>();
        keys = new boolean[256];
    }

    public void addTerritory(Territory territory) {
        territories.add(territory);
    }

    public void updateTerritories() {
        for (Territory territory : territories) {
            if (keys[KeyEvent.VK_SPACE]) {
                // Augmenter la taille des territoires lorsque la touche Espace est enfoncée
                territory.setSize(territory.getSize() + 1);
            }
        }
    }

    public void drawTerritories(Graphics g) {
        for (Territory territory : territories) {
            int x = territory.getX();
            int y = territory.getY();
            int size = territory.getSize();
            Color color = territory.getColor();

            g.setColor(color);
            g.fillRect(x, y, size, size);
        }
    }

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

        drawTerritories(g);
    }

    @Override
    public void keyPressed(KeyEvent e) {
        int keyCode = e.getKeyCode();
        if (keyCode >= 0 && keyCode < keys.length) {
            keys[keyCode] = true;
        }
    }

    @Override
    public void keyReleased(KeyEvent e) {
        int keyCode = e.getKeyCode();
        if (keyCode >= 0 && keyCode < keys.length) {
            keys[keyCode] = false;
        }
    }

    @Override
    public void keyTyped(KeyEvent e) {
        // Ne fait rien
    }
}

public class TerritoryGame extends JFrame {
    private static final long serialVersionUID = 1L;
    private static final int NUM_TERRITORIES = 10;

    private GamePanel gamePanel;

    public TerritoryGame() {
        setTitle("Jeu de territoire");
        setDefaultCloseOperation(EXIT_ON_CLOSE);

        gamePanel = new GamePanel();
        add(gamePanel);

        pack();
        setLocationRelativeTo(null);
        setVisible(true);
    }

    public void initializeTerritories() {
        Random random = new Random();
        for (int i = 0; i < NUM_TERRITORIES; i++) {
            int x = random.nextInt(GamePanel.WIDTH - TERRITORY_SIZE);
            int y = random.nextInt(GamePanel.HEIGHT - TERRITORY_SIZE);
            int size = random.nextInt(50) + 10;

            Territory territory = new Territory(x, y, size);
            gamePanel.addTerritory(territory);
        }
    }

    public void gameLoop() {
        while (true) {
            gamePanel.updateTerritories();
            gamePanel.repaint();

            try {
                Thread.sleep(10);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

    public static void main(String[] args) {
        TerritoryGame game = new TerritoryGame();
        game.initializeTerritories();
        game.gameLoop();
    }
}