νμ μ½λ μ§€ λ λλΌλκ±΄λ° μ λͺ©μ²λΌ μ΄λκ²μ λ μ€μ μ λκ³ μ½λλ₯Ό μ§μΌν μ§ λͺ¨λ₯΄κ² μ΄μ λ€λ₯Έ μ¬λλ€μ μ΄μΌ μκ°νλμ§ κΆκΈν΄μ κΈ μ¬λ €λ΄
μλ₯Όλ€μ΄ λ΄κ° μ§κΈ JPS μκ³ λ¦¬μ¦ μ½λλ₯Ό μμ±νκ³ μμ΄,Β
κ·Όλ° κ·Έλ νλ°©ν₯μ μ΄λ μ½λμ μ½λλ₯Ό μ°Ύλ μ½λλ₯Ό μμ±νλλ°Β
1. μ§κ΄μ Β
8λ°©ν₯μ λν λ°©ν₯λ³ ν¨μλ₯Ό 8κ°λ₯Ό λ€ μμ±νκ³ κ°μ Έλ€ μ°λκ±°Β
ex) leftMove, rightMove ...
2. ν¨μ¨μ±(μ λ°λ³΅)
λ°°μ΄μ νλ νμΒ
int[] dir = new int[] // μ΄λ μ’νμ λν λ°°μ΄
int[] corner = new int[] // μ½λ μμΉμ λν μ’νλ₯Ό κ°λ λ°°μ΄
public void StraightMove(int dir) //μ΄λ μ’νμ λν λ§€κ°λ³μλ₯Ό λ°μμ μμμ λ‘μ§λλ‘ μ²λ¦¬νλ ν¨μ
{
//ToDo ...
//λ°©ν₯μ λ°λ₯Έ corner νμΈ μ²λ¦¬
}
μ΄λ°μμΌλ‘ νλμ ν¨μλ§ νμ λ§€κ°λ³μλ₯Ό ν΅ν΄ μλνλ μ½λ λμ μ§κ΄μ μ΄μ§ λͺ»νλ€λ λ¨μ μ΄ μμ
νμ μ½λλ₯Ό μ§€ λ μ λκ°μ§ κ²½μ°λ‘ λλ λ§μ λΉ μ§λλ° μ΄λ€ κ±Έ λ μ νΈνλμ§ κΆκΈν¨
λλ2
λλ 2λ²μͺ½μ΄ λ μ’μκ±° κ°κΈ΄νλ° νμ λ€ μ§κ³ λλ©΄ λ€λ₯Έμ¬λλ€μ΄ λͺ»μμλ³ΌκΉλ΄ κ±±μ μ΄ ν¬κΈ΄ν¨
1λ²μ μ§κ΄μ μΈκ² μλλΌ λΆνμνκ² ν¨μλ₯Ό λ§μ΄ λ§λ κ±°μ. ꡬ쑰μ μΌλ‘ μ€νλ € μ§κ΄μ±μ΄ λ¨μ΄μ§.
StraightMove(int dir) if (CornerCheck(corner[dir]))... LeftMove(); //μμ μΌμͺ½ μ΄λμΌ λ μ½λ 체ν¬κ° λ€μ΄κ° μμ μ΄λ κ² κ΅¬νλμ΄μλ€ μΉλ©΄ μ무리 κ·Έλλ μλ³΄λ€ μλκ° λ μ§κ΄μ μ΄μ§ μμ ?
1λ²μμΌλ‘ λ§λ€λ©΄ μΈλΆμμ λ°©ν₯ κ°μ λ°λΌ μ΄λ μν€κ³ μΆμ λ if (direction == Direction.LeftTop) LeftTopMove(); else if (direction == Direction.Top) TopMove(); μ΄ λ리 μ³μΌνλλ°, μ΄λ¬λ©΄ 1λ²κ³Ό 2λ² λλ€ κ΅¬ννλ μ μ. 2λ²μ μμ μ²λ¦¬λ‘ κΉλνκ² κ΅¬νν΄μΌμ§.
μ½λκ° μ§§λ€ -> μ§κ΄μ μ½λκ° κΈΈμ΄μ§κ±°λ μ§λμΉκ² λ°λ³΅ νΈμΆμ΄ λ§μμ§λ€ -> ν¨μ¨μ± μ€λμ νΌκ³€νλ€ -> μκ°λλ°λ‘
νΌκ³€νλ©΄ λ©μΆ°μΌν¨ γ γ γ λ΄μΌλ€μ보면 μμ ν κ±°ν¬μ±μ΄ γ γ γ
λ―Έλμ λμμ νμ μμν΄ μμ보기μ½κ³ μμ νκΈ°μ½κ²νλκ² μ’μ§
1λ²μ μ§κ΄μ μ΄μ§λ, ν¨μ¨μ μ΄μ§λ μμ 2λ²μ΄ μ§κ΄μ μ΄μ§ μλ€κ³ μκ°νλ μ΄μ λ μ«μλ₯Ό λ°©ν₯κ°μΌλ‘ μΉννλκ² 'μ§κ΄μ μ΄μ§ μμ μ½μ' μ΄κΈ° λλ¬ΈμΌν λ° κ·ΈλΌ λ°©ν₯κ°μ μ«μκ° μλλΌ μ΄κ±°νμΌλ‘ λ°κΏμ£Όλ©΄ λλ λ¬Έμ λΌκ³ μκ°ν¨ μ°λ¦¬κ° 보기μ 0 = μμͺ½λ³΄λ€ MyDirection.Top = μμͺ½μ΄ λ μμ보기 μ¬μ΄κ² λΉμ°νκ² μ£ ?
μ μ§λ³΄μνκΈ° νΈν μ½λκ° μ’μ§. λμ€μ μμ ν λ μ½λ μ΄ν΄ λ€μνλ κ²λ λΉμ©μ
2222222
λ₯ν
μΉκ΅¬μΌ 1λ²μ μ°λ©΄ μλΌλ λ°©λ²μ΄μΌ... λμ€μ μ μ§λ³΄μν λλ λ―ΈμΉ¨ enumμ μ°λ νλλΌλ 2λ²μ μ°λλ‘ νμ