コード例 #1
0
        public int MinMax()
        {
            int Mana = this.GetMana();
            LinkedList <int> Hand = this.GetHand();

            if (Hand.Count > 0)
            {
                if (Hand.Contains(0))
                {
                    return(0);
                }
                else if (Hand.Contains(Mana))
                {
                    return(Mana);
                }
                else
                {
                    int        ManaCost         = -1;
                    List <int> PossibleManaCost = new List <int>();
                    for (int i = 1; i < Mana && i != Mana; i++)
                    {
                        PossibleManaCost.Add(Mana - i);
                    }

                    IEnumerable <int> search = from x in PossibleManaCost where Hand.Contains(x) orderby x select x;

                    if (search.Count() > 0)
                    {
                        ManaCost = search.Max();
                    }
                    else
                    {
                        ManaCost = -1;
                        CIO.WriteToBuffer("Computer Ends Turn" + "\r\n");
                        CIO.Render();
                    }
                    return(ManaCost);
                }
            }
            else
            {
                CIO.WriteToBuffer("Computer Ends Turn" + "\r\n");
                CIO.Render();
                return(-1);
            }
        }
コード例 #2
0
        public void GameLoop()
        {
            int ManaCost = new int();

            if (!IsGameOver())
            {
                ManaCost = Decision(GameState.GetActivePlayer());
                if (ManaCost >= 0)
                {
                    PlayCard(ManaCost, GameState.GetActivePlayer());
                }
                else
                {
                    GameState.SwitchActivePlayer();
                    switch (GameState.GetActivePlayer())
                    {
                    case GameState.ActivePlayerOptions.Player:
                        GameState.NextRound();
                        Player.AddManaSlot();
                        Player.RefillMana();
                        if (Player.CanDrawACardFromDeck())
                        {
                            if (Player.CanAddCardToHand())
                            {
                                Player.AddTopCardFromDeckToHand();
                                Player.RemoveTopCardFromDeck();
                            }
                            else
                            {
                                Player.RemoveTopCardFromDeck();
                            }
                        }
                        else
                        {
                            //Bleed out rule
                            Player.SubtractHealth(1);
                        }
                        break;

                    case GameState.ActivePlayerOptions.Computer:
                        Computer.AddManaSlot();
                        Computer.RefillMana();
                        if (Computer.CanDrawACardFromDeck())
                        {
                            if (Computer.CanAddCardToHand())
                            {
                                Computer.AddTopCardFromDeckToHand();
                                Computer.RemoveTopCardFromDeck();
                            }
                            else
                            {
                                Computer.RemoveTopCardFromDeck();
                            }
                        }
                        else
                        {
                            //Bleed out rule
                            Computer.SubtractHealth(1);
                        }
                        break;
                    }
                }
                GameLoop();
            }
            else
            {
                if (Player.GetHealth() <= 0)
                {
                    CIO.WriteToBuffer("Computer Wins!" + "\r\n" + "Good Game Player!");
                    CIO.Render();
                }
                if (Computer.GetHealth() <= 0)
                {
                    CIO.WriteToBuffer("Congrats, You Win!");
                    CIO.Render();
                }
            }
        }