public override void Tick(MegajewelForm form) { ticksMissed++; if (ticksMissed < 5) { return; } ticksMissed = 0; var grid = form.Processing.Grid; List <Gem> bestGems = new List <Gem>(); int bestPower = 1; for (int x = 0; x < 8; x++) { for (int y = 0; y < 8; y++) { Gem gem = grid[x, y]; if (gem.SuggestedPower == bestPower) { bestGems.Add(gem); } else if (gem.SuggestedPower > bestPower) { bestPower = gem.SuggestedPower; bestGems.Clear(); bestGems.Add(gem); } } } if (bestGems.Count > 0) { Gem randomBestGem = bestGems[rgen.Next(bestGems.Count)]; Point from = new Point(randomBestGem.X, randomBestGem.Y); Point to = Predictor.MoveInDirection(from, randomBestGem.SuggestedDirection); Point fromReal = form.CurrentMode.GetGemCenter(from.X, from.Y); Point toReal = form.CurrentMode.GetGemCenter(to.X, to.Y); Controller.MoveTo(fromReal.X, fromReal.Y); Controller.HoldLeft(); Controller.MoveTo(toReal.X, toReal.Y); Controller.ReleaseLeft(); } }
public override void Tick(MegajewelForm form) { if (form.Processing.DiamondMineCleared) { return; } var grid = form.Processing.Grid; List <Gem> bestGems = new List <Gem>(); for (int x = 0; x < 8; x++) { for (int y = 0; y < 8; y++) { Gem gem = grid[x, y]; if (gem.SuggestedPower >= 3) { bestGems.Add(gem); } } } if (bestGems.Count > 0) { foreach (Gem randomBestGem in bestGems) { Point from = new Point(randomBestGem.X, randomBestGem.Y); Point to = Predictor.MoveInDirection(from, randomBestGem.SuggestedDirection); Point fromReal = form.CurrentMode.GetGemCenter(from.X, from.Y); Point toReal = form.CurrentMode.GetGemCenter(to.X, to.Y); Controller.MoveTo(fromReal.X, fromReal.Y); Controller.HoldLeft(); Controller.MoveTo(toReal.X, toReal.Y); Controller.ReleaseLeft(); } } }