public Game(List <Participant> participants, PartnerMethod partnerMethod, bool enableLeasters, IRandomWrapper random = null, IGameStateDescriber gameStateDescriber = null) : this() { Hands = Hands ?? new List <Hand>(); LeastersEnabled = enableLeasters; Id = Guid.NewGuid(); Participants = participants; PartnerMethodEnum = partnerMethod; _random = random ?? _random; _gameStateDesciber1 = gameStateDescriber ?? _gameStateDesciber1; }
private string RunGame(int gameNo, List <IPlayer> players, PartnerMethod partnerMethod, int handsToPlay) { var participants = players.Select(p => p.Participant).ToList(); var game = new Game(participants, partnerMethod, enableLeasters: true); for (var g = 0; g < handsToPlay; ++g) { var hand = new Hand(game); var picker = game.PlayNonHumanPickTurns(); var buriedCards = picker != null?picker.DropCardsForPick(hand) : new List <SheepCard>(); while (!hand.IsComplete()) { var trick = new Trick(hand); game.PlayNonHumansInTrick(); } } var outputString1 = ""; var outputString2 = ""; foreach (var coinSet in game.GameCoins()) { outputString1 += StringSegment(coinSet.Name); outputString2 += StringSegment(coinSet.Coins.ToString()); if (!_playerTypeCoins.ContainsKey(coinSet.Name)) { _playerTypeCoins[coinSet.Name] = 0; } _playerTypeCoins[coinSet.Name] += coinSet.Coins; } //var leastersScores = game.Decks.Where(d => d.Hand.Leasters).Select(d => d.Hand.Scores()); return("Game: " + gameNo + (game.PlayerCount == 5 ? " " + game.PartnerMethod.ToString() : "") + Environment.NewLine + outputString1 + Environment.NewLine + outputString2 + Environment.NewLine + Environment.NewLine); }
public IGame Create(int humanCount, int simpleCount, int intermediateCount, int advancedCount, PartnerMethod partnerMethod, bool leastersGame) { var participants = new List <Participant>(); for (var i = 0; i < humanCount; ++i) { participants.Add(new Participant() { Type = Participant.TYPE_HUMAN }); } for (var i = 0; i < simpleCount; ++i) { participants.Add(new Participant() { Type = Participant.TYPE_SIMPLE }); } for (var i = 0; i < intermediateCount; ++i) { participants.Add(new Participant() { Type = Participant.TYPE_INTERMEDIATE }); } for (var i = 0; i < advancedCount; ++i) { participants.Add(new Participant() { Type = Participant.TYPE_ADVANCED }); } var newGame = new Game(participants, partnerMethod, leastersGame); newGame.RearrangePlayers(); context.Game.Add(newGame); return(newGame); }
private void PlayTwoFivePlayer(string participantType1, string participantType2, StringBuilder stringBuilder, PartnerMethod partnerMethod, ref int gameNo, int handCount) { List <IPlayer> players = new List <IPlayer>() { new Participant() { Type = participantType1 }.Player, new Participant() { Type = participantType1 }.Player, new Participant() { Type = participantType2 }.Player, new Participant() { Type = participantType2 }.Player, new Participant() { Type = participantType2 }.Player, }; players[0].Name = participantType1; players[1].Name = participantType1; players[2].Name = participantType2; players[3].Name = participantType2; players[4].Name = participantType2; stringBuilder.Append(RunGame(++gameNo, players, partnerMethod, handCount)); players = new List <IPlayer>() { new Participant() { Type = participantType1 }.Player, new Participant() { Type = participantType2 }.Player, new Participant() { Type = participantType1 }.Player, new Participant() { Type = participantType2 }.Player, new Participant() { Type = participantType2 }.Player, }; players[0].Name = participantType1; players[1].Name = participantType2; players[2].Name = participantType1; players[3].Name = participantType2; players[4].Name = participantType2; stringBuilder.Append(RunGame(++gameNo, players, partnerMethod, handCount)); }