private Func <object, string> GetConverterForType(Type propertyType) { if (propertyType.IsEnum) { return(o => ((Enum)o).GetDisplayName()); } if (typeof(string).IsAssignableFrom(propertyType)) { return(o => (string)o); //Prevent futher conversion } var enumerableArg = LambdaHelpers.GetEnumerableType(propertyType); if (enumerableArg != null) { return(LambdaHelpers.GetEnumerableConvertor(GetConverterForType(enumerableArg))); } if (typeof(IEnumerable).IsAssignableFrom(propertyType)) { return(LambdaHelpers.GetEnumerableConvertor(item => item.ToString())); } return (DisplayFunctions.Where( displayFunction => displayFunction.Key.IsAssignableFrom(propertyType)) .Select(kv => kv.Value) .FirstOrDefault() ?? (arg => arg?.ToString())); }
public static void PlayGame(Chromosome chromo0, Chromosome chromo1) { var Game = new Game(); var players = new List <AiPlayer>() { new AiPlayer(chromo0, Game.GetPlayerByNumber(0), Game), new AiPlayer(chromo1, Game.GetPlayerByNumber(1), Game) }; DisplayFunctions.DisplayBoard(Game.Board); int i = 0; while (!Game.Won) { var playerNum = i % 2; Console.WriteLine($"Turn: {Game.TurnNumber} --------------------------------"); DisplayFunctions.DisplayUserHand(Game.GetPlayerByNumber(playerNum)); var play = players[playerNum].DeterminePlay(); play.PlayerNumber = playerNum; bool playResult = Game.MakePlay(play); if (playResult == false) { Console.WriteLine("FAILED TO MAKE PLAY!!!"); break; } DisplayFunctions.DisplayPlay(Game.Plays[Game.TurnNumber - 1]); DisplayFunctions.DisplayBoard(Game.Board); i++; } DisplayFunctions.DisplayWinner(Game.WinningPlayer, Game.TurnNumber); }