public IEnumerable <Coord> MakeListOfConvertedTokens(Player p, int x, int y) { var playChanges = new List <Coord>(); OffsetCalculator calc = new OffsetCalculator(x, y); for (int dir = 0; dir < 9; dir++) { calc.setDirection(dir); int length = CountLine(p, calc); calc.MakeOffset(length); if (LineShouldChangeOwnership(length, calc, p)) { var lineChanges = ListChangesInLine(length, calc); playChanges.AddRange(lineChanges); } } if (playChanges.Any()) {//als er een lege plaats wordt aangeklikt, kom je hier zeker al terecht playChanges.Add(new Coord(x, y)); } return(playChanges); }
private IEnumerable <Coord> ListChangesInLine(int length, OffsetCalculator calc) { for (int i = length - 1; i > 0; i--) { calc.MakeOffset(i); yield return(new Coord(calc.ResultX, calc.ResultY)); } }
private int CountLine(Player p, OffsetCalculator calc) { int offset = 0; do { offset++; calc.MakeOffset(offset); } while (board.CanOvertakeToken(p, calc.ResultX, calc.ResultY)); if (!board.IsInBoard(calc.ResultX, calc.ResultY) || board[calc.ResultX, calc.ResultY] != p) { offset = 0; } return(offset); }