(μ•ˆλ‚˜μ˜€λ©΄ 계속 μƒˆλ‘œκ³ μΉ¨ν•΄λ³΄κ³  μœ μ‹μ΄ μš•ν•˜λ‹€λ³΄λ©΄Β λ‚˜μ˜΄)



μ΄κ±°λŠ” λ‚΄κ°€ λ°œλ§€ν•œ κ²Œμž„μ— λ“€μ–΄μžˆλŠ” λ―Έλ‹ˆκ²Œμž„μ΄μ•Ό


μŠ€νŒ€μ΄λž‘ μŠ€ν† λΈŒμ˜ VOICEλΌλŠ” κ²Œμž„μΈλ° μ§€κΈˆ 세일쀑




μ•„λ¬΄νŠΌ μ΄κ±°λŠ” μ›λ¦¬λŠ” 이런 식


1. 맡을 λ§Œλ“¬. 맡은 리슀트둜 λ˜μ–΄ 있음


sokoban_grid = [

[1,1,1,1,1,1,1,1,1,1,1,1],

[1,3,0,0,0,0,0,1,1,0,0,1],

[1,0,1,0,1,0,0,0,0,0,0,1],

[1,0,0,0,0,0,0,1,1,1,3,1],

[1,0,0,0,2,0,2,0,0,1,0,1],

[1,9,2,0,1,1,1,0,0,0,1,1],

[1,0,0,0,1,1,1,0,2,0,0,1],

[1,0,0,0,3,0,0,2,0,0,0,1],

[1,0,0,0,0,0,1,1,1,1,0,1],

[1,1,1,1,0,0,1,0,0,1,0,1],

[1,1,1,1,0,0,0,0,0,1,1,1],

[1,3,0,0,0,0,1,0,0,0,3,1],

[1,1,1,1,1,1,1,1,1,1,1,1]

]


μœ„μ˜ 맡의 경우 μ΄λ ‡κ²Œ λ˜μ–΄μžˆμŒ


0 = κΈΈ, 1 = λ²½, 2 = μƒμž, 3 = μƒμž λ„£λŠ” 골인지점, 4 = 골인지점과 겹친 μƒμž, 7 = λΉ„μ–΄μžˆλŠ” κ³³, 8 = ν”Œλ ˆμ΄μ–΄μ™€ 겹친 골인지점, 9 = ν”Œλ ˆμ΄μ–΄


둜 ꡬ성됨



2. ν”Œλ ˆμ΄μ–΄λŠ” 9κ°€ 처음 있던 μ§€μ μ—μ„œ μ‹œμž‘. ν”Œλ ˆμ΄μ–΄μ˜ μ’Œν‘œλŠ” 항상 λ³„λ„μ˜ ν•¨μˆ˜μ— 기둝됨


3. ν”Œλ ˆμ΄μ–΄κ°€ ν™”μ‚΄ν‘œ ν‚€λ‘œ 움직일 λ•Œλ§ˆλ‹€ λ°©ν–₯ 값이 κ·Έ λ°©ν–₯에 ν•΄λ‹Ήν•˜λŠ” κ°’μœΌλ‘œ λ°”λ€œ

(예λ₯Όλ“€λ©΄ μ™Όμͺ½μ„ 보면 λ°©ν–₯값이 L, 였λ₯Έμͺ½μœΌλ‘œ κ°€λ©΄ λ°©ν–₯값이 R, μœ„λ©΄ U, μ•„λž˜λ©΄ D)


4. ν”Œλ ˆμ΄μ–΄μ˜ μ•ž(ν”Œλ ˆμ΄μ–΄κ°€ 이동할 λ°©ν–₯)에 뭐가 μžˆλŠ”μ§€ 확인


- 길이라면 ν”Œλ ˆμ΄μ–΄λŠ” κ·Έ λ°©ν–₯으둜 전진함


- 벽이라면 ν”Œλ ˆμ΄μ–΄λŠ” 더 이동이 λΆˆκ°€λŠ₯함


- μƒμžλΌλ©΄ μƒμž μ•ž("μ•ž"은 ν”Œλ ˆμ΄μ–΄μ˜ 이동방ν–₯κ³Ό λ™μΌν•œ λ°©ν–₯μž„)에 또 뭐가 μžˆλŠ”μ§€ 확인함.

