Esempio n. 1
0
        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;
        }
Esempio n. 2
0
        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
        }
Esempio n. 3
0
 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();
 }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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();
        }