Created
November 29, 2011 14:20
-
-
Save edhedges/1404954 to your computer and use it in GitHub Desktop.
Blackjack Main code
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.Collections.Generic; | |
using System.Linq; | |
using System.Text; | |
namespace HedgesBlackjack | |
{ | |
class Blackjack | |
{ | |
private Deck deck = new Deck(); | |
private User u = new User(100); | |
private Dealer d = new Dealer(200); | |
private int choice = 0; | |
private int respuesta = 0; | |
static void Main(string[] arg) | |
{ | |
Blackjack bj = new Blackjack(); | |
Console.WriteLine("========== New Game =========="); | |
bj.NewGame(); | |
} | |
private void NewGame() | |
{ | |
u.Score = 0; | |
d.Score = 0; | |
choice = 0; | |
respuesta = 0; | |
deck.Shuffle(); | |
Console.WriteLine("You have : $" + u.Money); | |
Bet(); | |
GamePlayPlayer(); | |
GamePlayDealer(); | |
SurrenderAns(); | |
} | |
private void SurrenderAns() | |
{ | |
bool check = false; | |
string ans = ""; | |
while (!check) | |
{ | |
try | |
{ | |
Console.Write("Do you want to surrender (Y or N) ? : "); | |
ans = Console.ReadLine(); | |
if (ans == "n" || ans == "N" || ans == "Y" || ans == "y") check = true; | |
else check = false; | |
} | |
catch (Exception) | |
{ | |
check = false; | |
} | |
} | |
if (ans == "y" || ans == "Y") | |
{ | |
Console.WriteLine("Player Surrenders: $" + u.Bet / 2 + " goes to Dealer"); | |
d.Money += (u.Bet / 2); | |
u.Money -= (u.Bet / 2); | |
MoreGame(); | |
} | |
else if (ans == "n" || ans == "N") HitOrStand(); | |
} | |
private void HitOrStand() | |
{ | |
bool check = true; | |
string response = ""; | |
bool dealerTurn = false; | |
while (check) | |
{ | |
try | |
{ | |
Console.Write("Will you HIT or STAND (H or S)? : "); | |
response = Console.ReadLine(); | |
if (response == "h" || response == "H" || response == "S" || response == "s") check = false; | |
else check = true; | |
} | |
catch | |
{ | |
check = true; | |
} | |
} | |
if (response == "h" || response == "H") | |
{ | |
u.Deal(deck.Draw(), true); | |
GamePlayPlayer(); | |
if (u.Score > 21) Bust(); | |
} | |
else if (response == "s" || response == "S") | |
{ | |
d.flipCard(1); | |
Console.WriteLine("Now, Dealer's Turn"); | |
GamePlayDealer(); | |
dealerTurn = true; | |
} | |
if(dealerTurn == false) HitOrStand(); | |
} | |
private void Bet() | |
{ | |
bool check = false; | |
while (!check) | |
{ | |
try | |
{ | |
Console.Write("How much do you bet : "); | |
u.Bet = Convert.ToDecimal(Console.ReadLine()); | |
if (u.Bet > u.Money) | |
{ | |
Console.WriteLine("Player can only bet up to " + u.Money.ToString()); | |
check = false; | |
} | |
else check = true; | |
} | |
catch (Exception) | |
{ | |
check = false; | |
} | |
} | |
Console.WriteLine("Player bets $" + u.Bet.ToString()); | |
u.Deal(deck.Draw(), true); | |
d.Deal(deck.Draw(), true); | |
u.Deal(deck.Draw(), true); | |
d.Deal(deck.Draw(), false); | |
} | |
private void GamePlayPlayer() | |
{ | |
u.Score = u.CalcScore(); | |
Console.Write("Player's hand:"); | |
Console.Write(" " + u.ToString()); | |
Console.WriteLine(", Score: " + u.Score); | |
} | |
private void GamePlayDealer() | |
{ | |
d.Score = d.CalcScore(); | |
Console.Write("Dealer's hand: "); | |
if (choice != 0) Console.WriteLine(" " + d.ToString() + ", Score: " + d.Score); | |
else | |
{ | |
Console.WriteLine(d.ToString() + " "); | |
choice++; | |
} | |
if (u.Score == 21 && u.Hand.Count == 2) | |
{ | |
if (d.Score != 21) | |
{ | |
d.flipCard(1); | |
Console.WriteLine("Player got a Natural21: " + decimal.Multiply(u.Bet, 2.5m) + " goes from Dealer to Player"); | |
u.Wins++; | |
u.Money += decimal.Multiply(u.Bet, 2.5m); | |
d.Money -= decimal.Multiply(u.Bet, 2.5m); | |
} | |
if (d.Score == 21) | |
{ | |
u.Ties++; | |
Console.WriteLine("Both Player and Dealer got a Natural21!"); | |
Console.WriteLine("Standoff"); | |
} | |
MoreGame(); | |
} | |
else if (u.Hand.Count == 2 && respuesta != 7) | |
{ | |
Console.WriteLine("Player did not get Natural 21"); | |
respuesta = 7; | |
} | |
else | |
{ | |
if (d.Score >= 17) | |
{ | |
if (d.Score > 21) | |
{ | |
u.Wins++; | |
u.Money += u.Bet; | |
d.Money -= u.Bet; | |
Console.WriteLine("Dealer Busts"); | |
Console.WriteLine("Player won and gets $" + u.Bet + " from Dealer"); | |
} | |
else if (d.Score == u.Score) | |
{ | |
u.Ties++; | |
Console.WriteLine("Standoff"); | |
} | |
else if (d.Score > u.Score) | |
{ | |
u.Losses++; | |
u.Money -= u.Bet; | |
d.Money += u.Bet; | |
Console.WriteLine("Dealer won and gets $" + u.Bet + " from Player"); | |
} | |
else if (u.Score > d.Score) | |
{ | |
u.Wins++; | |
u.Money += u.Bet; | |
d.Money -= u.Bet; | |
Console.WriteLine("Player won and gets $" + u.Bet + " from Dealer"); | |
} | |
MoreGame(); | |
} | |
Console.Write("Press Return to see Dealer's next card :"); | |
Console.ReadLine(); | |
d.Deal(deck.Draw(), true); | |
GamePlayDealer(); | |
} | |
} | |
private void Bust() | |
{ | |
u.Losses++; | |
d.Money += u.Bet; | |
u.Money -= u.Bet; | |
Console.WriteLine("Player Busted"); | |
Console.WriteLine("Dealer won and gets $" + u.Bet + " from Player"); | |
MoreGame(); | |
} | |
private void MoreGame() | |
{ | |
u.ReturnHand(deck); | |
d.ReturnHand(deck); | |
Console.WriteLine("Player Won " + u.Wins + " time(s), Lost " + u.Losses + " times, and tied " + u.Ties + " times"); | |
Console.WriteLine("Dealer Won " + u.Losses + " time(s), Lost " + u.Wins + " times, and tied " + u.Ties + " times"); | |
if (d.Money < 0) u.Money -= d.Money * -1; | |
Console.WriteLine("Player has $" + u.Money); | |
if (u.Money <= 0) | |
{ | |
Console.WriteLine("Player is Bankrupt"); | |
Console.WriteLine("Press Enter to quit"); | |
Console.Read(); | |
System.Environment.Exit(-1); | |
} | |
if (d.Money <= 0) | |
{ | |
Console.WriteLine("Dealer is Bankrupt"); | |
Console.WriteLine("Dealer owes Player $" + (d.Money * (-1))); | |
Console.Write("Press Enter to quit"); | |
Console.Read(); | |
System.Environment.Exit(-1); | |
} | |
bool check = false; | |
string ans = ""; | |
while (!check) | |
{ | |
try | |
{ | |
Console.Write("Play Again (Y or N) ? : "); | |
ans = Console.ReadLine(); | |
if (ans == "n" || ans == "N" || ans == "Y" || ans == "y") check = true; | |
else check = false; | |
} | |
catch (Exception) | |
{ | |
check = false; | |
} | |
} | |
if (ans == "N" || ans == "n") System.Environment.Exit(-1); | |
else if (ans == "Y" || ans == "y") | |
{ | |
NewGame(); | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment