Advertisement
Guest User

Untitled

a guest
Nov 17th, 2017
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.18 KB | None | 0 0
  1. import java.util.Scanner;
  2.  
  3. public class Main {
  4.  
  5.  
  6. private static String[] discs = {"X", "O"};
  7.  
  8. public static String[] getDiscs() {
  9. return discs;
  10. }
  11.  
  12. private static String[] getValidCells(int[] columnHeights, Scanner reader){
  13. boolean error = false;
  14.  
  15. String[] unUsuableCells;
  16. do {
  17. error = false;
  18. StringBuilder errorMessage = new StringBuilder();
  19.  
  20. unUsuableCells = reader.nextLine().split(" ");
  21. if(unUsuableCells.length != 2){
  22. errorMessage.append("Must give 2 cells\n");
  23. error = true;
  24. }
  25. else if(unUsuableCells[0].equals(unUsuableCells[1])){
  26. errorMessage.append("Must give 2 distinct cells\n");
  27. error = true;
  28. }
  29. else {
  30. for (int i = 0; i < unUsuableCells.length; i++) {
  31. int col = unUsuableCells[i].charAt(0) - 'A';
  32. int row = Character.getNumericValue(unUsuableCells[i].charAt(1)) - 1;
  33.  
  34. if (col < 0 || col >= columnHeights.length) {
  35. error = true;
  36. errorMessage.append("Invalid set of columns (letters)\n");
  37. } else if (row < 0 || row >=columnHeights[col]) {
  38. error = true;
  39. errorMessage.append("Invalid set of rows (must be 1 - height of column)\n");
  40. }
  41. if (error) {
  42. break;
  43. }
  44. }
  45. }
  46.  
  47. if (error) {
  48. errorMessage.append("Please enter valid cells\n");
  49. System.out.println(errorMessage.toString());
  50. }
  51. } while (error);
  52. return unUsuableCells;
  53. }
  54.  
  55.  
  56. private static void compVSCompSimulation(Board board){
  57. String[][] originalCells =
  58. new String[board.getCells().length][board.getColumnHeights().length];
  59.  
  60.  
  61. for(int i=0; i<originalCells.length; i++){
  62. for(int j=0; j<originalCells[i].length; j++){
  63. originalCells[i][j] = board.getCells()[i][j];
  64. }
  65. }
  66.  
  67. ComputerPlayer[] players = new ComputerPlayer[2];
  68. ComputerPlayer player1 = new ComputerPlayer("X", 0);
  69. ComputerPlayer player2 = new ComputerPlayer("O", 0);
  70. players[0] = player1;
  71. players[1] = player2;
  72. int wins[];
  73. int winner;
  74.  
  75. //both are computer
  76. int[] efforts = new int[]{80, 150, 500, 2000};
  77.  
  78. int currPlayer;
  79.  
  80. for(int k=0; k<1; k++) {
  81. player1.effort = efforts[k];
  82.  
  83. for (int j = 0; j < 1; j++) {
  84. player2.effort = efforts[j];
  85. wins = new int[2];
  86. for (int i = 0; i < 100; i++) {
  87. currPlayer = 0;
  88. while (!board.haveWinner() && (!board.boardIsFull())) {
  89. players[currPlayer].makeMove(board);
  90. currPlayer = currPlayer ^ 1;
  91. }
  92.  
  93. winner = currPlayer ^ 1;
  94. wins[winner]++;
  95.  
  96. board.setCells(originalCells);
  97. }
  98.  
  99. System.out.println(((ComputerPlayer) players[0]).effort + " effort -> " + wins[0]);
  100. System.out.println(((ComputerPlayer) players[1]).effort + " effort -> " + wins[1]);
  101. }
  102. }
  103. }
  104.  
  105.  
  106. private static void oneGame(Board board, Scanner reader){
  107. board.printBoard();
  108.  
  109. Player player1;
  110. Player player2;
  111.  
  112. String effort = "";
  113.  
  114. System.out.println("Human-vs-Computer or Computer-vs-Computer? (1/2) ");
  115. String gameType = reader.nextLine();
  116. if(gameType.equals("1")){
  117. player1 = new HumanPlayer("X", reader);
  118. System.out.println("Enter effort of Computer player: ");
  119. effort = reader.nextLine();
  120. player2 = new ComputerPlayer("O", Integer.parseInt(effort));
  121. }
  122. else {
  123. System.out.println("Enter effort of Computer player1: ");
  124. effort = reader.nextLine();
  125. player1 = new ComputerPlayer("X", Integer.parseInt(effort));
  126. System.out.println("Enter effort of Computer player2: ");
  127. effort = reader.nextLine();
  128. player2 = new ComputerPlayer("O", Integer.parseInt(effort));
  129. }
  130.  
  131. int currPlayer = 0;
  132.  
  133. System.out.println("Which player will go first? (1/2)");
  134. String firstPlayer = reader.nextLine();
  135. if(firstPlayer.equals("2")){
  136. currPlayer = 1;
  137. }
  138.  
  139.  
  140.  
  141. Player[] players = new Player[]{player1, player2};
  142.  
  143.  
  144. int winner = 0;
  145.  
  146. while(!board.haveWinner() && (!board.boardIsFull())){
  147.  
  148. players[currPlayer].makeMove(board);
  149. if(player1 instanceof HumanPlayer){
  150. board.printBoard();
  151. }
  152. currPlayer = currPlayer ^ 1;
  153. }
  154.  
  155. winner = currPlayer ^ 1;
  156.  
  157. System.out.println("GAME OVER");
  158. if(board.haveWinner()){
  159. System.out.println("Player"+(winner+1)+" is the winner!");
  160. }
  161. else {
  162. System.out.println("DRAW!");
  163. }
  164. }
  165.  
  166.  
  167. public static void main(String[] args) {
  168.  
  169. System.out.println("Game setup:\n");
  170.  
  171.  
  172. Scanner reader = new Scanner(System.in);
  173. String[] heights = reader.nextLine().split(" ");
  174.  
  175. while(heights.length < 6 || heights.length > 11){
  176. System.out.println("Invalid columns - Must be between 6-11 columns\n");
  177. System.out.println("Please enter a valid set of columns");
  178. heights = reader.nextLine().split(" ");
  179. }
  180.  
  181.  
  182.  
  183. int[] columnHeights = new int[heights.length];
  184. for (int i = 0; i < heights.length; i++) {
  185. columnHeights[i] = Integer.parseInt(heights[i]);
  186. }
  187.  
  188.  
  189.  
  190. Board board = new Board(columnHeights, getValidCells(columnHeights, reader));
  191. board.setup();
  192.  
  193. //oneGame(board, reader);
  194. compVSCompSimulation(board);
  195.  
  196. reader.close();
  197.  
  198.  
  199. }
  200. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement