Пример #1
0
 public void Apply(BoardFinished finished)
 {
     Finished = finished.Timestamp;
 }
Пример #2
0
        private void CheckWinner()
        {
            int crosses  = 0;
            int noughtes = 0;
            int number   = 0;

            // { { A1, A2, A3 }, { B1, B2, B3 }, { C1, C2, C3 }, { A1, B1, C1 }, { A2, B2, C2 }, { A3, B3, C3 }, { A1, B2, C3 }, { A3, B2, C1 } };
            string[,] wins = new string[8, 3]
            {
                { "A1", "A2", "A3" }, // row a
                { "B1", "B2", "B3" }, // row b
                { "C1", "C2", "C3" }, // row c
                { "A1", "B1", "C1" }, // col 1
                { "A2", "B2", "C2" }, // col 2
                { "A3", "B3", "C3" }, // col 3
                { "A1", "B2", "C3" }, // diag topL -> botR
                { "A3", "B2", "C1" }, // diag botL -> topR
            };

            for (int i = 0; i < 8; i++)
            {
                for (int ii = 0; ii < 3; ii++)
                {
                    var position = wins[i, ii];
                    var ttPos    = GetPosition(position);
                    if (ttPos == TTTPosition.Cross)
                    {
                        crosses += 1;
                    }
                    if (ttPos == TTTPosition.Nought)
                    {
                        noughtes += 1;
                    }
                }
                if (crosses == 3)
                {
                    BoardFinished?.Invoke(this, new BoardFinishedEventArgs(this, Board, "Cross"));
                    return;
                }
                if (noughtes == 3)
                {
                    BoardFinished?.Invoke(this, new BoardFinishedEventArgs(this, Board, "Nought"));
                    return;
                }
                crosses  = 0;
                noughtes = 0;
            }
            for (int let = 0; let < 3; let++)
            {
                for (int num = 0; num < 3; num++)
                {
                    if (Board[let, num] != TTTPosition.Empty)
                    {
                        number += 1;
                    }
                }
            }
            if (number == 9)
            {
                BoardFinished?.Invoke(this, new BoardFinishedEventArgs(this, Board, "Draw"));
            }
        }
Пример #3
0
 public void Apply(BoardView view, BoardFinished finished)
 {
     view.Deactivated = finished.Timestamp;
 }