using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Collections; namespace BlackjackClasses { public class Card : IComparable { public enum CardSuits { Clubs =1, Spades, Hearts, Diamonds } public enum CardValues { Ace = 1, Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten, Jack, Queen, King } private CardValues _faceValue; private CardSuits _cardSuit; private int _realValue; public CardValues FaceValue { get { return _faceValue; } } public CardSuits CardSuit { get { return _cardSuit; } } public int RealValue { get { return _realValue; } } public Card(CardSuits paramSuit, CardValues paramValue) { _cardSuit = paramSuit; _faceValue = paramValue; _realValue = ((int)paramValue > 10 ? 10 : (int)paramValue); } public override string ToString() { return FaceValue + " of " + CardSuit + " RealValue: " + RealValue; } #region IComparable Members public int CompareTo(object obj) { Card c = (Card)obj; if (this.FaceValue == c.FaceValue) return this.CardSuit.CompareTo(c.CardSuit); else return this.FaceValue.CompareTo(c.FaceValue); } #endregion } /** Player class public class Player { private int _score = 0; public bool isBust = false; //public int Score { get { return getScore(); } } private string _id; public ArrayList cards; public Player(string strID) { _id = strID; cards = new ArrayList(); } public void hit(Card cardObject) { _score += (int)cardObject.Value; if (_score > 21) isBust = true; cards.Add(cardObject); } public int getScore() { int runningTotal = 0; foreach (Card c in cards) { if(c.Value != Card.ScoreValues.Ace) runningTotal += (int)c.Value; else if (c.Value == Card.ScoreValues.Ace) { if (runningTotal + 11 < 22) runningTotal += 11; else runningTotal++; } } return runningTotal; } } */ /**Game Class public class Game { public enum gameState { DealerWin, PlayerWin, Draw, TurnOfPlayer, TurnOfDealer, FirstRound } private Player dealer; private Player Player1; private Deck deck; public gameState status; public bool GameOver = false; private int roundCount = 0; private bool isPlayerTurn; public Game() { status = gameState.FirstRound; deck = new Deck(); dealer = new Player("Dealer"); Player1 = new Player("Player"); //deal first round //dealer.hit(deck.Deal()); //dealer.hit(deck.Deal()); dealer.hit(new Card(Card.SuitValues.Diamonds, Card.ScoreValues.King)); dealer.hit(new Card(Card.SuitValues.Diamonds, Card.ScoreValues.Seven)); Player1.hit(deck.Deal()); Player1.hit(deck.Deal()); status = gameState.TurnOfPlayer; CheckIfGameOver(); } //Allows the hands of each player to be preset public Game(Deck theDeck, Player theDealer, Player thePlayer) { deck = theDeck; dealer = theDealer; Player1 = thePlayer; status = gameState.TurnOfPlayer; CheckIfGameOver(); } public override string ToString() { var sb = new StringBuilder(); sb.AppendLine("Dealer Score: " + dealer.Score); foreach(Card c in dealer.cards) sb.AppendLine(c.Suit + " " + c.Value + " " + c.url); sb.AppendLine("Player Score: " + Player1.Score); foreach (Card c in Player1.cards) sb.AppendLine(c.Suit + " " + c.Value + " " + c.url); return sb.ToString(); } public void playerStay() { CheckIfGameOver(); if (!GameOver) { while (dealer.Score < 17) { dealer.hit(deck.Deal()); } determineClosestPlayerTo21(); } CheckIfGameOver(); } public void playerHit() { CheckIfGameOver(); if (!GameOver) { Player1.hit(deck.Deal()); status = gameState.TurnOfDealer; if (dealer.Score < 17) { dealer.hit(deck.Deal()); status = gameState.TurnOfPlayer; } //else if (Player1.getScore() < 22) //{ determineClosestPlayerTo21(); } } CheckIfGameOver(); } private void CheckIfGameOver() { if (Player1.Score == 21 && dealer.Score == 21) { GameOver = true; status = gameState.Draw; } else if (Player1.Score == 21) { GameOver = true; status = gameState.PlayerWin; } else if (dealer.Score == 21) { GameOver = true; status = gameState.DealerWin; } if (Player1.isBust) { status = gameState.DealerWin; GameOver = true; } if (dealer.isBust) { status = gameState.PlayerWin; GameOver = true; } } public void determineClosestPlayerTo21() { GameOver = true; switch (dealer.Score.CompareTo(Player1.Score)) { case -1: status = gameState.PlayerWin; break; case 1: status = gameState.DealerWin; break; case 0: status = gameState.Draw; break; } } } */ }