Advertisement
Guest User

Untitled

a guest
May 5th, 2015
255
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.30 KB | None | 0 0
  1. package oving7.sudoku;
  2. import java.util.Scanner;
  3. import java.util.Random;
  4. import java.util.Stack;
  5. import java.io.File;
  6. import java.io.FileNotFoundException;
  7. import java.io.PrintWriter;
  8. import java.util.ArrayList;
  9.  
  10. import oving7.sudoku.Board;
  11.  
  12. public class SudokuGame {
  13. Scanner inputScan = new Scanner(System.in);
  14. SudokuBoard sudokuBoard = new SudokuBoard(game_getSudokuGame());
  15. String inputString;
  16. static private ArrayList <String> gameMoves = new ArrayList <String>();
  17. static private Stack <String> regretMoves = new Stack <String>();
  18. private boolean play = true;
  19.  
  20. void game_runGame() throws FileNotFoundException{
  21. game_displayGameInfo();
  22. while( play ){
  23. sudokuBoard.printBoard();
  24. inputString = inputScan.nextLine().toLowerCase();
  25.  
  26. switch ( inputString ) {
  27. case "save":
  28. game_saveGame();
  29. System.out.println("game saved.");
  30. break;
  31. case "regret": {
  32. String regretMove = gameMoves.get( gameMoves.size() - 1 );
  33. char[] toChar = Character.toChars( Integer.parseInt(regretMove.substring(1, 2)) + 97 /*UTF-16 has 97 for letter 'a' */ );
  34. inputString = "-" + Integer.parseInt(regretMove.substring( 0, 1 ) ) + Character.toString(toChar[0]);
  35. game_addToRegretMoves( regretMove );
  36. break;
  37. }
  38. case "forward": {
  39. if ( ! regretMoves.isEmpty() ) {
  40. String stringCopy = regretMoves.pop();
  41. char[] toChar = Character.toChars( Integer.parseInt(stringCopy.substring(1, 2)) + 97 /*UTF-16 has 97 for letter 'a' */ );
  42. inputString = stringCopy.substring(0, 1) + Character.toString(toChar[0]) + stringCopy.substring(2, 3);
  43.  
  44. } else {
  45. System.out.println("no forward action possible");
  46. }
  47. break;
  48. }
  49. case "quit":
  50. play = false;
  51. break;
  52. }
  53. if ( inputString.charAt(0) == '-' ) {
  54. int inputRow = Integer.parseInt( inputString.substring(1,2) );
  55. int inputColumn = Character.getNumericValue( inputString.charAt(2) ) - 10;
  56.  
  57. // updates the saveFile
  58. int entryToBeReplaced = 0;
  59. try {
  60. if ( sudokuBoard.getEntry(inputRow, inputColumn) != "." ) {
  61. entryToBeReplaced = Integer.parseInt(sudokuBoard.getEntry( inputRow, inputColumn ).substring(0, 1) );
  62. int index = gameMoves.indexOf(Integer.toString(inputRow) + Integer.toString(inputColumn) + Integer.toString(entryToBeReplaced ) );
  63. gameMoves.remove(index);
  64. }
  65. } catch (Exception e){ System.out.println("something went wrong");}
  66.  
  67. sudokuBoard.sudoku_clearEntry( inputRow, inputColumn );
  68.  
  69. } else if ( inputString.length() == 3 ) {
  70. int inputRow = Integer.parseInt(inputString.substring(0, 1));
  71. int inputColumn = Character.getNumericValue(inputString.charAt(1)) - 10; //API is being a fuck up here. remove 10.
  72. int inputValue = Integer.parseInt(inputString.substring(2,3));
  73. sudokuBoard.sudoku_overwriteEntry(inputRow, inputColumn, inputValue);
  74. game_addToGameMoves(Integer.toString(inputRow) + Integer.toString(inputColumn) + Integer.toString(inputValue) );
  75. } else {
  76. System.out.println("no furher action.");
  77. }
  78. sudokuBoard.checkAnyInconsistentNumber(9, 9);
  79. game_clearScreen();
  80.  
  81. }
  82. }
  83. static void game_addToGameMoves( String newMove ) {
  84. gameMoves.add( newMove );
  85. }
  86. static void game_addToRegretMoves ( String newMove ) {
  87. regretMoves.push( newMove );
  88. }
  89. static void game_saveGame () throws FileNotFoundException {
  90. File file = new File ("C:/Users/Mikael-pc/workspace/oop/src/oving7/sudoku/saveFile.txt");
  91. PrintWriter printWriter = new PrintWriter ( file );
  92. for ( int i = 0; i < gameMoves.size(); i++ ) {
  93. printWriter.println ( gameMoves.get(i) );
  94. }
  95. printWriter.close();
  96. System.out.println("done");
  97. }
  98.  
  99. void game_displayGameInfo(){
  100. System.out.println("row = [NUM 1 - 9], column = [a - i] value = [NUM 1 - 9]");
  101. System.out.println("Game is zero-indexed.");
  102. }
  103. String game_getSudokuGame(){
  104. String[] gamePick = {".....2..38.273.45....6..87.9.8..5367..6...1..4513..9.8.84..3....79.512.62..8.....",
  105. ".68.257.3..........71..39..61.35.2...8.....4...3.64.95..76..58..........8.653.42.",
  106. ".....59.4.8..9.6.5..6....3..3.7.145...8.4.7...742.6.9..6....3..8.1.6..7.3.98.....",
  107. "...6...513....2..66...3..89..4.2.6...3.418.2...8.7.1..59..6...38..3....241...9..."
  108. };
  109. Random randomVal = new Random();
  110. return gamePick[randomVal.nextInt(4)];
  111. }
  112. void game_clearScreen() {
  113. for ( int i = 0; i < 25; i++ ) {
  114. System.out.println("\n");
  115. }
  116. }
  117.  
  118. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement