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