Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.ArrayList;
- import java.util.Random;
- import java.util.Scanner;
- public class BlackJack {
- public static String cards(int rowIndex) {
- String[] rows = {"2", "3", "4", "5", "6", "7", "8", "9", "10", "J",
- "Q", "K", "A"};
- String[] suit = {"♣", "♦", "♥", "♠"};
- Random randomS = new Random();
- int suitIndex = randomS.nextInt(4);
- String card = new String(rows[rowIndex] + suit[suitIndex]);
- return card;
- }
- public static int cardValues(int cardIndex) {
- int cardValue;
- switch (cardIndex) {
- case 0:
- cardValue = 2;
- break;
- case 1:
- cardValue = 3;
- break;
- case 2:
- cardValue = 4;
- break;
- case 3:
- cardValue = 5;
- break;
- case 4:
- cardValue = 6;
- break;
- case 5:
- cardValue = 7;
- break;
- case 6:
- cardValue = 8;
- break;
- case 7:
- cardValue = 9;
- break;
- case 8:
- case 9:
- case 10:
- case 11:
- cardValue = 10;
- break;
- default:
- cardValue = 11;
- break;
- }
- return cardValue;
- }
- public static Integer sum(ArrayList<Integer> list) {
- Integer sum = 0;
- for (Integer i : list) {
- sum = sum + i;
- }
- if (sum > 21) {
- for (Integer i : list) {
- if (i == 11) {
- sum -= 10;
- }
- }
- }
- return sum;
- }
- public static void main(String[] args) {
- System.getProperty("file.encoding","Unicode");
- System.out.println("This is BlackJack card game.");
- Scanner input = new Scanner(System.in);
- boolean noWinner = true;
- boolean playerPass = false;
- boolean surrender = false;
- int cash = 100;
- int bet = 0;
- int wincash = 0;
- char[] str = new char[0];
- while (cash > 0) {
- int hand = 1;
- noWinner = true;
- playerPass = false;
- surrender = false;
- ArrayList<String> dealerHand = new ArrayList<String>();
- ArrayList<Integer> dealerValue = new ArrayList<Integer>();
- ArrayList<String> playerHand = new ArrayList<String>();
- ArrayList<Integer> playerValue = new ArrayList<Integer>();
- for (int i = 0; i < 2; i++) {
- Random randomR = new Random();
- int dealerR = randomR.nextInt(13);
- dealerHand.add(cards(dealerR));
- dealerValue.add(cardValues(dealerR));
- }
- for (int i = 0; i < 2; i++) {
- Random randomR = new Random();
- int playerR = randomR.nextInt(13);
- playerHand.add(cards(playerR));
- playerValue.add(cardValues(playerR));
- }
- //System.out.println("\033[2J");
- System.out.println("Your current cash is: " + cash);
- System.out.printf("\nEnter your bet:");
- bet = Integer.parseInt(input.nextLine());
- while (bet > cash) {
- System.out.println("Your current cash is: " + cash);
- System.out.printf("You do not have enough money to bet %d. Please enter again your bet:", bet);
- bet = Integer.parseInt(input.nextLine());
- }
- cash -= bet;
- while (noWinner) {
- wincash = 0;
- hand++;
- if (surrender == true) {
- cash += bet / 2;
- break;
- }
- // Dealer hand
- if (hand > 2) {
- if (sum(dealerValue) <= 16 && playerPass == true) {
- System.out.println("\nDealer got a new card.");
- Random randomR = new Random();
- int dealerR = randomR.nextInt(13);
- dealerHand.add(cards(dealerR));
- dealerValue.add(cardValues(dealerR));
- } else if (sum(dealerValue) > 21) {
- wincash = bet * 2;
- bet = 0;
- cash += wincash;
- System.out.println("\nDealer Busted!");
- System.out.println("You win " + wincash + " cash");
- }
- }
- if (hand > 2 && playerPass == true) {
- dealerHandPrint(dealerHand, dealerValue, hand,
- playerPass);
- // Print Player Hand
- //
- playerHandPrint(playerHand, playerValue, hand);
- while (sum(dealerValue) <= 16) {
- hand++;
- System.out.println("\nDealer got a new card");
- Random randomR = new Random();
- int dealerR = randomR.nextInt(13);
- dealerHand.add(cards(dealerR));
- dealerValue.add(cardValues(dealerR));
- // Print Dealer Hand
- //
- dealerHandPrint(dealerHand, dealerValue, hand,
- playerPass);
- // Print Player Hand
- //
- playerHandPrint(playerHand, playerValue, hand);
- }
- if (sum(dealerValue) > 21) {
- System.out.println("\nDealer busted!");
- wincash = bet * 2;
- bet = 0;
- cash += wincash;
- System.out.println("You win " + wincash + " cash.");
- } else if (sum(playerValue) > sum(dealerValue)
- && sum(playerValue) <= 21) {
- System.out.println();
- System.out.println("You win!");
- wincash = bet * 2;
- bet = 0;
- cash += wincash;
- System.out.println("You win " + wincash + " cash!");
- } else if (sum(playerValue) == sum(dealerValue)) {
- System.out.println("\nPush"); // The game is a draw
- // (i.e. No Winner)
- wincash = bet;
- bet = 0;
- cash += wincash;
- System.out.println("You get " + wincash + " cash back.");
- } else {
- System.out.println("\nYou lost!");
- wincash = -bet;
- bet = 0;
- System.out.println("You loose: " + wincash + " cash.");
- }
- break;
- }
- dealerHandPrint(dealerHand, dealerValue, hand, playerPass);
- // Print Player Hand
- //
- playerHandPrint(playerHand, playerValue, hand);
- if ((sum(dealerValue) == 21) && (sum(playerValue) == 21) && hand > 2) {
- ;
- System.out.println("\nPush"); // The game is a draw (i.e. No
- // Winner)
- wincash = bet;
- bet = 0;
- cash += wincash;
- System.out.println("You get " + wincash + " cash back.");
- break;
- } else if ((sum(dealerValue) == 21) && (hand > 2)) {
- System.out.println("\nYou lost!"); // CASE 7 -dealer's
- wincash -= bet;
- bet = 0;
- System.out.println("You loose: " + wincash + " cash.");
- break;
- } else if ((sum(playerValue) == 21) && hand > 2) {
- System.out.println("\nYou win!");
- wincash = (bet*2);
- bet = 0;
- cash += wincash;
- System.out.println("You win " + wincash + " cash.");
- break;
- } else if (sum(playerValue) > 21) {
- System.out.println("\nBusted!");
- wincash -= bet;
- bet = 0;
- System.out.println("You loose: " + wincash + " cash.");
- break;
- }
- if ((cash - bet) < 0) {
- System.out.println("Hit(H) or Stand(S) or Surrender(U)");
- str = input.nextLine().toLowerCase().toCharArray();
- while (str[0] != 's' && str[0] != 'h' && str[0] != 'u') {
- System.out.println("You have entered incorrect input. Please try again:");
- System.out.println("Hit(H) or Stand(S) or Surrender(U)");
- str = input.nextLine().toLowerCase().toCharArray();
- }
- } else {
- System.out.println("\nHit(H) or Stand(S) or Double(D) or Surrender(U)");
- str = input.nextLine().toLowerCase().toCharArray();
- while (str[0] != 's' && str[0] != 'h' && str[0] != 'u' && str[0] != 'd') {
- System.out.println("You have entered incorrect input. Please try again:");
- System.out.println("\nHit(H) or Stand(S) or Double(D) or Surrender(U)");
- str = input.nextLine().toLowerCase().toCharArray();
- }
- }
- if (str[0] == 'h') {
- System.out.println("You've got a new card.");
- Random randomR = new Random();
- int playerR = randomR.nextInt(13);
- playerHand.add(cards(playerR));
- playerValue.add(cardValues(playerR));
- } else if (str[0] == 'u') {
- System.out.println("You surrender\nYou take back half of your bet.");
- surrender = true;
- } else if (str[0] == 'd') {
- System.out.println("You double your bet!");
- System.out.println("You've got a new card.");
- Random randomR = new Random();
- int playerR = randomR.nextInt(13);
- playerHand.add(cards(playerR));
- playerValue.add(cardValues(playerR));
- cash -= bet;
- bet = bet * 2;
- playerPass = true;
- } else if (str[0] == 's') {
- playerPass = true;
- }
- }
- }
- System.out.println("You have " + cash + " cash left.");
- System.out.println("You have lost! :( ");
- }
- private static void playerHandPrint(ArrayList<String> playerHand,
- ArrayList<Integer> playerValue, int hand) {
- System.out.print("\nYou have ");
- System.out.println(sum(playerValue) + " points."); // display player
- // points
- for (String item : playerHand) { // Display player cards
- System.out.print(item + " ");
- }
- System.out.println();
- }
- private static void dealerHandPrint(ArrayList<String> dealerHand,
- ArrayList<Integer> dealerValue, int hand, boolean playerPass) {
- if (hand == 2 && playerPass == false) {
- System.out.print("Dealer has ");
- System.out.print("\n" + dealerHand.get(0) + " ???"); // Display dealer cards with second card hidden
- } else {
- System.out.print("Dealer has ");
- System.out.println(sum(dealerValue) + " points.");// Display dealer cards
- for (String item : dealerHand) {
- System.out.print(item + " ");
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement