Moortiii icon

Sudoku Board Generator - Individual Boards

Moortiii | PRO | 01/16/18 12:54:42 PM UTC | 0 ⭐ | 374 👁️ | Never ⏰ | []
text |

3.05 KB

|

None

|

0 👍

/

0 👎

package com.company;
 import javax.swing.*;
import java.awt.*;
import java.util.ArrayList;
import java.util.Collections;
 public class Main {
    public static void main(String[] args) {
        Main m = new Main();
        ArrayList<ArrayList<JTextField>> game_board = m.generateIndividualBoards();
        m.draw_gui(game_board);
    }
     private ArrayList<ArrayList<JTextField>> generateIndividualBoards()
    {
        ArrayList<ArrayList<JTextField>> game_board = new ArrayList<>();
         for(int i = 0; i < 9; i++)
        {
            game_board.add(new ArrayList<>());
            for(int j = 0; j < 9; j++)
            {
                game_board.get(i).add(new JTextField("" + (j + 1), 4));
            }
        }
         for(ArrayList<JTextField> individual_board : game_board)
        {
            Collections.shuffle(individual_board);
        }
        return game_board;
    }
     private void draw_gui(ArrayList<ArrayList<JTextField>> game_board) {
        JFrame frame = new JFrame("Sudoku Board");
        JPanel panel = new JPanel();
        JMenuBar menu_bar = new JMenuBar();
        JMenu file_menu = new JMenu("File");
        JMenuItem new_game = new JMenuItem("New Game");
        JMenuItem delete_game = new JMenuItem("Delete Game");
        JMenuItem exit = new JMenuItem("Exit");
         for(ArrayList<JTextField> individual_board : game_board)
        {
            for(JTextField game_tile : individual_board) {
                int index = individual_board.indexOf(game_tile);
                String current_tile = game_tile.getText();
                if(index > 9) {
                    int index_check = index - 9;
                    String check_tile = individual_board.get(index_check).getText();
                    boolean used = false;
                    while(index_check > 0) {
                        if(current_tile.equals(check_tile))
                        {
                            used = true;
                        }
                        index_check -= 9;
                    }
                    if(!used)
                    {
                        panel.add(game_tile);
                        game_tile.setPreferredSize(new Dimension(150, 50));
                        game_tile.setHorizontalAlignment(JTextField.CENTER);
                    } else {
                        Collections.shuffle(individual_board);
                    }
                } else {
                    panel.add(game_tile);
                    game_tile.setPreferredSize(new Dimension(150, 50));
                    game_tile.setHorizontalAlignment(JTextField.CENTER);
                }
            }
        }
         frame.setJMenuBar(menu_bar);
         menu_bar.add(file_menu);
        file_menu.add(new_game);
        file_menu.add(delete_game);
        file_menu.add(exit);
         panel.setLayout(new GridLayout(9, 9));
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        frame.add(panel);
        frame.pack();
        frame.setVisible(true);
    }
}

Comments