Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

I am required to create a Suduku Game Board that looks like this: Here are the r

ID: 3866906 • Letter: I

Question

I am required to create a Suduku Game Board that looks like this:

Here are the requirements i need for this assignment, but am having some issues.

Use two for loops to draw the text fields instead of brute-force of listing 81 text fields. You should do something like:

for (int k = 1; k <= 9; k++) { JPanel level2 = new JPanel(); …. for (int i = 1; i <= 9; i++) { JTextField text = new JTextField(); … } gridPanel.add(level2); }

I need 2 classes in an application class named “TestSudoku” and a work class named “SudokuLayout.”

3.implement the following visual gadgets and write listeners for them. These gadgets have the following behaviors:

Button “Reset”---when the button is clicked, the program will clear the text area, then output the string “Reset button clicked!” to the text area.

Button “Hint”---when the button is clicked, the program will clear the text area, then output the string “Hint button clicked!” to the text area.

Combobox “Difficulty”---when an item is selected, the program will clear the text area, then output the selected item name to the text area. implement the listeners using loosely coupled methods (private listener class or private adapter class).

Testsudoku Reset Hint Solve New Puzzle Difficulty: Hard Output Area

Explanation / Answer

import java.awt.*; // Uses AWT's Layout Managers import java.awt.event.*; // Uses AWT's Event Handlers import javax.swing.*; // Uses Swing's Container/Components /** * The Sudoku game. * To solve the number puzzle, each row, each column, and each of the * nine 3×3 sub-grids shall contain all of the digits from 1 to 9 */ public class Sudoku extends JFrame { // Name-constants for the game properties public static final int GRID_SIZE = 9; // Size of the board public static final int SUBGRID_SIZE = 3; // Size of the sub-grid // Name-constants for UI control (sizes, colors and fonts) public static final int CELL_SIZE = 60; // Cell width/height in pixels public static final int CANVAS_WIDTH = CELL_SIZE * GRID_SIZE; public static final int CANVAS_HEIGHT = CELL_SIZE * GRID_SIZE; // Board width/height in pixels public static final Color OPEN_CELL_BGCOLOR = Color.YELLOW; public static final Color OPEN_CELL_TEXT_YES = new Color(0, 255, 0); // RGB public static final Color OPEN_CELL_TEXT_NO = Color.RED; public static final Color CLOSED_CELL_BGCOLOR = new Color(240, 240, 240); // RGB public static final Color CLOSED_CELL_TEXT = Color.BLACK; public static final Font FONT_NUMBERS = new Font("Monospaced", Font.BOLD, 20); // The game board composes of 9x9 JTextFields, // each containing String "1" to "9", or empty String private JTextField[][] tfCells = new JTextField[GRID_SIZE][GRID_SIZE]; // Puzzle to be solved and the mask (which can be used to control the // difficulty level). // Hardcoded here. Extra credit for automatic puzzle generation // with various difficulty levels. private int[][] puzzle = {{5, 3, 4, 6, 7, 8, 9, 1, 2}, {6, 7, 2, 1, 9, 5, 3, 4, 8}, {1, 9, 8, 3, 4, 2, 5, 6, 7}, {8, 5, 9, 7, 6, 1, 4, 2, 3}, {4, 2, 6, 8, 5, 3, 7, 9, 1}, {7, 1, 3, 9, 2, 4, 8, 5, 6}, {9, 6, 1, 5, 3, 7, 2, 8, 4}, {2, 8, 7, 4, 1, 9, 6, 3, 5}, {3, 4, 5, 2, 8, 6, 1, 7, 9}}; // For testing, open only 2 cells. private boolean[][] masks = {{false, false, false, false, false, true, false, false, false}, {false, false, false, false, false, false, false, false, true}, {false, false, false, false, false, false, false, false, false}, {false, false, false, false, false, false, false, false, false}, {false, false, false, false, false, false, false, false, false}, {false, false, false, false, false, false, false, false, false}, {false, false, false, false, false, false, false, false, false}, {false, false, false, false, false, false, false, false, false}, {false, false, false, false, false, false, false, false, false}}; /** * Constructor to setup the game and the UI Components */ public Sudoku() { Container cp = getContentPane(); cp.setLayout(new GridLayout(GRID_SIZE, GRID_SIZE)); // 9x9 GridLayout // Allocate a common listener as the ActionEvent listener for all the // JTextFields // ... [TODO 3] (Later) .... // Construct 9x9 JTextFields and add to the content-pane for (int row = 0; row