public GameState Deal(double bet) { //Clear last game. Make new game with old balance. NewGame(_defaultPlayer.Balance); //Try to set new bet balance TryPlaceBet(bet); //Check if insufficient funds if (_gameState.CurrentState == State.LowBalance) { return(null); } //Shuffle a new deck _deckService.NewDeck(); //At the beginning of each hand the dealer deals two cards, //first to the player and then to himself. DealFirstHands(); //Check for BlackJack if (HandLogic.HasBlackJack(_defaultPlayer)) { EndGame(); } //Setup a new GameState _gameState = new GameState(_defaultPlayer, _dealer, State.Open); return(_gameState); }
public GameState Hit() { //throw Exception if Hit() is called when game state is not open. if (_gameState.CurrentState != State.Open) { throw new GameStateException($"Can not call Hit() if game State is not Open. " + $"Current state is {_gameState.CurrentState.ToString()}"); } //If the game has no winner, give a card to the player AddCardToHand(_defaultPlayer); //Check for player blackjack or bust if (HandLogic.HasBlackJack(_defaultPlayer) || HandLogic.IsBust(_defaultPlayer)) { //Init the end game EndGame(); } return(_gameState); }