Advertisement
Guest User

BINKO

a guest
Oct 12th, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.31 KB | None | 0 0
  1. import java.util.Scanner;
  2.  
  3. public class Bingo {
  4.  
  5. private boolean hasBingo;
  6. private int[] bingoCard;
  7. private boolean[] checkedNums;
  8. private boolean[] numsCalled;
  9.  
  10. public static void main(String[] args) {
  11. new Bingo().run();
  12. }
  13.  
  14. public Bingo() {
  15. hasBingo = false;
  16. numsCalled = new boolean[20];
  17. checkedNums = new boolean[5];
  18. }
  19.  
  20. private void run() {
  21. while (!hasBingo) {
  22. printBoard();
  23. String input = fetchInput();
  24. if (input.equals("1")) {
  25. //check for duplicate intialisation
  26. if (bingoCard != null) {
  27. System.out.println("Card has already been made!");
  28. } else {
  29. bingoCard = createBingoCard();
  30. printBingoCard();
  31. }
  32. } else if (input.equals("2")) {
  33. //check if bingoCard has been initialised
  34. if (bingoCard != null) {
  35. checkCard(callNumber());
  36. hasBingo = hasBingo();
  37. printBingoCard();
  38. } else {
  39. System.out.println("Create a bingocard before calling a number!");
  40. }
  41. } else if (input.equals("3")) {
  42. System.out.println("Doen we elke keer al, ga ik niet meer omgooien. Doei.");
  43. } else if (input.equals("4")) {
  44. System.out.println("Doei.");
  45. break;
  46. }
  47. }
  48. }
  49.  
  50. /**
  51. * Print the board
  52. */
  53. private void printBoard() {
  54. System.out.println("************************\n*\tBINGO\n************************");
  55. System.out.println("*\t1) Maak een Bingo-kaart");
  56. System.out.println("*\t2) Trek een bal");
  57. System.out.println("*\t3) Controleer een Bingo-kaart");
  58. System.out.println("*\t9) Afsluiten");
  59. System.out.println("************************");
  60. }
  61.  
  62. /**
  63. * Prints the player's bingo card
  64. */
  65. private void printBingoCard() {
  66. String print = "";
  67. for (int i = 0; i < bingoCard.length; i++) {
  68. if (checkedNums[i]) {
  69. print += "(" + bingoCard[i] + ")" + ", ";
  70. } else {
  71. print += bingoCard[i] + ", ";
  72. }
  73. }
  74. if (hasBingo) {
  75. System.out.println("BINGO!!!");
  76. }
  77. System.out.println("Your bingo card has the following numbers: [" + print.substring(0, print.length() - 2) + "]");
  78. }
  79.  
  80. /**
  81. * @return 5 numbers between 1 and 20
  82. */
  83. private int[] createBingoCard() {
  84. int[] ret = new int[5];
  85. for (int i = 0; i < 5; i++) {
  86. int num = fetchNumber();
  87. while (!uniqueBingoCardNum(ret, num)) {
  88. System.out.println("Number already exists in the bingo card. Please pick another number: ");
  89. num = fetchNumber();
  90. }
  91. ret[i] = num;
  92.  
  93. }
  94. return ret;
  95. }
  96.  
  97. /**
  98. * Check if the user input is unique in the bingoCard
  99. *
  100. * @param card bingoCard
  101. * @param num number to check
  102. * @return
  103. */
  104. private boolean uniqueBingoCardNum(int[] card, int num) {
  105. for (int i = 0; i < card.length; i++) {
  106. if (card[i] == num) {
  107. return false;
  108. }
  109. }
  110. return true;
  111. }
  112.  
  113. /**
  114. * Fetches user input
  115. *
  116. * @return input
  117. */
  118. private String fetchInput() {
  119. Scanner sc = new Scanner(System.in);
  120. return sc.next();
  121. }
  122.  
  123. /**
  124. * Fetches output int from user
  125. *
  126. * @return int between 1 and 20
  127. */
  128. private int fetchNumber() {
  129. System.out.println("Enter a number between 1 and 20: ");
  130. int num = Integer.parseInt(fetchInput());
  131. while (num < 1 || num > 20) {
  132. System.out.println("Invalid number! Enter a number between 1 and 20: ");
  133. num = Integer.parseInt(fetchInput());
  134. }
  135. return num;
  136. }
  137.  
  138. /**
  139. * Calls a number
  140. *
  141. * @return
  142. */
  143. private int callNumber() {
  144. int numCalled = (int) (Math.random() * 20) + 1;
  145. while (!uniqueNumber(numCalled)) {
  146. numCalled = (int) (Math.random() * 20) + 1;
  147. }
  148. numsCalled[numCalled - 1] = true;
  149. return numCalled;
  150. }
  151.  
  152. /**
  153. * Check if number has been called before
  154. *
  155. * @param num
  156. * @return true if not called
  157. */
  158. private boolean uniqueNumber(int num) {
  159. if (numsCalled[num - 1]) {
  160. return false;
  161. }
  162. return true;
  163. }
  164.  
  165. /**
  166. * Check if the last called number exists in the bingoCard
  167. *
  168. * @param numCalled last called number
  169. */
  170. private void checkCard(int numCalled) {
  171. for (int i = 0; i < bingoCard.length; i++) {
  172. if (bingoCard[i] == numCalled) {
  173. checkedNums[i] = true;
  174. break;
  175. }
  176. }
  177. }
  178.  
  179. /**
  180. * Check for bingo
  181. *
  182. * @return
  183. */
  184. private boolean hasBingo() {
  185. for (int i = 0; i < checkedNums.length; i++) {
  186. if (!checkedNums[i]) {
  187. return false;
  188. }
  189. }
  190. return true;
  191. }
  192. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement