public override void RandomTurn(GameBotView game, out Figure who, out Point where) { int canBeSelected = 0; for (int i = 0; i < game.CurrentField.FigureCount; i++) { if (game.CurrentField.GetFigureBy(i).Team == game.CurrentPlayerTeam) { canBeSelected++; } } if (canBeSelected > 0) { ReRoll: Random rnd = new Random(DateTime.Now.Millisecond); Figure figureSelected; List <Point> whereCanWeGo = new List <Point>(); int tr = 0; do { tr++; figureSelected = game.CurrentField.GetFigureBy(rnd.Next(game.CurrentField.FigureCount)); whereCanWeGo = game.WhereToGo(figureSelected); } while ((whereCanWeGo.Count <= 1 && tr < 100) || figureSelected.Team != game.CurrentPlayerTeam); //select a key Point goTo = new Point(-1, -1); int tryes = 0; do { tryes++; if (whereCanWeGo.Count <= 0) { goto ReRoll; } goTo = whereCanWeGo[0 + rnd.Next(whereCanWeGo.Count - 0)]; }while ((goTo.X < 0 || goTo.Y < 0 || goTo.X > 7 || goTo.Y > 7) && tryes < 100); if (goTo.X < 0 || goTo.Y < 0 || goTo.X > 7 || goTo.Y > 7) { goto ReRoll; } //goTo = figureSelected.Position; game.SelectedPointsSet = whereCanWeGo; who = figureSelected; where = goTo; return; } //if there is NO wawkis who = null; where = new Point(-1, -1); return; }
public abstract void RandomTurn(GameBotView game, out Figure who, out Point where);