Compare commits

...

8 commits

Author SHA1 Message Date
Imbus
072da88135 Font size 2023-12-12 23:52:47 +01:00
Imbus
b02e846ec6 Icon 2023-12-12 23:51:40 +01:00
Imbus
970aabd532 Styling and slight refactor 2023-12-12 23:50:55 +01:00
Imbus
6ae83248ef Merge branch 'dogge' 2023-12-12 23:11:20 +01:00
dDogge
f8adb7402e Bold text added 2023-12-12 23:11:04 +01:00
Imbus
536f4e1b7d Merge branch 'dogge' 2023-12-12 23:09:56 +01:00
Imbus
7eab9da318 Making sure application is up to spec 2023-12-12 23:08:08 +01:00
dDogge
9f25270371 Sudoku board style 2023-12-12 21:01:01 +01:00
4 changed files with 48 additions and 11 deletions

View file

@ -1,6 +1,8 @@
package gui;
import javax.swing.*;
import javax.swing.border.Border;
import java.awt.*;
import java.awt.event.*;
@ -27,24 +29,42 @@ public class SudokuView extends JFrame {
setTitle("Sudoku Solver");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new BorderLayout());
setIconImage(new ImageIcon("src/main/resources/sudoku.png").getImage());
initializeGrid();
initializeButtons();
pack();
setLocationRelativeTo(null);
setMinimumSize(new Dimension(500, 500));
pack(); // Resize the window to fit the components, if necessary
setLocationRelativeTo(null); // Center the window
}
/** Initialize the grid, called by the constructor */
private void initializeGrid() {
grid = new JTextField[9][9];
JPanel gridPanel = new JPanel(new GridLayout(9, 9));
gridPanel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
int fontSize = 24;
String fontName = gridPanel.getFont().getName();
Border border = BorderFactory.createLineBorder(Color.BLACK);
Font font = new Font(fontName, Font.BOLD, fontSize);
for (int row = 0; row < 9; row++) {
for (int col = 0; col < 9; col++) {
grid[row][col] = new JTextField(2);
grid[row][col].setHorizontalAlignment(JTextField.CENTER);
gridPanel.add(grid[row][col]);
JTextField cell = new JTextField(2);
cell.setHorizontalAlignment(JTextField.CENTER);
cell.setFont(font);
cell.setBorder(border);
cell.setForeground(Color.BLACK);
// Set background color to gray for every third JTextField
if ((row / 3 + col / 3) % 2 == 1) {
cell.setBackground(Color.LIGHT_GRAY);
}
grid[row][col] = cell;
gridPanel.add(cell);
}
}

View file

@ -20,10 +20,18 @@ public class Solver implements SudokuSolver {
this.board = board;
}
/** {@inheritDoc} */
/**
* {@inheritDoc}
* <p>
* Note that this returns a copy of the board, not the actual board
*/
@Override
public int[][] getBoard() {
return board;
int[][] copy = new int[9][9];
for (int row = 0; row < 9; row++) {
System.arraycopy(board[row], 0, copy[row], 0, 9);
}
return copy;
}
/** Resets the board to all zeros */
@ -34,7 +42,6 @@ public class Solver implements SudokuSolver {
row[i] = 0;
}
}
// board = new int[9][9];
}
/* {@inheritDoc} */

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

View file

@ -17,8 +17,12 @@ class SolverTest {
Solver solver = new Solver();
int[][] board = new int[9][9];
solver.setBoard(board);
assertEquals(board, solver.getBoard());
for (int row = 0; row < 9; row++) {
assertArrayEquals(board[row], solver.getBoard()[row]);
}
}
@Test
void randomizeBoardTest() {
@ -28,6 +32,12 @@ class SolverTest {
assertNotEquals(board, solver.getBoard());
}
@Test
void emptyTest() {
Solver solver = new Solver();
assertTrue(solver.solve());
}
@Test
void legalTest() {
Solver solver = new Solver();