Advertisement
Moortiii

Sudoku Board Generator - Individual Boards

Jan 16th, 2018
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.05 KB | None | 0 0
  1. package com.company;
  2.  
  3. import javax.swing.*;
  4. import java.awt.*;
  5. import java.util.ArrayList;
  6. import java.util.Collections;
  7.  
  8. public class Main {
  9. public static void main(String[] args) {
  10. Main m = new Main();
  11. ArrayList<ArrayList<JTextField>> game_board = m.generateIndividualBoards();
  12. m.draw_gui(game_board);
  13. }
  14.  
  15. private ArrayList<ArrayList<JTextField>> generateIndividualBoards()
  16. {
  17. ArrayList<ArrayList<JTextField>> game_board = new ArrayList<>();
  18.  
  19. for(int i = 0; i < 9; i++)
  20. {
  21. game_board.add(new ArrayList<>());
  22. for(int j = 0; j < 9; j++)
  23. {
  24. game_board.get(i).add(new JTextField("" + (j + 1), 4));
  25. }
  26. }
  27.  
  28. for(ArrayList<JTextField> individual_board : game_board)
  29. {
  30. Collections.shuffle(individual_board);
  31. }
  32. return game_board;
  33. }
  34.  
  35. private void draw_gui(ArrayList<ArrayList<JTextField>> game_board) {
  36. JFrame frame = new JFrame("Sudoku Board");
  37. JPanel panel = new JPanel();
  38. JMenuBar menu_bar = new JMenuBar();
  39. JMenu file_menu = new JMenu("File");
  40. JMenuItem new_game = new JMenuItem("New Game");
  41. JMenuItem delete_game = new JMenuItem("Delete Game");
  42. JMenuItem exit = new JMenuItem("Exit");
  43.  
  44. for(ArrayList<JTextField> individual_board : game_board)
  45. {
  46. for(JTextField game_tile : individual_board) {
  47. int index = individual_board.indexOf(game_tile);
  48. String current_tile = game_tile.getText();
  49. if(index > 9) {
  50. int index_check = index - 9;
  51. String check_tile = individual_board.get(index_check).getText();
  52. boolean used = false;
  53. while(index_check > 0) {
  54. if(current_tile.equals(check_tile))
  55. {
  56. used = true;
  57. }
  58. index_check -= 9;
  59. }
  60. if(!used)
  61. {
  62. panel.add(game_tile);
  63. game_tile.setPreferredSize(new Dimension(150, 50));
  64. game_tile.setHorizontalAlignment(JTextField.CENTER);
  65. } else {
  66. Collections.shuffle(individual_board);
  67. }
  68. } else {
  69. panel.add(game_tile);
  70. game_tile.setPreferredSize(new Dimension(150, 50));
  71. game_tile.setHorizontalAlignment(JTextField.CENTER);
  72. }
  73. }
  74. }
  75.  
  76. frame.setJMenuBar(menu_bar);
  77.  
  78. menu_bar.add(file_menu);
  79. file_menu.add(new_game);
  80. file_menu.add(delete_game);
  81. file_menu.add(exit);
  82.  
  83. panel.setLayout(new GridLayout(9, 9));
  84. frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
  85. frame.add(panel);
  86. frame.pack();
  87. frame.setVisible(true);
  88. }
  89. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement