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 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(); } }