using qtc_api.Enums; namespace qtc_api.Schema { public class TicTacToeBoard { public TicTacToeSymbol Square1 { get; set; } = TicTacToeSymbol.Blank; public TicTacToeSymbol Square2 { get; set; } = TicTacToeSymbol.Blank; public TicTacToeSymbol Square3 { get; set; } = TicTacToeSymbol.Blank; public TicTacToeSymbol Square4 { get; set; } = TicTacToeSymbol.Blank; public TicTacToeSymbol Square5 { get; set; } = TicTacToeSymbol.Blank; public TicTacToeSymbol Square6 { get; set; } = TicTacToeSymbol.Blank; public TicTacToeSymbol Square7 { get; set; } = TicTacToeSymbol.Blank; public TicTacToeSymbol Square8 { get; set; } = TicTacToeSymbol.Blank; public TicTacToeSymbol Square9 { get; set; } = TicTacToeSymbol.Blank; public TicTacToeSymbol GetWinner() { // winning possibilities var lines = new List<(TicTacToeSymbol, TicTacToeSymbol, TicTacToeSymbol)> { (Square1, Square2, Square3), (Square4, Square5, Square6), (Square7, Square8, Square9), (Square1, Square4, Square7), (Square2, Square5, Square8), (Square3, Square6, Square9), (Square1, Square5, Square9), (Square3, Square5, Square7) }; foreach (var (a, b, c) in lines) { if (a != TicTacToeSymbol.Blank && a == b && b == c) { return a; // winner } } return TicTacToeSymbol.Blank; } public bool IsDraw() { // If there is a winner, it's not a draw if (GetWinner() != TicTacToeSymbol.Blank) return false; // Check if all squares are filled bool allFilled = Square1 != TicTacToeSymbol.Blank && Square2 != TicTacToeSymbol.Blank && Square3 != TicTacToeSymbol.Blank && Square4 != TicTacToeSymbol.Blank && Square5 != TicTacToeSymbol.Blank && Square6 != TicTacToeSymbol.Blank && Square7 != TicTacToeSymbol.Blank && Square8 != TicTacToeSymbol.Blank && Square9 != TicTacToeSymbol.Blank; return allFilled; } } }