public void Apply(BoardFinished finished) { Finished = finished.Timestamp; }
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")); } }
public void Apply(BoardView view, BoardFinished finished) { view.Deactivated = finished.Timestamp; }