μƒμž μ•žμ— κΈΈμ΄λ‚˜ 골인지점이 μ•„λ‹Œ 게 μžˆλ‹€λ©΄ μƒμžλŠ” 움직이지 μ•Šκ³  ν”Œλ ˆμ΄μ–΄λ„ 움직이지 λͺ»ν•¨

μ•„λ‹ˆλΌλ©΄ ν”Œλ ˆμ΄μ–΄κ°€ ν•œμΉΈ 움직이고, μƒμžλŠ” ν”Œλ ˆμ΄μ–΄μ˜ λ°©ν–₯값에 따라 같은 λ°©ν–₯으둜 μ›€μ§μž„

(μ›€μ§μΈλ‹€λŠ”κ±΄ μƒμž(2)λ₯Ό ν”Œλ ˆμ΄μ–΄(9)둜 λŒ€μ²΄ν•˜κ³ , μƒμž μ•žμ˜ λ°”λ‹₯(0)을 μƒμž(2)둜 λŒ€μ²΄ν•˜λŠ” κ²ƒμž„)


- λ§Œμ•½ μƒμž μ•žμ— μžˆλŠ”κ²Œ 골인지점이라면 μƒμž(2)λŠ” 사라지고, 골인지점(3)이 골인지점과 겹친 μƒμž(4)둜 변함


- 골인지점과 겹친 μƒμžλ₯Ό ν”Œλ ˆμ΄μ–΄κ°€ λ°€μ–΄λ‚΄λ©΄ 골인지점과 겹친 μƒμž(4)λŠ” 골인지점과 겹친 ν”Œλ ˆμ΄μ–΄(8)둜 λ³€ν•˜κ³ 

이동방ν–₯κ³Ό λ™μΌν•œ λ°©ν–₯으둜 8의 ν•œμΉΈ μ•žμ— μƒμž(2)κ°€ λ‹€μ‹œ 생성됨

(μƒμžκ°€ λ°€λ €λ‚˜λŠ” κ·œμΉ™μ€ μœ„μ˜ μƒμž λ°€κΈ° κ·œμΉ™κ³Ό 동일)


5. 움직일 λ•Œλ§ˆλ‹€ λ§΅ 전체λ₯Ό μ²΄ν¬ν•΄μ„œ μƒμž(2) κ°œμˆ˜κ°€ 0개라면 ν΄λ¦¬μ–΄λ‘œ νŒμ •ν•¨

(골인지점과 겹친 μƒμž(4)λŠ” μƒμž(2)와 닀름)




μ†Œμ½”λ°˜ μžμ²΄λŠ” 뭐 κ·Έλ ‡κ²Œ λŒ€λ‹¨ν•œ κ²Œμž„λ„ μ•„λ‹Œλ° 파이썬 ν•˜λ‚˜λ„ μ•ˆμ“°κ³  렌파이 λ‚΄μž₯ν•¨μˆ˜λ‘œλ§Œ λ§Œλ“€μ—ˆμŒ. 파이썬 할쀄λͺ°λΌμ„œ...


λ‚˜λŠ” λΉ‘λŒ€κ°€λ¦¬λΌ μ΄λ ‡κ²Œλ°–μ— λͺ»ν•˜μ§€λ§Œ 뭐 λ˜‘λ˜‘ν•œ μ‚¬λžŒμ€ 파이썬으둜 λšλ”± λ§Œλ“€κ² μ§€


파이썬 μ“΄ 뢀뢄은 μŠ€ν…Œμ΄μ§€ 리셋 κ΄€λ ¨λœ λΆ€λΆ„(μ—¬κΈ°λŠ” λ”₯μΉ΄ν”Όλ₯Ό μ¨μ•Όν•΄μ„œ)밖에 μ—†λŠ”λ“―



μ†Œμ½”λ°˜ 랜덀맡 μƒμ„±ν•˜λŠ” ν”„λ‘œκ·Έλž¨λ“€λ„ μ—¬λŸΏ λ‚˜μ™€μžˆλŠ”λ° κ·Έ μ›λ¦¬λ§Œ μ•Œλ©΄ 랜덀맡 버전 μ†Œμ½”λ°˜λ„ λ§Œλ“€ 수 μžˆμ„ν…λ°