/// <summary> /// A wrapper to launch a version of Hanabi where all players are of type 'Mod8HanabiPlayer' and use advanced logic to make plays in the game. /// </summary> /// <param name="deck"></param> /// <param name="printMoves"></param> /// <param name="printGameStatus"></param> /// <param name="players"></param> /// <returns></returns> public static HanabiGame Mod8Strategy(Mod8Settings settings, List <HanabiCard> deck = null, int players = 4, bool printGameStatus = false) { HanabiGame game = new HanabiGame(); game.Players = new List <HanabiPlayer>(); for (int i = 0; i < players; i++) { game.Players.Add(new Mod8HanabiPlayer(i) { Settings = settings }); } if (deck == null) { game.CreateDeck(); game.ShuffleDeck(); } else { game.SetDeck(deck); } game.DealCards(); while (!game.Ended) { (game.CurrentPlayer as Mod8HanabiPlayer).DoTurn(ref game); game.NextTurn(); if (printGameStatus) { Console.WriteLine(game); } } return(game); }