diff --git a/Assets/Script/Renju/ForbiddenDetectorBase.cs b/Assets/Script/Renju/ForbiddenDetectorBase.cs index 7c342c6..f954c1a 100644 --- a/Assets/Script/Renju/ForbiddenDetectorBase.cs +++ b/Assets/Script/Renju/ForbiddenDetectorBase.cs @@ -1,10 +1,20 @@ public class ForbiddenDetectorBase { + /// + /// 흑색 돌 + /// private protected Enums.PlayerType Black = Enums.PlayerType.PlayerA; + /// + /// 빈칸 + /// private protected Enums.PlayerType Space = Enums.PlayerType.None; + /// + /// 흰색 돌, 렌주룰 내에선 벽으로도 활용 + /// private protected Enums.PlayerType White = Enums.PlayerType.PlayerB; - - // 8방향을 나타내는 델타 배열 (가로, 세로, 대각선 방향) + /// + /// 8방향을 나타내는 델타 배열 (가로, 세로, 대각선 방향) + /// private protected readonly int[,] Directions = new int[8, 2] { { 1, 0 }, // 오른쪽 @@ -17,11 +27,13 @@ { 1, -1 } // 오른쪽 위 }; - // 방향 쌍을 정의 (반대 방향끼리 쌍을 이룸) - // 0-4: 가로 방향 쌍 (동-서) - // 1-5: 대각선 방향 쌍 (남동-북서) - // 2-6: 세로 방향 쌍 (남-북) - // 3-7: 대각선 방향 쌍 (남서-북동) + /// + /// 방향 쌍을 정의 (반대 방향끼리 쌍을 이룸) + /// 0-4: 가로 방향 쌍 (동-서) + /// 1-5: 대각선 방향 쌍 (남동-북서) + /// 2-6: 세로 방향 쌍 (남-북) + /// 3-7: 대각선 방향 쌍 (남서-북동) + /// private protected readonly int[,] DirectionPairs = { { 0, 4 }, { 1, 5 }, { 2, 6 }, { 3, 7 } }; // 15*15 보드 사이즈 diff --git a/Assets/Script/Renju/RenjuDoubleFourDetector.cs b/Assets/Script/Renju/RenjuDoubleFourDetector.cs index 8bc8b65..9f38dce 100644 --- a/Assets/Script/Renju/RenjuDoubleFourDetector.cs +++ b/Assets/Script/Renju/RenjuDoubleFourDetector.cs @@ -30,12 +30,9 @@ public class RenjuDoubleFourDetector: ForbiddenDetectorBase /// private bool CheckDoubleFour(Enums.PlayerType[,] board, int row, int col) { - // 각각 두개의 라인에서 쌍사를 형성하는 경우 - if (FindDoubleLineFour(board, row, col)) return true; - - // true : 일직선으로 쌍사가 만들어지는 특수 패턴 // false : 모든 경우에도 쌍사가 만들어지지 않음 - return FindSingleLineDoubleFour(board, row, col); + return FindDoubleLineFour(board, row, col) || // 각각 두개의 라인에서 쌍사를 형성하는 경우 + FindSingleLineDoubleFour(board, row, col); // 일직선으로 쌍사가 만들어지는 특수 패턴 } private bool FindDoubleLineFour(Enums.PlayerType[,] board, int row, int col) diff --git a/Assets/Script/Renju/RenjuDoubleThreeDetector.cs b/Assets/Script/Renju/RenjuDoubleThreeDetector.cs index 327eb39..02c0ee1 100644 --- a/Assets/Script/Renju/RenjuDoubleThreeDetector.cs +++ b/Assets/Script/Renju/RenjuDoubleThreeDetector.cs @@ -119,19 +119,9 @@ public class RenjuDoubleThreeDetector: ForbiddenDetectorBase /// private bool CheckForOpenThree(Enums.PlayerType[] linePattern, int centerIndex) { - // 연속된 열린 3 확인 - if (CheckConsecutiveOpenThree(linePattern, centerIndex)) - { - return true; - } - - // 한 칸 떨어진 열린 3 확인 - if (CheckGappedOpenThree(linePattern, centerIndex)) - { - return true; - } - - return false; + // 둘다 아니면 열린 3이 아님 + return CheckConsecutiveOpenThree(linePattern, centerIndex) || // 연속된 열린 3 확인 + CheckGappedOpenThree(linePattern, centerIndex); // 한 칸 떨어진 열린 3 확인 } /// diff --git a/Assets/Trash Can_JY/Renju.unity b/Assets/Trash Can_JY/Renju.unity index d70b9a6..1a49ad8 100644 --- a/Assets/Trash Can_JY/Renju.unity +++ b/Assets/Trash Can_JY/Renju.unity @@ -306,7 +306,7 @@ PrefabInstance: m_Modifications: - target: {fileID: 626368541760032086, guid: 65aac0e22fe25aa42b9cf7df776a854d, type: 3} propertyPath: m_Name - value: '[Canvas] Game UI' + value: Canvas objectReference: {fileID: 0} - target: {fileID: 6113787613246818512, guid: 65aac0e22fe25aa42b9cf7df776a854d, type: 3} propertyPath: m_Pivot.x @@ -21706,6 +21706,7 @@ GameObject: m_Component: - component: {fileID: 1260188604546925059} - component: {fileID: 5677811662396631252} + - component: {fileID: 5677811662396631253} m_Layer: 0 m_Name: GameManager m_TagString: Untagged @@ -33884,10 +33885,104 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 35a4c6d5d3a97b444b968e68ec8bb9f7, type: 3} m_Name: m_EditorClassIdentifier: - signinPanel: {fileID: 0} - signupPanel: {fileID: 0} - canvas: {fileID: 0} - profileSprites: [] + panelManagerPrefab: {fileID: 3475740041361426276, guid: 085ca07ca90c92545b2594bd13412701, type: 3} + audioManagerPrefab: {fileID: 2946408323859178723, guid: e829818dce39a5d4383e061111bed871, type: 3} +--- !u!82 &5677811662396631253 +AudioSource: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3626119060319719757} + m_Enabled: 1 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: 0} + m_audioClip: {fileID: 0} + m_PlayOnAwake: 1 + m_Volume: 1 + m_Pitch: 1 + Loop: 0 + Mute: 0 + Spatialize: 0 + SpatializePostEffects: 0 + Priority: 128 + DopplerLevel: 1 + MinDistance: 1 + MaxDistance: 500 + Pan2D: 0 + rolloffMode: 0 + BypassEffects: 0 + BypassListenerEffects: 0 + BypassReverbZones: 0 + rolloffCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + panLevelCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + spreadCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + reverbZoneMixCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 --- !u!61 &5684907091474785187 BoxCollider2D: m_ObjectHideFlags: 0