DO-41 [Feat] 무승부 판단 최소 착수 값 추가
최소 착수 값 이하일 경우 무승부 판단을 false로 반환
This commit is contained in:
parent
e5f8b4240b
commit
5b1ddd7a95
@ -12,10 +12,10 @@ public abstract class BasePlayerState
|
|||||||
|
|
||||||
public void ProcessMove(GameLogic gameLogic, Enums.PlayerType playerType, int row, int col)
|
public void ProcessMove(GameLogic gameLogic, Enums.PlayerType playerType, int row, int col)
|
||||||
{
|
{
|
||||||
|
|
||||||
gameLogic.fioTimer.PauseTimer();
|
gameLogic.fioTimer.PauseTimer();
|
||||||
|
|
||||||
gameLogic.SetNewBoardValue(playerType, row, col);
|
gameLogic.SetNewBoardValue(playerType, row, col);
|
||||||
|
gameLogic.CountStoneCounter();
|
||||||
|
|
||||||
if (gameLogic.CheckGameWin(playerType, row, col))
|
if (gameLogic.CheckGameWin(playerType, row, col))
|
||||||
{
|
{
|
||||||
@ -24,7 +24,6 @@ public abstract class BasePlayerState
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
//TODO: 무승부 확인
|
|
||||||
if (gameLogic.CheckGameDraw(gameLogic.GetBoard()))
|
if (gameLogic.CheckGameDraw(gameLogic.GetBoard()))
|
||||||
{
|
{
|
||||||
GameManager.Instance.panelManager.OpenConfirmPanel($"Game Over: Draw",() =>{});
|
GameManager.Instance.panelManager.OpenConfirmPanel($"Game Over: Draw",() =>{});
|
||||||
@ -145,17 +144,26 @@ public class GameLogic : MonoBehaviour
|
|||||||
public StoneController stoneController;
|
public StoneController stoneController;
|
||||||
public Enums.PlayerType currentTurn;
|
public Enums.PlayerType currentTurn;
|
||||||
public Enums.GameType gameType;
|
public Enums.GameType gameType;
|
||||||
|
//총 착수된 돌 카운터
|
||||||
|
private int _totalStoneCounter = 0;
|
||||||
|
public int TotalStoneCounter{get{return _totalStoneCounter;}}
|
||||||
|
|
||||||
public BasePlayerState firstPlayerState;
|
public BasePlayerState firstPlayerState;
|
||||||
public BasePlayerState secondPlayerState;
|
public BasePlayerState secondPlayerState;
|
||||||
private BasePlayerState _currentPlayerState;
|
private BasePlayerState _currentPlayerState;
|
||||||
|
//타이머
|
||||||
public FioTimer fioTimer;
|
public FioTimer fioTimer;
|
||||||
|
|
||||||
private const int WIN_COUNT = 5;
|
private const int WIN_COUNT = 5;
|
||||||
|
//무승부 확인을 위한 최소 착수 수
|
||||||
|
private const int MinCountForDrawCheck = 150;
|
||||||
//선택된 좌표
|
//선택된 좌표
|
||||||
public int selectedRow;
|
public int selectedRow;
|
||||||
public int selectedCol;
|
public int selectedCol;
|
||||||
//마지막 배치된 좌표
|
//마지막 배치된 좌표
|
||||||
|
private int _lastRow;
|
||||||
|
private int _lastCol;
|
||||||
|
|
||||||
#region Renju Members
|
#region Renju Members
|
||||||
// 렌주룰 금수 검사기
|
// 렌주룰 금수 검사기
|
||||||
private RenjuForbiddenMoveDetector _forbiddenDetector;
|
private RenjuForbiddenMoveDetector _forbiddenDetector;
|
||||||
@ -164,9 +172,6 @@ public class GameLogic : MonoBehaviour
|
|||||||
private List<Vector2Int> _forbiddenMoves = new List<Vector2Int>();
|
private List<Vector2Int> _forbiddenMoves = new List<Vector2Int>();
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
private int _lastRow;
|
|
||||||
private int _lastCol;
|
|
||||||
|
|
||||||
private static int[][] _directions = new int[][]
|
private static int[][] _directions = new int[][]
|
||||||
{
|
{
|
||||||
new int[] {1, 0}, // 수직
|
new int[] {1, 0}, // 수직
|
||||||
@ -233,6 +238,11 @@ public class GameLogic : MonoBehaviour
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
//돌 카운터 증가 함수
|
||||||
|
public void CountStoneCounter()
|
||||||
|
{
|
||||||
|
_totalStoneCounter++;
|
||||||
|
}
|
||||||
|
|
||||||
//착수 버튼 클릭시 호출되는 함수
|
//착수 버튼 클릭시 호출되는 함수
|
||||||
public void OnConfirm()
|
public void OnConfirm()
|
||||||
@ -397,6 +407,7 @@ public class GameLogic : MonoBehaviour
|
|||||||
//무승부 확인
|
//무승부 확인
|
||||||
public bool CheckGameDraw(Enums.PlayerType[,] board)
|
public bool CheckGameDraw(Enums.PlayerType[,] board)
|
||||||
{
|
{
|
||||||
|
if (_totalStoneCounter < MinCountForDrawCheck) return false; //최소 착수 수보다 작으면 false 리턴
|
||||||
if (CheckIsFull(board)) return true; // 빈 칸이 없으면 무승부
|
if (CheckIsFull(board)) return true; // 빈 칸이 없으면 무승부
|
||||||
bool playerAHasChance = CheckFiveChance(board, Enums.PlayerType.PlayerA);
|
bool playerAHasChance = CheckFiveChance(board, Enums.PlayerType.PlayerA);
|
||||||
bool playerBHasChance = CheckFiveChance(board, Enums.PlayerType.PlayerB);
|
bool playerBHasChance = CheckFiveChance(board, Enums.PlayerType.PlayerB);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user