Add labels

This commit is contained in:
Dorian HAMDANI
2025-04-07 10:13:49 +02:00
parent cdf1699559
commit c6aae89834
4 changed files with 102 additions and 17 deletions

16
.cache/save.dat Normal file
View File

@@ -0,0 +1,16 @@
15 15 BLACK 2 51 52
...............
...............
...............
...............
........X......
.......OX......
......XXOO.....
.......XOXO....
.......XX..O...
.......O....O..
.............X.
...............
...............
...............
...............

16
.cache/test.dat Normal file
View File

@@ -0,0 +1,16 @@
15 15 BLACK 2 51 52
...............
...............
...............
...............
........X......
.......OX......
......XXOO.....
.......XOXO....
.......XX..O...
.......O....O..
.............X.
...............
...............
...............
...............

View File

@@ -9,7 +9,6 @@ class RenderBoard {
public int renderHeight; public int renderHeight;
private int cellSize; private int cellSize;
private int borderThickness; private int borderThickness;
// private int[][] boardState;
public RenderBoard(int width, int height, int renderWidth, int renderHeight) { public RenderBoard(int width, int height, int renderWidth, int renderHeight) {
this.boardWidth = width; this.boardWidth = width;
@@ -74,7 +73,9 @@ class RenderBoard {
this.cellSize - 2 * this.borderThickness this.cellSize - 2 * this.borderThickness
); );
// Draw the cell // Draw the cell
this.drawToken(g, x, y, Color.BLUE); if (i == boardWidth / 2 && j == boardHeight / 2) {
this.drawToken(g, cx, cy, Color.BLUE);
}
cx += this.cellSize; cx += this.cellSize;
} }
cy += this.cellSize; cy += this.cellSize;
@@ -85,8 +86,8 @@ class RenderBoard {
// Draw the token at the specified position // Draw the token at the specified position
g.setColor(color); g.setColor(color);
g.fillRect( g.fillRect(
x + 2 * this.borderThickness, x + borderThickness,
y + 2 * this.borderThickness, y + borderThickness,
cellSize - 2 * borderThickness, cellSize - 2 * borderThickness,
cellSize - 2 * borderThickness cellSize - 2 * borderThickness
); );

View File

@@ -4,8 +4,11 @@ import javax.swing.BorderFactory;
import java.awt.Color; import java.awt.Color;
import java.awt.Dimension; import java.awt.Dimension;
import javax.swing.JFrame; import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel; import javax.swing.JPanel;
import java.awt.Graphics; import java.awt.Graphics;
import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;
public class SwingRenderer extends GomokuRenderer { public class SwingRenderer extends GomokuRenderer {
@@ -22,17 +25,38 @@ public class SwingRenderer extends GomokuRenderer {
@Override @Override
public void init(GomokuGame game) { public void init(GomokuGame game) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
mainFrame = new JFrame("Gomoku! - Projet L2"); mainFrame = new JFrame("Gomoku! - Projet L2");
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainFrame.setSize(960, 960); mainFrame.setSize(960, 960);
mainFrame.setResizable(false);
canvas = new RenderCanvas(); canvas = new RenderCanvas();
mainFrame.add(canvas); mainFrame.add(canvas);
mainFrame.pack(); mainFrame.pack();
mainFrame.setVisible(true); mainFrame.setVisible(true);
} mainFrame.addMouseListener(canvas);
});
// add a label component for the title
JLabel titleLabel = new JLabel("Gomoku Game!", JLabel.CENTER);
titleLabel.setVerticalAlignment(JLabel.CENTER);
titleLabel.setBackground(Color.WHITE);
titleLabel.setOpaque(true);
titleLabel.setBorder(BorderFactory.createEmptyBorder(20, 0, 20, 0));
// set the font size and color
titleLabel.setFont(titleLabel.getFont().deriveFont(24f));
mainFrame.add(titleLabel, "North");
mainFrame.pack();
// add a bottom label for the status
JLabel statusLabel = new JLabel("Status: Waiting for player...", JLabel.CENTER);
statusLabel.setVerticalAlignment(JLabel.CENTER);
statusLabel.setBackground(Color.WHITE);
statusLabel.setOpaque(true);
statusLabel.setBorder(BorderFactory.createEmptyBorder());
// set the font size and color
statusLabel.setFont(statusLabel.getFont().deriveFont(18f));
mainFrame.add(statusLabel, "South");
mainFrame.pack();
} }
@Override @Override
@@ -41,14 +65,20 @@ public class SwingRenderer extends GomokuRenderer {
// This method should be called whenever the game state changes // This method should be called whenever the game state changes
canvas.draw(game); canvas.draw(game);
} }
public void updateStatus(String status) {
// Update the status label
JLabel statusLabel = (JLabel) mainFrame.getContentPane().getComponent(1);
statusLabel.setText("Status: " + status);
}
} }
class RenderCanvas extends JPanel { class RenderCanvas extends JPanel implements MouseListener {
public RenderBoard board; public RenderBoard board;
public RenderCanvas() { public RenderCanvas() {
setBorder(BorderFactory.createLineBorder(Color.black)); setBorder(BorderFactory.createEmptyBorder());
setBackground(Color.white); setBackground(Color.white);
board = new RenderBoard(15, 15, 600, 600); board = new RenderBoard(15, 15, 600, 600);
} }
@@ -72,4 +102,26 @@ class RenderCanvas extends JPanel {
board.update(game); board.update(game);
repaint(); repaint();
} }
@Override
public void mouseClicked(MouseEvent e) {
// Handle mouse click events
int x = e.getX();
int y = e.getY();
System.out.println("Mouse clicked at: " + x + ", " + y);
}
@Override
public void mousePressed(MouseEvent e) {
// Handle mouse press events
int x = e.getX();
int y = e.getY();
System.out.println("Mouse pressed at: " + x + ", " + y);
}
@Override
public void mouseReleased(MouseEvent e) {}
@Override
public void mouseEntered(MouseEvent e) {}
@Override
public void mouseExited(MouseEvent e) {}
} }