Exemple #1
0
        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);
        }
Exemple #2
0
 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));
     }
 }
Exemple #3
0
        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);
        }