Need a unique gift idea?
A Pastebin account makes a great Christmas gift
SHARE
TWEET

BINKO

a guest Oct 12th, 2018 55 Never
Upgrade to PRO!
ENDING IN00days00hours00mins00secs
 
  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. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top