import java.awt.*; import java.awt.Graphics; import javax.swing.*; public class GameOfLifeGUI extends JFrame { private int squareSize = 7; private int numberOfRows; private int numberOfColumns; private JLabel[][] labelGrid; private GridLayout gridLayout; private JPanel gridPanel; private JFrame frame; public GameOfLifeGUI(Grid g) { this.numberOfRows = g.getNumberOfRows(); this.numberOfColumns = g.getNumberOfColumns(); gridLayout = new GridLayout(numberOfRows, numberOfColumns); gridPanel = new JPanel(gridLayout); labelGrid = new JLabel[numberOfRows][numberOfColumns]; for (int x = 0; x < numberOfColumns; x++) for (int y = 0; y < numberOfRows; y++){ labelGrid[x][y] = new JLabel("*"); JLabel label; if(g.getCell(x,y).isAlive()) labelGrid[x][y].setForeground(Color.red); else labelGrid[x][y].setForeground(Color.white); gridPanel.add(labelGrid[x][y]); } frame = new JFrame("Game of Life"); frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); frame.setContentPane(gridPanel); frame.setSize(squareSize * numberOfRows, squareSize * numberOfColumns); frame.setLocationByPlatform(true); frame.setVisible(true); } public void update(Grid g){ for (int x = 0; x < numberOfColumns; x++) for (int y = 0; y < numberOfRows; y++){ JLabel label = labelGrid[x][y]; //On regarde ici si la cellule est vivante if(g.getCell(x,y).isAlive()) { //On fonction de l'instance qui gère la couleur on change sa couleur sur la grille if ((g.getCell(x,y).getColor()).equals("Red")) { label.setForeground(Color.red); } else { label.setForeground(Color.blue); } } //sinon on l'a met blanc else label.setForeground(Color.white); } } }