public void Run() { while (!Board.Lost) { PrintBoardState(); var moveWeights = GetMoveWeights(); var highestWeight = moveWeights.Values.Max(); var highestDirs = moveWeights.Where(kvp => kvp.Value == highestWeight) .Select(kvp => kvp.Key); var recDir = highestDirs.Count() == 1 ? highestDirs.First() : XT.GetRandom(XT.EnumVals <Direction>().ToArray(), rnd); Board.Move(recDir); PrintMoveResults(moveWeights, recDir); } return; }
public override Dictionary <Direction, float> GetMoveWeights() => XT.EnumVals <Direction>().ToDictionary(k => k, k => 0f);