public void HandleRequestAsync(RequestModel requestModel, IOutputBoundary <ResponseModel> outputBoundary) { _ = requestModel?.PlayerId ?? throw new ArgumentNullException(nameof(requestModel.PlayerId)); var avitar = AvitarRepository.ReadAsync(requestModel.PlayerId); var currentPlayer = new BlackJackPlayer(avitar, HandIdProvider, requestModel.HandCount); var keyAndGame = GameRepository.FindByStatusFirstOrDefault(GameStatus.Waiting, requestModel.MaxPlayers); string gameIdentifier; BlackJackGame game; if (string.IsNullOrEmpty(keyAndGame.Key)) { gameIdentifier = GameIdProviders.GenerateGameId(); game = new BlackJackGame(CardProvider, DealerProvider.Dealer, requestModel.MaxPlayers); } else { gameIdentifier = keyAndGame.Key; game = keyAndGame.Value; } game.AddPlayer(currentPlayer); GameRepository.UpdateAsync(gameIdentifier, game); outputBoundary.HandleResponse(new ResponseModel() { GameIdentifier = gameIdentifier }); }
public void HandleRequestAsync(RequestModel requestModel, out ResponseModel responseModel) { var maxPlayers = MaxPlayersOrDefault(requestModel.HandCount); var game = GameRepository.FindOpenGame(GameStatus.Waiting, maxPlayers); var avitar = new AvitarDto() { Id = requestModel.PlayerId, UserName = "******", EmailAddress = "*****@*****.**" }; var handCount = HandCountOrDefault(requestModel.HandCount); var player = new BlackJackPlayer(avitar, HandIdProvider, handCount); //TODO: The reay will need to be after some sort of polling game.Status = GameStatus.Ready; game.AddPlayer(player); GameRepository.UpdateAsync(game.Id, game); var gameModel = game.ToModel(game.CurrentPlayer.Identifier); responseModel = new ResponseModel() { Game = gameModel }; }
public void Init() { DealerNamedData = new BlackJackPlayer(new AvitarDto() { id = "1234ck64-f9d8", userName = "******" }, HandIdentifierProvider, 1); }
/// <summary> /// Set occupant of this spot /// </summary> public void SetSpotOccupant(BlackJackPlayer occupant) { m_SpotOccupant = occupant; m_PlayerCashAmount.gameObject.SetActive(true); m_PlayerBetAmount.gameObject.SetActive(true); m_SpotOccupant.onBetUpdated += RefreshBetAmount; m_SpotOccupant.onCashUpdated += RefreshCashAmount; m_SpotOccupant.GetHand().onHandUpdated += RefreshHandValue; if (m_HitButton) { m_HitButton.onClick.AddListener(() => m_SpotOccupant.DoAction(BlackJackPlayer.PlayerAction.Hit)); } if (m_StandButton) { m_StandButton.onClick.AddListener(() => m_SpotOccupant.DoAction(BlackJackPlayer.PlayerAction.Stand)); } if (m_DoubleDownButton) { m_DoubleDownButton.onClick.AddListener(() => m_SpotOccupant.DoAction(BlackJackPlayer.PlayerAction.DoubleDown)); } if (m_Surrender) { m_Surrender.onClick.AddListener(() => m_SpotOccupant.DoAction(BlackJackPlayer.PlayerAction.Surrender)); } }
public void Player2Hands_DealHand_CorrectStartingValues() { var playerId = "8625cf04-b7e2"; var playerOne = new BlackJackPlayer(new AvitarDto() { id = "8625cf04-b7e2", userName = playerName }, HandIdentifierProvider, 2); var handId = new GuidBasedHandIdentifierProviderMock().GenerateHandIds(1).Single(); var handId2 = new GuidBasedHandIdentifierProviderMock().GenerateHandIds(2).Single(i => i != handId); playerOne.Status = PlayerStatusTypes.Ready; playerOne.DealHands(twoThreeClubs2X); Assert.AreEqual(true, playerOne.Hands.Single(h => h.Identifier == handId).Cards.ElementAt(0).FaceDown); Assert.AreEqual(false, playerOne.Hands.Single(h => h.Identifier == handId).Cards.ElementAt(1).FaceDown); Assert.AreEqual(5, playerOne.Hands.Single(h => h.Identifier == handId).PointValue); Assert.AreEqual(PlayerStatusTypes.InProgress, playerOne.Status); Assert.AreEqual(playerId, playerOne.Identifier); Assert.AreEqual(2, playerOne.Hands.Count()); Assert.AreEqual(HandStatusTypes.InProgress, playerOne.Hands.Single(h => h.Identifier == handId).Status); Assert.AreEqual(true, playerOne.Hands.Single(h => h.Identifier == handId2).Cards.ElementAt(0).FaceDown); Assert.AreEqual(false, playerOne.Hands.Single(h => h.Identifier == handId2).Cards.ElementAt(1).FaceDown); Assert.AreEqual(5, playerOne.Hands.Single(h => h.Identifier == handId2).PointValue); Assert.AreEqual(HandStatusTypes.InProgress, playerOne.Hands.Single(h => h.Identifier == handId2).Status); }
public void PlayerSingleHand_DealAndHit_CorrectInstanceValues() { var playerId = "8625cf04-b7e2"; var playerOne = new BlackJackPlayer(new AvitarDto() { id = "8625cf04-b7e2", userName = playerName }, HandIdentifierProvider, 1); var blkJkJackClubs = new BlackJackCard(jackClubs, true); var handId = new GuidBasedHandIdentifierProviderMock().GenerateHandIds(1).Single(); playerOne.Status = PlayerStatusTypes.Ready; playerOne.DealHands(twoThreeClubs); Assert.AreEqual(PlayerStatusTypes.InProgress, playerOne.Status); playerOne.Hit(handId, blkJkJackClubs); Assert.AreEqual(true, playerOne.Hands.Single(h => h.Identifier == handId).Cards.ElementAt(0).FaceDown); Assert.AreEqual(false, playerOne.Hands.Single(h => h.Identifier == handId).Cards.ElementAt(1).FaceDown); Assert.AreEqual(false, playerOne.Hands.Single(h => h.Identifier == handId).Cards.ElementAt(2).FaceDown); Assert.AreEqual(15, playerOne.Hands.Single(h => h.Identifier == handId).PointValue); Assert.AreEqual(PlayerStatusTypes.InProgress, playerOne.Status); Assert.AreEqual(playerId, playerOne.Identifier); Assert.AreEqual(1, playerOne.Hands.Count()); Assert.AreEqual(HandStatusTypes.InProgress, playerOne.Hands.Single(h => h.Identifier == handId).Status); }
public void AddNewPlayer(int spotIndex) { BlackJackPlayer newPlayer = new BlackJackPlayer(); newPlayer.onActionPlayed += OnPlayerAction; newPlayer.SetPlayerId(spotIndex); m_Players.Add(newPlayer); m_TableSpots[spotIndex].SetSpotOccupant(newPlayer); }
public void NewPlayer_NoCards_StatusInProgress() { var sam = new BlackJackPlayer(new AvitarDto() { id = "8625cf04-b7e2", userName = playerName }, HandIdentifierProvider, 1); Assert.AreEqual(PlayerStatusTypes.Waiting, sam.Status); }
private IEnumerator EndTurn() { int dealerCardValue = m_DealerPlayer.GetHand().GetHandValue(); HandStatus status = HandStatus.NONE; int playerHandValue = 0; BlackJackPlayer player = null; for (int pIndex = 0; pIndex < m_TableSpots.Length; pIndex++) { if (!m_TableSpots[pIndex].IsOccupied()) { continue; } player = m_TableSpots[pIndex].Occupant; playerHandValue = m_TableSpots[pIndex].Occupant.GetHand().GetHandValue(); if (player.GetHand().IsBlackjack()) { status = HandStatus.BJ; } else if (playerHandValue > 21) { status = HandStatus.BUST; } else if (playerHandValue == dealerCardValue) { status = HandStatus.PUSH; } else if (playerHandValue > dealerCardValue || dealerCardValue > 21) { status = HandStatus.WIN; } else { status = HandStatus.LOSE; } switch (status) { case HandStatus.PUSH: player.AddPlayerCash(player.GetBetAmount()); break; case HandStatus.BJ: player.AddPlayerCash((int)(player.GetBetAmount() * 2.5)); break; case HandStatus.WIN: player.AddPlayerCash(player.GetBetAmount() * 2); break; } m_TableSpots[pIndex].SetStatus(status); yield return(new WaitForSeconds(3)); } m_CurrentRoutine = null; SetGameState(GameState.RESET); }
public Guid CreateGame(string playerName) { var newId = Guid.NewGuid(); var deck = new Deck(new RandomNumberGenerator()); var dealer = new BlackJackDealer(); var player = new BlackJackPlayer(playerName); _games[newId] = new BlackJackGame(newId, deck, dealer, player); return(newId); }
public void NewPlayer_NoCards_HandEmpty() { var sam = new BlackJackPlayer(new AvitarDto() { id = "8625cf04-b7e2", userName = playerName }, HandIdentifierProvider, 1); Assert.AreEqual(1, sam.Hands.Count()); Assert.AreEqual(false, sam.Hands.First().Cards.Any()); Assert.AreEqual(playerName, sam.Name); Assert.AreEqual(PlayerStatusTypes.Waiting, sam.Status); }
public void NewPlayer_CalculateTotal_TotalFive() { var sam = new BlackJackPlayer(new AvitarDto() { id = "8625cf04-b7e2", userName = playerName }, HandIdentifierProvider, 1); var handId = new GuidBasedHandIdentifierProviderMock().GenerateHandIds(1).Single(); sam.Status = PlayerStatusTypes.Ready; sam.DealHands(twoThreeClubs); Assert.AreEqual(5, sam.Hands.First().PointValue); }
public void RemoveOccupant() { m_PlayerCashAmount.gameObject.SetActive(false); m_PlayerHandDisplay.SetActive(false); m_PlayerBetAmount.gameObject.SetActive(false); m_SpotOccupant.GetHand().onHandUpdated -= RefreshHandValue; m_SpotOccupant.onBetUpdated -= RefreshBetAmount; m_SpotOccupant.onCashUpdated -= RefreshCashAmount; m_SpotOccupant = null; m_HitButton.onClick.RemoveAllListeners(); m_StandButton.onClick.RemoveAllListeners(); m_DoubleDownButton.onClick.RemoveAllListeners(); m_Surrender.onClick.RemoveAllListeners(); }
public void GetHandWeigthTest3() { // Arrange BlackJackPlayer player = new BlackJackPlayer("player"); player.Hand = new List <Card> { new Card(Face.Ace, Suit.Club), new Card(Face.Ace, Suit.Club), new Card(Face.Ace, Suit.Diamond), new Card(Face.Seven, Suit.Club), new Card(Face.Ten, Suit.Club) }; // Act int result = player.GetHandWeigth(); // Assert Assert.AreEqual(20, result); }
// show the card images for the current hand public void showHandImages(BlackJackPlayer player) { int i = 0; int cardsInHand = player.hand.CardCount; Panel panel; PictureBox currentBox; Card pictureBoxCard; Image backOfCard = Image.FromFile(@"./cards/backofcard.gif"); // determine which panel we are dealing with if (player.Name.Equals("dealer")) { panel = pnlDealer; } else { panel = pnlPlayer; } // loop through each pictureBox in the panel and get the image for the corresponding card in the player hand foreach (Control c in panel.Controls) { if (c is PictureBox) { currentBox = (PictureBox)c; if (i < cardsInHand) { pictureBoxCard = player.hand.getNextCard(i); // get the image for the card currentBox.Image = pictureBoxCard.getImage(); } else { currentBox.Image = backOfCard; } //increment pictureBox counter i++; } } this.txtMessageBox.Text += "Sum of " + player.Name + "'s hand = " + player.hand.getSumOfCards() + Environment.NewLine; }
public void Player2Hands_HoldsOneHand_PlayerStatusInProgress() { var playerOne = new BlackJackPlayer(new AvitarDto() { id = "8625cf04-b7e2", userName = playerName }, HandIdentifierProvider, 2); var blkJkJackClubs = new BlackJackCard(jackClubs, true); var handId = new GuidBasedHandIdentifierProviderMock().GenerateHandIds(1).Single(); playerOne.Status = PlayerStatusTypes.Ready; playerOne.DealHands(twoThreeClubs2X); playerOne.Hit(handId, blkJkJackClubs); playerOne.Hold(handId); Assert.AreEqual(PlayerStatusTypes.InProgress, playerOne.Status); }
/// <summary> /// カード実体を生成し、配るアニメーションを再生する。 /// </summary> /// <param name="card"></param> /// <param name="dealTarget"></param> /// <param name="isReverse"></param> /// <returns>実体</returns> public CardInstance DealCardAnime(Card card, BlackJackPlayer dealTarget, bool isReverse) { Vector3 rotate = new Vector3(0.0f, 0.0f, 170.0f); if (isReverse) { rotate.y = 180.0f; rotate.z = 190.0f; } GameObject cardInstanceObject = Instantiate(cardPrefab, CardInitPoint.position, Quaternion.Euler(rotate), transform); CardInstance cardInstance = cardInstanceObject.GetComponent <CardInstance>(); cardInstance.SetCardInfo(card); cardInstances.Add(cardInstanceObject); cardInstance.CardMove(dealTarget.GetDealPosition()); return(cardInstance); }
public void Player_HoldsCard_PlayerStatusComplete() { var playerOne = new BlackJackPlayer(new AvitarDto() { id = "8625cf04-b7e2", userName = playerName }, HandIdentifierProvider, 1); var blkJkTwoClubs = new BlackJackCard(twoClubs, true); var blkJkThreeClubs = new BlackJackCard(threeClubs, false); var blkJkJackClubs = new BlackJackCard(jackClubs, true); var handId = new GuidBasedHandIdentifierProviderMock().GenerateHandIds(1).Single(); playerOne.Hit(handId, blkJkTwoClubs); playerOne.Hit(handId, blkJkThreeClubs); playerOne.Hit(handId, blkJkJackClubs); playerOne.Hold(handId); Assert.AreEqual(PlayerStatusTypes.Complete, playerOne.Status); }
private IEnumerator PlayerTurn() { BlackJackPlayer player = null; for (int sIndex = 0; sIndex < m_TableSpots.Length; sIndex++) { if (!m_TableSpots[sIndex].IsOccupied()) { continue; } m_TableSpots[sIndex].TogglePlayerCardAction(true); player = m_TableSpots[sIndex].Occupant; while (player.GetHand().GetHandValue() <= 21 && !player.Standed()) { yield return(null); } m_TableSpots[sIndex].TogglePlayerCardAction(false); } m_CurrentRoutine = null; SetGameState(GameState.DEALER_ACTION); }
static void Main(string[] args) { Console.WriteLine("Black Jack"); Console.WriteLine(); var deck = new Deck(new RandomNumberGenerator()); var player = new BlackJackPlayer("Stefan"); var dealer = new BlackJackDealer(); var game = new BlackJackGame(Guid.NewGuid(), deck, dealer, player); Console.WriteLine("Do you want to play Black Jack? (y/n):"); while (Console.ReadLine() == "y") { game.StartNewGame(); DisplayPlayerInfo(game.Player); DisplayPlayerInfo(game.Dealer); Console.WriteLine($"{game.Player.Name}, do you want a hit?"); while (!game.Player.IsBust && Console.ReadLine() == "y") { game.PlayerHits(); DisplayPlayerInfo(game.Player); } if (!game.Player.IsBust) { game.PlayerSticks(); } DisplayPlayerInfo(game.Dealer); Console.WriteLine($"...and the winner is: {game.GetWinnerName()}"); Console.WriteLine("You want to play again? (y/n)"); } }