-
Notifications
You must be signed in to change notification settings - Fork 0
/
Blackjack.java
146 lines (114 loc) · 4.89 KB
/
Blackjack.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
import java.util.Scanner;
public class Blackjack {
public static void main(String[] args) {
// Welcome Message
System.out.print(ConsoleColors.CLEAR + ConsoleColors.BCYAN);
System.out.print(ConsoleColors.CLUB + "-");
System.out.print(ConsoleColors.DIAMOND + "-");
System.out.print(ConsoleColors.SPADE + "-");
System.out.print(ConsoleColors.HEART + "-");
System.out.print("Welcome to Blackjack");
System.out.print(ConsoleColors.HEART + "-");
System.out.print(ConsoleColors.SPADE + "-");
System.out.print(ConsoleColors.DIAMOND + "-");
System.out.print(ConsoleColors.CLUB + "\n");
// Create our playing deck
Deck playingDeck = new Deck();
playingDeck.createFullDeck();
playingDeck.shuffle();
// Create a deck for the player
Deck playerDeck = new Deck();
Deck dealerDeck = new Deck();
double playerMoney = 100.0;
Scanner userInput = new Scanner(System.in);
// Game Loop
while (playerMoney > 0) {
// Take the players bet
System.out.println(ConsoleColors.BYELLOW + "You have $" + playerMoney + ", how much would you like to bet?"
+ ConsoleColors.YELLOW);
double playerBet = userInput.nextDouble();
if (playerBet > playerMoney) {
System.out.println(ConsoleColors.BRED + "You cannot bet more than you have. Please leave.");
break;
}
boolean endRound = false;
// Start Dealing
// Player gets two cards
playerDeck.draw(playingDeck);
playerDeck.draw(playingDeck);
// Dealer gets two cards
dealerDeck.draw(playingDeck);
dealerDeck.draw(playingDeck);
while (true) {
System.out.print(ConsoleColors.BBLUE + "\nYour hand:" + ConsoleColors.BLUE);
System.out.println(playerDeck.toString());
System.out.println(ConsoleColors.BYELLOW + "\nYour deck is valued at: " + playerDeck.cardsValue());
// Display Dealer Hand
System.out
.println(ConsoleColors.BPURPLE + "\nDealer Hand: " + dealerDeck.getCard(0).toString() + " and [Hidden]");
// What does the player want to do?
System.out.println(ConsoleColors.BCYAN + "\nWould you like to (1) Hit or (2) Stand?");
int response = userInput.nextInt();
// If HIT
if (response == 1) {
playerDeck.draw(playingDeck);
System.out
.println(ConsoleColors.BBLUE + "You draw a:" + ConsoleColors.BLUE
+ playerDeck.getCard(playerDeck.deckSize() - 1).toString());
// Bust if > 21
if (playerDeck.cardsValue() > 21) {
System.out.println(ConsoleColors.BRED + "Bust. Currently valued at: " + playerDeck.cardsValue());
playerMoney -= playerBet;
endRound = true;
break;
}
}
// If STAND
if (response == 2) {
break;
}
}
// Reveal Dealer Cards
System.out.println(ConsoleColors.BPURPLE + "Dealer Cards: " + dealerDeck.toString());
// Check if dealer has more points than player
if ((dealerDeck.cardsValue() > playerDeck.cardsValue()) && endRound == false) {
System.out.println(ConsoleColors.BRED + "Dealer beats you!");
playerMoney -= playerBet;
endRound = true;
}
// Dealer Draws at 16, stand at 17
while ((dealerDeck.cardsValue() < 17) && endRound == false) {
dealerDeck.draw(playerDeck);
System.out.println(
ConsoleColors.BPURPLE + "Dealer Draws: " + dealerDeck.getCard(dealerDeck.deckSize() - 1).toString());
}
// Display Total Value for Dealer
System.out.println(ConsoleColors.BPURPLE + "Dealer's Hand is valued at: " + dealerDeck.cardsValue());
// Determine if dealer busted
if ((dealerDeck.cardsValue() > 21) && endRound == false) {
System.out.println(ConsoleColors.BGREEN + "Dealer busts! You Win!!");
playerMoney += playerBet;
endRound = true;
}
// Determine if push
if ((playerDeck.cardsValue() == dealerDeck.cardsValue()) && endRound == false) {
System.out.println("Push");
endRound = true;
}
if ((playerDeck.cardsValue() > dealerDeck.cardsValue()) && endRound == false) {
System.out.println(ConsoleColors.BGREEN + "You win the hand!");
playerMoney += playerBet;
endRound = true;
} else if (endRound == false) {
System.out.println(ConsoleColors.BRED + "You lose the hand.");
playerMoney -= playerBet;
endRound = true;
}
playerDeck.moveAllToDeck(playingDeck);
dealerDeck.moveAllToDeck(playerDeck);
System.out.println(ConsoleColors.BCYAN + "End of hand.\n");
}
System.out.println(ConsoleColors.BRED + "Game Over! You are out of money. :(");
userInput.close();
}
}