File picker now refuses to load unsolvable files
This commit is contained in:
		
							parent
							
								
									e6cd5a2915
								
							
						
					
					
						commit
						270a9f381d
					
				
					 2 changed files with 21 additions and 4 deletions
				
			
		|  | @ -26,13 +26,13 @@ public class SudokuController { | |||
|             public void actionPerformed(ActionEvent e) { | ||||
|                 // Solve the board | ||||
|                 boolean solved = model.solve(); | ||||
|                 // Update the view | ||||
|                 view.updateView(model.getBoard()); | ||||
|                 if (!solved) { | ||||
|                     view.showErrorMessage("Could not solve the board."); | ||||
|                     System.out.println("Could not solve the board."); | ||||
|                     System.out.println(model.toString()); | ||||
|                 } else { | ||||
|                     // Update the view | ||||
|                     view.updateView(model.getBoard()); | ||||
|                 } | ||||
| 
 | ||||
|             } | ||||
|  | @ -70,6 +70,13 @@ public class SudokuController { | |||
|                 if (newBoard != null) { | ||||
|                     // Set the model | ||||
|                     model.setBoard(newBoard); | ||||
| 
 | ||||
|                     // Warn and clear if the board is not solvable | ||||
|                     if(!model.isSolvable()) { | ||||
|                         view.showErrorMessage("The board is not solvable."); | ||||
|                         model.clear(); | ||||
|                     } | ||||
| 
 | ||||
|                     // Update the view | ||||
|                     view.updateView(model.getBoard()); | ||||
|                 } | ||||
|  | @ -113,7 +120,7 @@ public class SudokuController { | |||
|             } | ||||
| 
 | ||||
|             // If the input is invalid, value < 0 indicates parse error | ||||
|             if (!model.isLegal(row, col, value) || value < 0) { | ||||
|             if (value != 0 && !model.isLegal(row, col, value) || value < 0) { | ||||
|                 value = 0; | ||||
|                 view.showErrorMessage("Invalid input. Try again."); | ||||
|             } | ||||
|  |  | |||
|  | @ -29,7 +29,12 @@ public class Solver implements SudokuSolver { | |||
|     /** Resets the board to all zeros */ | ||||
|     @Override | ||||
|     public void clear() { | ||||
|         board = new int[9][9]; | ||||
|         for (int[] row : board) { | ||||
|             for (int i = 0; i < row.length; ++i) { | ||||
|                 row[i] = 0; | ||||
|             } | ||||
|         } | ||||
|         // board = new int[9][9]; | ||||
|     } | ||||
| 
 | ||||
|     /* {@inheritDoc} */ | ||||
|  | @ -144,6 +149,11 @@ public class Solver implements SudokuSolver { | |||
|             return false; | ||||
|         } | ||||
| 
 | ||||
|         // Ihe the number is already present in the cell | ||||
|         if (board[row][col] == num) { | ||||
|             return true; | ||||
|         } | ||||
| 
 | ||||
|         // Check both the row and column | ||||
|         for (int i = 0; i < 9; i++) { | ||||
|             if (board[row][i] == num || board[i][col] == num) { | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Imbus
						Imbus