コード例 #1
0
ファイル: Program.cs プロジェクト: anorsich/dds.net
        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();
        }
コード例 #2
0
ファイル: SolveGame.cs プロジェクト: hefangshi/dds.net
        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);
        }
コード例 #3
0
        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]
            });
        }
コード例 #4
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);
        }
コード例 #5
0
ファイル: PlayGameService.cs プロジェクト: hefangshi/dds.net
        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)
            });
        }
コード例 #6
0
ファイル: Program.cs プロジェクト: hefangshi/dds.net
        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();
        }