import java.awt.Color; import java.awt.Graphics; class RenderBoard { private int boardWidth; private int boardHeight; public int renderWidth; public int renderHeight; private int cellSize; private int borderThickness; // private int[][] boardState; public RenderBoard(int width, int height, int renderWidth, int renderHeight) { this.boardWidth = width; this.boardHeight = height; this.renderWidth = renderWidth; this.renderHeight = renderHeight; this.borderThickness = 5; int cellWidth = renderWidth / width; int cellHeight = renderHeight / height; this.cellSize = Math.min(cellWidth, cellHeight); } public RenderBoard(int renderWidth, int renderHeight) { this( GomokuGame.DEFAULT_BOARD_WIDTH, GomokuGame.DEFAULT_BOARD_HEIGHT, renderWidth, renderHeight ); } public void update(GomokuGame game) { // Update the board state based on the game // This method should be called whenever the game state changes } public void drawBoard(Graphics g, int x, int y) { // Draw the global border g.setColor(Color.LIGHT_GRAY); g.fillRect( x, y, this.renderWidth + 2 * this.borderThickness, this.renderHeight + 2 * this.borderThickness ); g.setColor(Color.WHITE); g.fillRect( x + this.borderThickness, y + this.borderThickness, this.renderWidth, this.renderHeight ); int i, j; int cy = y + this.borderThickness; for (i = 0; i < this.boardHeight; i++) { int cx = x + this.borderThickness; for (j = 0; j < this.boardWidth; j++) { // Draw the border g.setColor(Color.LIGHT_GRAY); g.fillRect( cx, cy, this.cellSize, this.cellSize ); g.setColor(Color.WHITE); g.fillRect( cx + this.borderThickness, cy + this.borderThickness, this.cellSize - 2 * this.borderThickness, this.cellSize - 2 * this.borderThickness ); // Draw the cell this.drawToken(g, x, y, Color.BLUE); cx += this.cellSize; } cy += this.cellSize; } } public void drawToken(Graphics g, int x, int y, Color color) { // Draw the token at the specified position g.setColor(color); g.fillRect( x + 2 * this.borderThickness, y + 2 * this.borderThickness, cellSize - 2 * borderThickness, cellSize - 2 * borderThickness ); } }