private void UpdateCastles(CastlesModel castle) { var index = Castles.IndexOf(castle); Castles.Remove(castle); Castles.Insert(index, castle); }
public CastleByDistanceModel GetNearestCastle(List <string> castles, double lat, double lng) { return(Castles.Where(c => castles.Contains(c.Id)).Select(c => new CastleByDistanceModel { Castle = c, Distance = MapHelpers.GetDistance(c.Position.Lat, c.Position.Lng, lat, lng) }).OrderBy(d => d.Distance).First()); }
static void Main(string[] args) { List <Transformer> trasformersList = new List <Transformer> { new Transformer() { Type = TransformerType.Decepticon, Name = "Soundwave", Strength = 8, Intelligence = 9, Speed = 2, Endurance = 6, Rank = 7, Courage = 5, Firepower = 6, Skill = 10 }, new Transformer() { Type = TransformerType.Autobot, Name = "Bluestreak", Strength = 6, Intelligence = 6, Speed = 7, Endurance = 9, Rank = 5, Courage = 2, Firepower = 9, Skill = 7 }, new Transformer() { Type = TransformerType.Autobot, Name = "Hubcap", Strength = 4, Intelligence = 4, Speed = 4, Endurance = 4, Rank = 4, Courage = 4, Firepower = 4, Skill = 4 }, }; var gameScore = new GameService().ComputeScore(trasformersList); System.Console.WriteLine($"{gameScore.Battles} battle"); System.Console.WriteLine($"Winning team ({gameScore.WinningTeam}): {string.Join(",", trasformersList.Where(x=>x.Type==gameScore.WinningTeam).Select(x=>x.Name))}"); System.Console.WriteLine($"Survivors from the losing team ({gameScore.LosingTeam}):{string.Join(",", gameScore.Survivors)}"); int[] A = new int[] { 2, 6, 6, 1, 4, 2, 2, 1 }; int result = Castles.Solution(A); System.Console.Write(result); System.Console.Read(); }
public List <string> GetOpponentCastlesId() { var myArmy = GetMyArmy(); return(Castles.Where(e => e.Army != myArmy).Select(e => e.Id).ToList()); }
public List <CastleStateModel> GetMyCastles() { var myArmy = GetMyArmy(); return(Castles.Where(e => e.Army == myArmy).ToList()); }
/// <summary> /// Инициализация героев замка /// </summary> public void GenerateUnits() { var names = Castles.SelectMany(castle => castle.GetAvailableUnits()).ToArray(); var randomUnits = new Random(); bool generationDone; do { HeroUnits.Clear(); for (int aUnit = 0; aUnit < randomUnits.Next(GameSettings.nMinUnitsCount, GameSettings.nMaxUnitsCount); aUnit++) { HeroUnits.Add(new HeroUnit(Castles, names[randomUnits.Next(0, names.Count())])); } generationDone = true; foreach (var unitsByCastle in HeroUnits.GroupBy(unit => unit.Home)) { var unitsByCastlesCount = unitsByCastle.Count(); if (unitsByCastlesCount < GameSettings.nMinPerGroup) { generationDone = false; /*неудачый random*/ StatusReporter.WriteLine($"В замке {unitsByCastle.Key} недобор героев. невозможно сформировать ни одного отряда."); do { StatusReporter.WriteLine($"переукомплектовать героев заново? (да/нет)"); var userDecision = ExpressionWorker.GetUserYesNoDecision(UserInput); if (userDecision == UserDecision.N) { StatusReporter.WriteLine($"игра завершена"); HeroUnits.Clear(); return; } if (userDecision == UserDecision.Y) { break; } } while (true); } if (generationDone == false) { break; } } } while (generationDone == false); HeroUnits.InitHeroParameters(); HeroUnits.FillGroups(GameSettings.nMinPerGroup, GameSettings.nMaxPerGroup); StatusReporter.WriteLine("Для битвы доступны следующие замки с укомплектованными героями."); foreach (var castle in Castles.OrderBy(castle => castle.Name)) { HeroUnits.ByCastle(castle).ShowNamesGroup(StatusReporter); } do { StatusReporter.Write($"Выберите замок ({Castles.Select(castle => castle.ToString()).Aggregate((c, v) => $"{c}/{v}")}) : "); var userCastleName = ExpressionWorker.GetUserCastleDecision(UserInput); var userCastle = Castles.Find(castle => castle.Equals(new Castle(userCastleName))); if (userCastle != null) { StatusReporter.WriteLine($"В Вашем расположении будут воевать герои замка {userCastle}"); userCastle.Owner = CastleOwner.User; break; } StatusReporter.WriteLine($"выбор не определён"); } while (true); DoBattleAction(); }