static void Main(string[] args) { var dds = new DdsConnect(); var pbnCode = "E:AT5.AJT.A632.KJ7 Q763.KQ9.KQJ94.T 942.87653..98653 KJ8.42.T875.AQ42"; Console.WriteLine("Board: " + pbnCode); var game = BridgeHelper.GetGameFromPbn(pbnCode); var res = dds.CalculateMakeableContracts(pbnCode); Console.WriteLine("Best results:"); foreach (var contract in res) { Console.WriteLine(contract); } Console.WriteLine("------------- Game Starts ----------------"); Console.WriteLine("Trump: " + game.Contract.Trump); var player = game.Declarer; while (game.CardsRemaning > 0) { var result = dds.SolveBoardPbnBestCard(game); Console.WriteLine(player + ": " + result.Card + ". Score: " + result.Score); player = game.PlayCard(result.Card, player); if (game.CurrentTrick.Deck.Count == 0) { Console.WriteLine("Trick Winner: " + game.Tricks.Last().TrickWinner); } } Console.WriteLine("-----------Results----------"); Console.WriteLine("South/North: " + game.NorthSouthTricksMade + " tricks"); Console.WriteLine("East/West: " + game.EastWestTricksMade + " tricks"); Console.ReadKey(); }
public object Any(SolveGame solveGame) { var response = new SolveGameResponse(); var dds = new DdsConnect(); var trickResult = new TrickResult(); GameReplayer.Replay(solveGame.PBN, (game, player, card) => { var result = dds.SolveBoard(game); MapCards(result, (suit, rank, score) => { trickResult[player.FirstLetter].Add(new CardResult { Suit = suit.ShortName, Rank = rank.ShortName, Score = score }); }); }, (number) => { trickResult.Number = number; response.Tricks.Add(trickResult); trickResult = new TrickResult(); } ); return(response); }
public object Any(GetCard request) { var dds = new DdsConnect(); var game = GameReplayer.Replay(request.PBN); var result = dds.SolveBoard(game); var card = result.FutureCards.Cards[0]; return(new GetCardResponse { Rank = card.Rank.ShortName, Suit = card.Suit.ShortName, Score = result.Scores[0] }); }
public object Any(GetAllCards getAllCards) { var dds = new DdsConnect(); var game = GameReplayer.Replay(getAllCards.PBN); var result = dds.SolveBoard(game); var response = new GetAllCardsResponse { Nodes = result.Nodes, Cards = new List <CardResult>() }; for (int i = 0; i < result.FutureCards.Count; i++) { var card = result.FutureCards.Cards[i]; response.Cards.Add(new CardResult { Rank = card.Rank.ShortName, Suit = card.Suit.ShortName, Score = result.Scores[i] }); } response.Cards = response.Cards.OrderByDescending(x => x.Score).ToList(); return(response); }
public object Any(PlayGame request) { var dds = new DdsConnect(); var game = GameReplayer.Replay(request.PBN); var player = BridgeHelper.GetNextPlayerPosition(game.Declarer); while (game.Tricks.Count != 13) { var result = dds.SolveBoard(game); var card = result.FutureCards.Cards[0]; player = game.PlayCard(card, player); } var play = game.Tricks.Select(x => BridgeHelper.DeckToPbnPlay(x.Deck)); return(new PlayGameResponse { Play = string.Join("\n", play) }); }