public void Start() { _deck = _deckFactory.CreateDeck(); _deck.Shuffle(); var briscola = _deck.PeekLast(); if (_subscribers.Count != 2 && _subscribers.Count != 4) { throw new InvalidOperationException("You can start a new game only with 2 or 4 players. Please Join"); } var state = new GameState(_subscribers, briscola); foreach (var pl in state.Players) { for (var i = 0; i < 3; i++) { var card = _deck.Pop(); pl.Take(card); } } state.Briscola = _deck.PeekLast(); Chat.GetUI().Strong(string.Format("BRISCOLA: {0} di {1}", state.Briscola.Value, state.Briscola.Seed)); State = state; }
public void CreateDeck_should_create_a_40_cards_deck() { var deck = _sut.CreateDeck(); // Verifico che deck.Count().Should().Be.EqualTo(40); // le carte siano 40 deck.Distinct().Count().Should().Be(40); // tutte distinte deck.Select(c => c.Seed).Distinct().Count().Should().Be(4); // che ci siano 4 semi deck.All(c => c.Value >= 1 && c.Value <= 10).Should().Be.True(); // e che i valori siano tutti tra 1 e 10 }
protected void Init() { player = new Player("You"); player.Chips = 500; player.Hand.Clear(); standardDeckFactory = new StandardDeckFactory(); emptyDeckFactory = new EmptyDeckFactory(); deck = standardDeckFactory.CreateDeck(); deck.Shuffle(); discard = emptyDeckFactory.CreateDeck(); dealer = new Player("Dealer"); dealer.Hand.Clear(); }
public static GameState Create4P(IStrategy sut, Card briscola, Card[] dish, Card[] handCards) { var deck = XDeckFactory.CreateDeck(); var turn = XRandom.Next(0, 4); List <IPlayer> players = new List <IPlayer>(); for (int i = 0; i < 4; i++) { if ((4 - turn + i) % 4 != dish.Length) { players.Add(new Player(new RandomStrategy(), "p" + i + 1)); } else { players.Add(new Player(sut, "p" + i + 1)); } } GameState gameState = new GameState(players, briscola) { Turn = turn }; foreach (var player in players) { if (player.Strategy == sut) { foreach (var card in handCards) { player.Take(card); } } else { player.Take(deck.Pop()); player.Take(deck.Pop()); player.Take(deck.Pop()); } } foreach (var card in dish) { gameState.Dish.Add(card); } return(gameState); }
public GameState(IDeckFactory deckFactory, IEnumerable<Player> players) { this.deckFactory = deckFactory; this.players = players.ToArray(); Table = new Table(); states = this.players.ToDictionary(p => p, p => new State()); readOnlyStates = states.ToDictionary(kvp => kvp.Key, kvp => (IPlayerState)kvp.Value).AsReadOnly(); deck = deckFactory.CreateDeck(); }