๋ฐฐ์ด์ ๋ค์ด๊ฐ๋ ๊ฐ๋ ์ผ๋ง ์ํผ
์ ์ฝ๋์์ ๋ฐฐ์ด์ ์ด๊ธฐํํ๋๋ฐ OverFloweExcepton์ด ๋จ๋๋ฐ
๋ญ๊ฐ ๋ฌธ์ ์ง?
Astarํจ๋ํฐ ๋ฐฐ์ด์ด ๋ฌธ์ ์ธ๊ฑฐ๊ฐ์๋ฐ ๋ฐฐ์ด์์ ๋ฌธ์ ๊ฐ ์๊ธธ๊ฒ์ ์๋์ง ์๋? ๋์ฒด ๋ญ๊ฐ ๋ฌธ์ ์ง
๋๋ฒ๊ฑฐ์จ๋ด
ํจ ๊ทผ๋ฐ๋ ๋ญ๊ฐ ์ด์ํ๋ค
๋๋ฒ๊ฑฐ ์ฐ๊ณ ์ค๋จ์ง์ ์ ์ฐพ์์ ๋ณด๋๋ฐ ์ Null์ด ๋ค์ด๊ฐ์ง
์ปดํจํฐ๋ ๊ฑฐ์ง๋ง์ํจ
LowerBounds, UpperBounds ๊ฐ๋ค์ ์ ์์ ์?
323์ค์ด ์ ํํ ์ด๋์?
ใ ใ ใ ์ ์๊ฐ๋ค์ด๊ฐ.
aStarMovementPenalty = new int[room.templateUpperBounds.x - room.templateLowerBounds.x + 1, room.templateUpperBounds.y - room.templateLowerBounds.y + 1];
room.templateUpperBounds.y๊ฐ8 ์ ๋ถ ๋๋ฒ๊ทธ ๋ก๊ทธ๋ก ์ ๋๋ก ๋ค์ด๊ฐ๋๊ฑฐ ํ์ธํจ
templateUpperBounds.x - templateLowerBounds.x ๊ฐ์ ์ฐ์ฐ ํ์ ๋ ๊ฐ์ด ๋๋ฌด ๋๋ค๊ฑฐ๋ ํ๊ฑด ์๋?
๊ธธ์ด๊ฐ ์์๋ก ๋จ์ด์ง๋ ๊ฒฝ์ฐ๋ ์ค๋ฒํ๋ก ์ต์ ์ ์ด ๋จ๋ค
์ผ๋จ ์น ๋ค ์ฒดํฌํด๋ด. ๊ธธ์ด๊ฐ ์์๋ก ๋จ์ด์ง ์ผ์ด ์๋ ์ถ๋ค.
์ผ๋จ ๊ฐ ์ฐจ์์ ๊ธธ์ด ์ข ํ์ธํ๋๊ฒ ์ข์ ๋ฏ ๋๋ค ๋ง ๋จ์ ์ด์ ๋์ค๋ฉด ๊ณฑํด์ 2์ต์ ๋์ด ๋ฐฐ์ด ๊ธธ์ด ํ๊ณ์ ๋๋ฌํด์ ๋ฌธ์ ์๊น
๋ฐฐ์ด๊ฐ ๊ฐ์ ธ์ด
ํด๋น ๋๊ธ์ ์ญ์ ๋์์ต๋๋ค.
2์ฐจ์ ๋ฐฐ์ด ์๋?? ๊ทผ๋ฐ ์ด๊ฒ ํด ์ผ์ด ์๋
private void AddObstaclesAndPreferredPaths() ๋ฉ์๋ ์ ์
x๋ y์ +1์ด ๋ถ๋๋ฐ x, y 10,10์ธ๋ฐ +1์ด๋๋ฉด ์ค๋ฒํ๋ก์ฐ์ง. ๋งฅ์ค๊ฐ ์์ธ์ค์ ํด์ค์ผํ ๋ฏ
์ ์ค...
์ด๊ฑฐ ํจ ๋ ๋ด์ผํ ๋ฏ ๊ณ ๋ง๋ค.
์๋์ผ ์ด๊ฒ๋ ์ด๊ฑฐ ๋ณด๋๊น 2์ฐจ์ ๋ฐฐ์ด๊ฐ์ ๋ฐฐ์ด ๋ค์๊ฐ์ x,y ๊ฐ์๋ฐ๋ผ๋๊น ๋น์ทํ๊ฑฐ ๊ฐ์๋ฐ ์๋๋ค ๋ญ์ง ๋ชจ๋ฅด๊ฒ ๋ค ๋ฌด๋บ๊ฐ
์ผ ๊ณ ๋ง๋ค ๋งฅ์ค๊ฐ ์์ธ์ค์ ํ๋๊น ๋จ
aStarMovementPenalty = new int[room.templateUpperBounds.x - room.templateLowerBounds.x + 1, room.templateUpperBounds.y - room.templateLowerBounds.y + 1]; ์ด๊ฒ ์๋ฌ ๋ผ์ธ์ด๋ผ๋๊ฑด๊ฐ? ํน์ ์ด๋์ ๋ผ์ด์ง์ด๋ ์ด๊ธฐํ ์์ ์ ํ์ด? ์ด๊ธฐ๊ฐ์ด ์๋ค์ด๊ฐ์ min or max ๋ฒจ๋ฅ ๋ค์ด๊ฐ์ + 1๋์ ๋๋ ๊ฒฝ์ฐ์ผ ์ ์์. ์ฆ ์ ๋ผ์ธ์ด ๋ถ๋ฆฌ๊ธฐ ์ ์ room.template ์๋๋ค์ด ์ด๊ธฐํ ๊ฐ์ด ์ ๋ค์ด๊ฐ๊ฑฐ๋ 0๊ฐ์ด๋ก ์ด๊ธฐํ ๋๋์ง ํ์ธ๋ ํ์ํจ.
์ด๊ธฐํ๋ ํ์ ๊ทผ๋ฐ ๋ญ๊ฐ ๋ฌธ์ ๊ฐ ์๊ฒผ๋์ง ํ ...
์ฐพ์๋ค. ๋ ๋ง๋๋ก์ ์ด๊ธฐํํ๋๋ฐ max ๋ฐธ๋ฅ๊ฐ ๋๊ฐ๋ฏ
์ด๊ธฐํ ๋ฌธ์ ๋ ์์ฃผ ์๊ธฐ๋ ๋ฌธ์ ์ผ. ํญ์ ์ ์ ๊ฐ์ผ๋ก ์ด๊ธฐํ ํ๋ ์ต๊ด ๋ค์ด๋๊ฒ ์ข์.