Skip to content

Instantly share code, notes, and snippets.

@edhedges
Created November 29, 2011 14:20
Show Gist options
  • Save edhedges/1404954 to your computer and use it in GitHub Desktop.
Save edhedges/1404954 to your computer and use it in GitHub Desktop.
Blackjack Main code
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