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); } }
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(); } } }