College of Computing, class of 2024, Dongbin Kim,Jingeon Shin,Yunbo Shim (20ํ๋ฒ ๊น๋๋น,์ ์ง๊ฑด,์ฌ์ค๋ณด)
์์ฐ์์ (Demonstration Video) - https://youtu.be/63dogOhNVUo
โ ์ฃผ์ : ๊ฒ์ โ ๊ฒ์ ์ข ๋ฅ: ์ ๋ต ํ์ ๋ํ์ค ๊ฒ์ โ ์ ์ฒด์ ์ธ ๊ฒ์ ์งํ ์ํ์(๋ชฌ์คํฐ)์ด ๋งต์ ๊ธธ์ ๋ฐ๋ผ์ ์ด๋ํ๊ณ ๊ทธ ๊ธธ ์ฃผ๋ณ์ ํ์๋ฅผ ์ค์นํ์ฌ ์ํ์์ด ๋ชฉ์ ์ง์ ๋๋ฌํ์ง ๋ชปํ๋๋ก ํ๋ ๊ฒ์์ด๋ค. ๊ฒ์์ด ์์๋๋ฉด ์๋ช ๋ ฅ์ด ์ฃผ์ด์ง๊ณ ์ํ์์ด ๋ชฉ ์ ์ง์ ๋๋ฌํ๋ฉด ์๋ช ๋ ฅ์ด 1์ฉ ๊ฐ์๋๊ณ , ์ฃผ์ด์ง ์๋ช ๋ ฅ์ด ๋ชจ๋ ์ฌ๋ผ์ง๋ฉด ๊ฒ์์ด ๋๋๋ค. ์ํ์์ ์ ๊ฑฐํ๋ฉด ์ฝ์ธ์ ์ป๊ฒ ๋๊ณ ๊ทธ ์ฝ์ธ์ผ๋ก ํ์๋ฅผ ์ถ๊ฐ์ ์ผ๋ก ์ค์นํ ์ ์๋ค. ๊ฒ์์ ์ด 3๊ฐ์ ๋ ๋ฒจ๋ก ๊ตฌ์ฑ๋์ด ์์ผ๋ฉฐ ๋ ๋ฒจ์ด ๋์์ง์๋ก ๋์ด๋๊ฐ ์์นํ๋ค.
โ Frame
- ๊ฒ์ ์ธํฐํ์ด์ค ์ฐฝ์ ์ํ Frame์ ๋ง๋๋ class
- JFrame class๋ฅผ ํ์ฅํ๋ค.
โ Game
- ๊ฒ์์ ํ์ํ ๊ฐ์ฒด๋ค์ด ์ ์ฅ๋๊ณ ์คํ๋ panel์ด๋ค. Jpanel์ ํ์ฅํ๊ณ ๊ฒ์์คํ์ ์ํ thread๋ฅผ ์ํด Runnable ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ๋ค.
- ๋ ๋ฒจ์ด ์ฌ๋ผ๊ฐ ๋๋ง๋ค ํ๋ฉด์ด ๋ฌ๋ผ์ง๊ธฐ ๋๋ฌธ์ constructor๋ฅผ ๋์ ํด์, ์ด๋ฏธ์ง์ ๋งต์ ์ฝ์ด์ค๊ณ , ๊ฒ์์ ํ์ํ ๊ฐ์ฒด๋ค์ ์์ฑํ๋ define method๋ฅผ ๋ฐ๋ก ๊ตฌํํ๋ค.
- ๊ฐ ๊ฐ์ฒด๋ค์ด ๊ฐ์ง๊ณ ์๋ ํ๋ฉด ์์ ์ด๋ฏธ์ง์ ๊ทธ๋ฆผ๋ค์ ์ถ๋ ฅํ๋ method(draw)๋ค์ ์คํํ method๋ฅผ ๊ตฌํํ๋ค.
- ๋ชฌ์คํฐ์ ์์ฑ ์ฃผ๊ธฐ๋ฅผ ์ ์ดํ๋ method๋ฅผ ๊ตฌํํ๋ค.
- ๊ฒ์์ ๋ชจ๋ ์ํฉ์ ์ ์ดํ๊ธฐ ์ํด thread๋ฅผ ์ฌ์ฉํ๋ค. ๊ฐ์ฒด๋ค์ ๋ฌผ๋ฆฌ์ ์์ง์์ ์ค์ ๋ ํ๋ ์์ ํตํด ์ ์ด๋๋๋ก method๋ค์ ๊ตฌํํ๋ค. ๋ง์ฝ, ๊ทธ method๋ค์ด ํ๋ ์๋งํผ ๋ฐ๋ณต ํธ์ถ๋์์ ๋ ๋ฌผ๋ฆฌ์ ์์ง์์ด ๋ํ๋๋๋ก ํ๊ธฐ ๋๋ฌธ์ ํ๋ก๊ทธ๋จ์ด ๋๋ฌด ๋นจ๋ฆฌ ๋์๊ฐ ๊ฒ์ ์งํ ๋ํ ๋๋ฌด ๋นจ๋ผ์ง์ง ์๊ฒ ํ๊ธฐ ์ํด์ thread ์ ์ด๋ฅผ ์ํด sleep์ ์ฌ์ฉํ์๋ค.
โ Map
- ๊ฒ์์ด ์งํ๋๋ ํ๋ฉด์ ๋ง๋๋ class์ด๋ค. ๋ชฌ์คํฐ๊ฐ ์ง๋๊ฐ๋ ๊ธธ๊ณผ ํ์๊ฐ ์ค์นํ ๊ณต๊ฐ์ ํ๋์ ํ์ผ(์ ์ฌ๊ฐํ)๋ก ์ค์ ํ๊ธฐ ๋๋ฌธ์ ์ด class ์์ Tile class๋ฅผ ๋ฐ๋ก ๋ง๋ค๊ณ map class์์๋ ์ด tile์ 2์ฐจ์ ๋ฐฐ์ด์ ๋ง๋ค์ด์ ๋งต์ ๋ง๋ค๋๋ก ํ๋ค.
- Tile class
- ํ์ผ์ ์ ์ฌ๊ฐํ์ผ๋ก ๊ตฌํํ์ผ๋ฉฐ, ๋ชฌ์คํฐ์ ๊ธธ์ ๋ํ๋ด๊ธฐ๋ ํ์ง๋ง, ํ์๊ฐ ์ค์น๋๋ฉด ๊ณต๊ฒฉํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋ฌผ๋ฆฌ์ method ๋ํ ๊ตฌํํ๋ค.
- ํ๋์ ์ ์ฌ๊ฐํ ํ์ผ์ด ์๊ณ ๊ทธ๊ฒ๋ณด๋ค ํฐ ์ ์ฌ๊ฐํ์ ๋ง๋ค์ด ํ์์ ๊ณต๊ฒฉ๋ฒ์๋ก ์ค์ ํ์๋ค.์ด ๊ณต๊ฒฉ๋ฒ์๋ฅผ ๋ํ๋ด๋ ์ ์ฌ๊ฐํ์ ๋ชฌ์คํฐ๊ฐ ๊ต์ฐจ๋๋ค๋ฉด ๊ณต๊ฒฉ์ ํ๋๋ก ๊ตฌํํ์๋ค.
- ๊ณต๊ฒฉ์ ํ๋ค๋ฉด, ํ์์ ์ค์๊ณผ ๋ชฌ์คํฐ์ ์ค์์ ์ฐ๊ฒฐํ๋ ์ ์ ๊ทธ๋ ค์ ๊ณต๊ฒฉ์ ํ๊ณ ์๋ค๋ ํ์๋ฅผ ๊ตฌํํ์๋ค.
- ํ์ผ์ 2์ฐจ์์ ๋ฐฐ์ด๊ณผ ๋ฐ๋ณต๋ฌธ์ ํตํด ๋ชจ๋ ํ์ผ์ด ๋ฌผ๋ฆฌ์ method์ draw method๋ฅผ ์คํ์ํค๋๋ก method ๋ค์ ๊ตฌํํ๋ค.
โ Shop
- ์์ ์ ๊ตฌํํ๊ณ ์ํ(์๋ช , ์ฝ์ธ)์ ๊ตฌํํ๋ class์ด๋ค.
- ๋ชจ๋ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ constructor๊ฐ ์๊ณ ๊ทธ๊ฒ๋ค์ ์ด๋ฏธ์ง๋ฅผ ํ๋ฉด ์์ ์ถ๋ ฅํ๋ draw method๊ฐ ์๋ค.
- ๋ง์ฐ์ค ํด๋ฆญ์ ํตํด ํ์๋ฅผ ํด๋ฆญํด์ ํ์๋ฅผ ์ ํํ๊ณ , ๊ฒ์ ๋ด์ map์ ๋ค์ ๋ง์ฐ์ค ํด๋ฆญ์ ํตํด ํ์๋ฅผ ์ค์นํ๊ฒ ํด์ฃผ๋ click method๊ฐ ์๋ค.
โ Mob
- ๋ชฌ์คํฐ๋ฅผ ๊ตฌํํ๋ class์ด๋ค.
- ๋ชฌ์คํฐ๋ฅผ ์์ฑํ๋ constructor๊ฐ ์๊ณ ํ๋ฉด์ ์ด๋ฏธ์ง๋ฅผ ์ถ๋ ฅํ๋ draw method๊ฐ ์๋ค.
- ๋ชฌ์คํฐ๋ฅผ ์์ฑํ๋ spawnMob method, ๋ชฌ์คํฐ์ ์ํ๋ฅผ ๊ด๋ฆฌํ๋ deleteMob, levelUp, loseMobHealth, checkDeath, isDead method๋ค์ ๊ตฌํํ๋ค.
- ๋ชฌ์คํฐ์ ๋ฌผ๋ฆฌ์ ์์ง์์ ์ ์ดํ๋ method๋ก๋ setDirection๊ณผ physic์ด ์๋ค. ๋จผ์ , ๋งต์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ ๋ชฌ์คํฐ๊ฐ ์์ง์ผ ์ ์๋ ๊ธธ๊ณผ ์๋ ๊ธธ์ ๊ตฌ๋ถํ๊ณ dfs์ ๋น์ทํ ๋ฐฉ๋ฒ์ผ๋ก ์ธ์ ํ ํ์ผ๋ก ๋ชฌ์คํฐ๊ฐ ์์ง์ด๋๋ก ํ๋ค. ๋ฐฉ๋ฌธํ ๊ธธ์ ๋ฐ๋ก ์ฒ๋ฆฌ๋ฅผ ํด์ฃผ์ด์ ๋ค์ ๋ชป ๋์๊ฐ๋๋ก ๊ตฌํํ๋ค.
โ IDnum
- ํ์๋ ๋ชฌ์คํฐ ๊ฐ์ ๊ฐ์ฒด๋ค์ ํน์ง์ ์ ์ฅํ class์ด๋ค. ๋ฐ๋ก ํจ์๋ฅผ ๊ตฌํํ์ง ์๊ณ ๊ฐ๋ง ์ ์ฅ๋์ด ์๋ค.
- ๊ฒ์์ ํ์๋ ๋ชจ๋ ๊ฐ์ฒด๋ค์ด ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ Game class์ ์๋ ์ด๋ฏธ์ง๋ฐฐ์ด์ ์ฝ๊ฒ ํ์ฉํ๊ธฐ ์ํด ๋ฐ๋ก ๊ตฌํํ๋ค.
- ๊ฐ์ฒด๋ค์ด ๊ฐ์ง๊ณ ์๋ ํน์ง์ด ๋ค ๋ค๋ฅด๊ธฐ ๋๋ฌธ์, ์ ์ฅ๋ ๊ฐ๋ค์ ID๋ก ํ์ฉํด ๊ฐ๊ฐ์ ํน์ง์ ๊ด๋ฆฌํ๊ธฐ ์ฉ์ดํ๊ฒ ํ๋ค.
โ Keyhandle
- ์์ ๊ณผ ํ์ ์ค์น๋ฅผ ์ํ ๋ง์ฐ์ค์ ์์ง์์ ์ฒ๋ฆฌํ๋ class์ด๋ค.
- MouseMotionListener์ MouseListener ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ๋ค.
โ Save
- ๋งต ํ์ผ์ ์ฝ๋ class์ด๋ค.
- ํ ์คํธ ํ์ผ์ ์ฝ์ด์ Map class ๊ฐ์ฒด์ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ค.
โ ๋งต ํ์ผ
- ๋งต์ ํ์์ ์ ์ฅํ ํ ์คํธ ํ์ผ์ด๋ค.
- ์ฒซ ์ค์๋ ๊ทธ ๋งต์์ ์ ๊ฑฐํด์ผ ํ ๋ชฌ์คํฐ์ ์๊ฐ ์๋ค.
- ๋ค์์ผ๋ก, 1๊ณผ 0์ ํตํด ๋ชฌ์คํฐ๊ฐ ์ง๋๊ฐ ๊ธธ๊ณผ ์๋ ๊ธธ์ ๊ตฌ๋ถํ๋๋ก ์์ฑ๋์ด์๋ค.
- ๋ง์ง๋ง์ผ๋ก๋ ๋งต์ ํ์๋ฅผ ์ค์นํ ๋ ํ์ํ ์ ๋ณด๋ค์ ์ ์ฅํ ์ซ์๋ค๋ก ๊ตฌ์ฑ๋์ด ์๋ค. ์ด๊ธฐ ์ค์ ์ -1์ผ๋ก ์๋ฌด๊ฒ๋ ์๋ ์ํ์ด๋ฏ๋ก -1๋ก ์์ฑ๋์ด ์๋ค. (IDnum class์ ์๋ charAir ๊ฐ)
โ ํ์ ์ข ๋ฅ ๋ฐ ์ ๊ทธ๋ ์ด๋ ๊ธฐ๋ฅ โ ํ์ฌ๋ ๋ช ๋ฅ์ด, ์จ์ ์ด ํ์๋ง ์์ง๋ง ๋ค๋ฅธ ์ข ๋ฅ์ ํ์๋ ๋ ๋ง๋ค์ด์ ๊ฒ์์ ๋ค์์ฑ์ ๋์ด๊ณ ์ ๊ทธ๋ ์ด๋ ๊ธฐ๋ฅ๋ ์ถ๊ฐํ๋ฉด ๊ฒ์์ ์ฌ๋ฏธ๋ฅผ ๋์ด๋๋ฐ ์ข์ ๊ฒ ๊ฐ๋ค.
โ ๋ชฌ์คํฐ ์ข ๋ฅ ๋ฐ ์ฒด๋ ฅ ์ฆ๊ฐ โ ํ์ฌ๋ ๋์ค๋ ๋ชฌ์คํฐ์ ์ข ๋ฅ๊ฐ 1๊ฐ์ด์ง๋ง ๋ชฌ์คํฐ์ ์ข ๋ฅ๋ฅผ ์ฆ๊ฐ์์ผ ๊ฐ ๋ชฌ์คํฐ๋ง๋ค์ ํน์ง์ ๋ฐ๋ผ ํ์ํ ํ์๋ฅผ ๋ง๋ค๋ฉด ๋์ฑ ๊ฒ์์ ์ฌ๋ฏธ๊ฐ ๋์์ง ๊ฒ ๊ฐ๋ค. ๋ํ ์ฒด๋ ฅ ์ฆ๊ฐ ๊ธฐ๋ฅ๋ ๋ฃ๋๋ค๋ฉด ๊ฒ์์ ๋์ด๋๋ ๋์ฑ ์ฌ๋ผ๊ฐ ์ ์์ ๊ฒ ๊ฐ๋ค.
โ ๋ ๋ฒจ ๋ณ ๋ฐฐ๊ฒฝ์์ ์ถ๊ฐ โ ๊ฐ ๋ ๋ฒจ ๋ณ๋ก ๋ฐฐ๊ฒฝ์์ ์ ์ถ๊ฐํ๋ค๋ฉด ์ฌ์ฌํ์ง ์๊ฒ ๊ฒ์์ ํ ์ ์์ ๊ฒ ๊ฐ๋ค.
โ Map ๋์์ธ ํฅ์ โ Map๋์์ธ์ ํฅ์์์ผ Map์ ๊ฒ์์ด๋ฆ์ ์ถ๊ฐํ๊ณ ์ฑ๊ท ๊ด๋ํ๊ต ๋งํฌ๋ฅผ ์ถ๊ฐํ๋ค๋ฉด ๋์ฑ ๋ ์ฐฝ์ฑ ์๋ ํ์ ๋ํ์ค ๊ฒ์์ด ๋ ๊ฒ ๊ฐ๋ค.




