예제 #1
0
        public ImplementedGameState(int players, Dictionary <CamelColor, Position> startingPositions, int boardSize = 16, int startingMoney = 3) : this()
        {
            RemainingDice = CamelHelper.GetAllCamelColors();
            BettingCards  = ImplementedBettingCard.GetAllBettingCards();

            BoardSize = boardSize;
            Round     = 0;

            for (var i = 0; i < players; i++)
            {
                Money[i]        = startingMoney;
                Traps[i]        = new Trap();
                Disqualified[i] = false;
            }

            var h = 0;

            foreach (var item in startingPositions.OrderBy(x => x.Value.Location).ThenBy(x => x.Value.Height))
            {
                Camels.Add(new Camel()
                {
                    CamelColor = item.Key,
                    Location   = item.Value.Location,
                    Height     = h++,
                });
            }
        }
예제 #2
0
        public static List <CamelColor> RemainingEndGameBets(this GameState gameState, int player)
        {
            var possible = CamelHelper.GetAllCamelColors();
            var winners  = gameState.WinnerBets.Where(x => x.Player == player).Select(x => x.CamelColor).ToList();
            var losers   = gameState.LoserBets.Where(x => x.Player == player).Select(x => x.CamelColor).ToList();

            return(possible.Where(x => !winners.Contains(x) && !losers.Contains(x)).ToList());
        }
예제 #3
0
        private Dictionary <CamelColor, Position> GetRandomStartingPositions(int seed)
        {
            var rnd = new ConsistantRandom(seed);
            var i   = 0;

            return(CamelHelper.GetAllCamelColors().ToDictionary(x => x, x => new Position {
                Location = rnd.Next(0, 2), Height = i++
            }));
        }
예제 #4
0
        private void ResetRound()
        {
            StartingPlayer          = (StartingPlayer + 1) % Players.Count;
            CurrentPlayer           = StartingPlayer;
            GameState.RemainingDice = CamelHelper.GetAllCamelColors();
            GameState.BettingCards  = ImplementedBettingCard.GetAllBettingCards();
            GameState.Round++;

            History.Add(new StateChange(StateAction.NewRound, -1, CamelColor.Blue, GameState.Round));

            foreach (var playerTrapPair in GameState.Traps)
            {
                playerTrapPair.Value.Location = -1;
            }
        }
예제 #5
0
        public static List <BettingCard> GetAllBettingCards()
        {
            var result = new List <BettingCard>();

            foreach (var color in CamelHelper.GetAllCamelColors())
            {
                foreach (var val in new[] { 5, 3, 2 })
                {
                    result.Add(new BettingCard()
                    {
                        CamelColor = color,
                        Value      = val,
                        Owner      = -1
                    });
                }
            }

            return(result);
        }