65 lines
2.3 KiB
C#
65 lines
2.3 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|