Degullmok-client/Assets/Script/Renju/ForbiddenDetectorBase.cs

49 lines
1.6 KiB
C#

public class ForbiddenDetectorBase
{
private protected Enums.PlayerType Black = Enums.PlayerType.PlayerA;
private protected Enums.PlayerType Space = Enums.PlayerType.None;
// 8방향을 나타내는 델타 배열 (가로, 세로, 대각선 방향)
private protected readonly int[,] Directions = new int[8, 2]
{
{ 1, 0 }, // 오른쪽
{ 1, 1 }, // 오른쪽 아래
{ 0, 1 }, // 아래
{ -1, 1 }, // 왼쪽 아래
{ -1, 0 }, // 왼쪽
{ -1, -1 }, // 왼쪽 위
{ 0, -1 }, // 위
{ 1, -1 } // 오른쪽 위
};
// 방향 쌍을 정의 (반대 방향끼리 쌍을 이룸)
// 0-4: 가로 방향 쌍 (동-서)
// 1-5: 대각선 방향 쌍 (남동-북서)
// 2-6: 세로 방향 쌍 (남-북)
// 3-7: 대각선 방향 쌍 (남서-북동)
private protected readonly int[,] DirectionPairs = { { 0, 4 }, { 1, 5 }, { 2, 6 }, { 3, 7 } };
// 15*15 보드 사이즈
private protected int _boardSize = Constants.BoardSize;
/// <summary>
/// 좌표가 보드 범위 내에 있는지 확인
/// </summary>
private protected bool IsInBounds(int row, int col)
{
var inBoardSizeRow = row >= 0 && row < _boardSize;
var inBoardSizeCol = col >= 0 && col < _boardSize;
return inBoardSizeRow && inBoardSizeCol;
}
/// <summary>
/// 해당 위치가 비어있는지 확인
/// </summary>
private protected bool IsEmptyPosition(Enums.PlayerType[,] board, int row, int col)
{
if (!IsInBounds(row, col)) return false;
return board[row, col] == Enums.PlayerType.None;
}
}