- 1. Introduction
- 2. Basic Tetris Rules
- 3. How to Play
- 4. Overall Code Design
- 5. Single Play
- 6. Multi Play
- 7. Debugging Issues
- 8. Program Manual
- 9. Demo Video
- 10. Conclusion
LOL(League of Legends)์ด๋ผ๋ ๊ฒ์๋ ์ด์ ์ด๋๋ง ์ถ์ํ์ง 15์ฃผ๋ ์ด ๋์ด ๊ฐ๋๋ค. ์ด๋ฆด ์ ์คํํฌ๋ํํธ ๋ฐ๋ฆฌ์ ์ ์ฆ๋งต์ ํ๋ ์์ ์ ๋ ์ฌ๋ฆฌ๋ฉด ์ค๋ด ํก์ฐ์ด ๊ฐ๋ฅํ๋ ๋ด๋ฐฐ ์ฐ๋ ํผ์๋ฐฉ ๋์๊ฐ ๋ ์ค๋ฅด๊ณค ํฉ๋๋ค. Tetris๋ 5060 ์ด๋ฅด์ ๋ค์๊ฒ ํฅ์๋ฅผ ๋ถ๋ฌ์ผ์ผํค๋ ๊ฒ์์ ๋๋ค. ์ด๋ฌํ ๊ณ ์ ๊ทผ๋ณธ ๋น๋์ค ๊ฒ์ Tetris๋ฅผ java๋ก ์ฌ๊ตฌํํด๋ณด์์ต๋๋ค.
์์ ๊ฐ์ด Tetris๋ block๋ค์ ์ข, ์ฐ, ์๋๋ก ์์ง์ด๊ณ ์์ง์ด๋ ๋์ ํ์ ์ํฌ ์ ์์ต๋๋ค.
Block๋ค์ ์ ์์์ ์์ฑ๋ ์ค์ ๋ง๋ค๊ฒ ๋๋ฉด ์ค์ด ์ฌ๋ผ์ง๋๋ค. ํ์ง๋ง, ์๋จ๊น์ง block๋ค์ด ์์ด๊ฒ ๋๋ฉด ๊ฒ์์ด ์ข ๋ฃ๋ฉ๋๋ค.
๊ฒ์์ ์คํํ๊ธฐ ์ํด์, ์๋ file์ ์คํ์์ผ์ฃผ์ธ์:
./src/main/TetrisGame.java
Tetris-BlockBusters๋ ์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ด 3๊ฐ์ package๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค. Package๋ค์ ๊ธฐ๋ฅ์ ๋ํด์ ๊ฐ๋ตํ๊ฒ ์ค๋ช ํ์๋ฉด:
- main: TetrisGame์ ๋ฉ์ธ ํจ์๋ฅผ ํฌํจํ๊ณ ์๋ package์ ๋๋ค. main ํจ์์์ ์ฝ๋๋ฅผ ์คํํด ๊ฒ์์ ์์ํ ์ ์์ต๋๋ค.
- model: Tetris ๊ฒ์์ ํ์์ ์ธ ๋ณด๋์ ๋ธ๋ก, ์ฌ์ฉ์(์ ์, ๋ฑ์), ๊ทธ๋ฆฌ๊ณ ๋ฐฐ๊ฒฝ ์์ ์ด๋ ๊ธ์จ์ฒด์ ๊ด๋ จ๋ class๋ค์ด ํฌํจ๋์ด ์์ต๋๋ค.
- view: Start, end ๋๋ ์ค์ ๋ก game์ ์งํํ ๋ ํ์ํ graphic์ ๊ด๋ จ๋ class๋ค์ด ํฌํจ๋์ด ์์ต๋๋ค.
Single mode๋ก ๊ฒ์์ ์งํํ๊ฒ ๋๋ฉด UserID์ ๋์ด๋๋ฅผ ์ค์ ํ๊ฒ ๋ฉ๋๋ค. ๋์ด๋๋ ์ ๋ฐ์ ์ผ๋ก block์ด ๋ด๋ ค์ค๋ ์๋์ ๊ด๋ จ๋์ด ์๊ณ ์ด๋ฅผ delay๋ผ๊ณ ํ๊ฒ ์ต๋๋ค. ๋์ด๋์ ๋ํ ์์ธํ ์ค๋ช ์ ์๋์ ๊ฐ์ต๋๋ค:
- Easy: ๋ณด์กฐ ๊ฒฉ์ข ์ถ๊ฐ / 500ms
- Normal: 500ms
- Hard: 350ms
์ถ๊ฐ์ ์ผ๋ก ๋์์ ์์ ๋ ์ค์ ๊ฐฏ์์ ๋ฐ๋ผ์ ์ ์๊ฐ ๋ค๋ฅด๊ฒ ๋ถ์ฌ๋ฉ๋๋ค. (๊ฐ๋ฅํ๋ค๋ฉด ๋์์ ๋ง์ ์ค์ ์์ ๋๊ฒ ์ ์๋ฅผ ๋น ๋ฅด๊ฒ ์ฌ๋ฆฌ๋ ๋ฐฉ๋ฒ์ ๋๋ค. :) )
- 1์ค: +100์
- 2์ค: +300์
- 3์ค: +500์
- 4์ค: +800์
Single mode ๊ฒ์ ์งํ ์์ ์์์ ๋๋ค.
๊ฒ์์ด ์ข ๋ฃ๋๋ฉด ํด๋น ๋์ด๋์์ ๊ฐ์ฅ ๋์ ์ ์๋ฅผ ๋ฐ์ Top3 user์ ID์ ์ ์๊ฐ ์ถ๋ ฅ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ ํํ ์ ์๋ ์ต์ ์ด 3๊ฐ์ง๊ฐ ์ฃผ์ด์ง๋๋ค.
- Retry: ๊ฐ์ ๋์ด๋์ ๊ฐ์ User ID๋ก ๊ฒ์์ ์ฌ์คํ
- New User: - ์๋ก์ด User ID์ ๋์ด๋๋ฅผ ์๋กญ๊ฒ ์ค์ ํ์ฌ ๊ฒ์์ ์คํ
- Exit: - ํ๋ก๊ทธ๋จ ์ข ๋ฃ
Multi node๋ก ๊ฒ์์ ์งํํ๊ฒ ๋๋ฉด ๋ ๋ช ์ UserID๋ฅผ ๊ฐ๊ฐ ์ ๋ ฅํด์ผํฉ๋๋ค. ์ด๋, ๊ฒ์์ ๋์ด๋๋ normal๋ก ๊ณ ์ ๋ฉ๋๋ค.
Multi mode ๊ฒ์ ์งํ ์์ ์์์ ๋๋ค.
๊ฒ์์ด ์ข ๋ฃ๋๋ฉด "(๋ ์ ์ ์ค ๋์ ์ ์๋ฅผ ์ป์ User ID) wins!" ๋ผ๋ ๋ฌธ๊ตฌ๊ฐ ์ถ๋ ฅ๋ฉ๋๋ค. ๋ง์ฝ ๋ User์ ์ ์๊ฐ ๊ฐ๋ค๋ฉด, Draw๋ผ๋ ๋ฌธ๊ตฌ๋ก ์ถ๋ ฅ๋ฉ๋๋ค. ๋ํ, single mode์ ๋น์ทํ๊ฒ ์ธ๊ฐ์ง ์ต์ ์ด ์ฃผ์ด์ง๋๋ค.
- Retry: - ๊ฐ์ User ID๋ค๋ผ๋ฆฌ ๋ค์ ๊ฒ์์ ์งํ
- New User: - ์๋ก์ด User ID๋ก multi mode ๊ฒ์ ์งํ
- Exit: - ํ๋ก๊ทธ๋จ ์ข ๋ฃ
Tetris-BlockBusters ๊ฐ๋ฐ ๊ณผ์ ์์ ๋ฐ์ํ debugging issues๋ค์ ๋ํ ์ค๋ช ์ ๋๋ค:
- Block spin: Block์ ํ์ ์ํค๋ ๊ฒฝ์ฐ์ block๋ค์ ํํ๊ฐ ๋ชจ๋ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ๊ฐ ํํ์ ์ค์ฌ์ ์ง์ ํ๊ณ ํ์ ์ํค๋๊ฒ์ ์ด๋ ค์์ด ์์ด ๋ชจ๋ block๋ค์ 90๋์ฉ ํ์ ํ ์ํ๋ค์ ๋ชจ๋ ์ ์ฅํ๊ณ ์ฌ์ฉํ๋ ๋ฐฉ์์ผ๋ก ํด๊ฒฐํ์ต๋๋ค.
- Parallel Key Input: Multi mode๋ฅผ ์งํํ๋ ๊ฒฝ์ฐ์ ๋ user๊ฐ ๋์์ ํค๋ฅผ ์ ๋ ฅํ ๊ฒฝ์ฐ, ๋์์ ์ด๋ค์ง์ง ์์ input์ด ๋ฌด์๋๋ ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํ์ผ๋, ๊ฐ ํค๊ฐ ๋๋ ค ์๋์ง๋ฅผ ์ถ์ ํ๋ ๋ณ์ ๋ฐฐ์ด ์ฐธ์กฐ๋ฅผ ํตํด ๋์ ์ ๋ ฅ์ ์ฒ๋ฆฌํ๋ฉด์ ํด๊ฒฐํ์ต๋๋ค.
Manual ํ์ผ์ ๋ฐ๋ก ๋ง๋ค์์ต๋๋ค. ๋ค์ ํ์ผ์ ์ฐธ๊ณ ํด์ฃผ์ธ์! โ Manual.pdf
Single mode์์ ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋ฅ๋ค์ ์์ฐํ ์์์๋๋ค. ๋ค์ ํ์ผ์ ์ฐธ๊ณ ํด์ฃผ์ธ์! โ
Tetris๋ผ๋ ๊ฒ์์ด ๊ฐ๋ฐํ๋ ๊ณผ์ ์์ ๊ฐ๋จํ ๊ฒ ๊ฐ์์ง๋ง, ์๊ฐ๋ณด๋ค ์ด๋ ค์ด ๋ถ๋ถ๋ค์ด ๋ง์ด ์กด์ฌํ๊ณ , ๊ฐ๋ฐ์ ์งํํ๋ค๋ณด๋ ์ ์ ์ ๊ฐ์ง๊ฒ๋๊ณ ์ ์ ์ ๊ฐ์ง๊ฒ๋๋ ๋ฐฐ๊ฒฝ์์ , ์ด๋ฏธ์ง, ํฐํธ๊น์ง customizeํ๊ฒ ๋์์ต๋๋ค. ๋ ํฐ scale์ ๊ฒ์๋ค์ ๊ฐ๋ฐํ๋๊ฒ์๋ ์์ฌ์ด ์๊ธฐ๊ฒ ๋์์ต๋๋ค. ๋๋ฌด ๋ฐ์ ์๋๋ฅผ ์ด์๊ฐ๊ณ ์์ง๋ง, ์ ๊น์ ์ฌ์ ๋ฅผ ๊ฐ์ ธ Tetris-BlockBusters๋ฅผ ํตํด ์ ๊น์ด๋๋ง ์ ์ถ์ต์ ์ ์ด๋ค์ด๋ณด๋๊ฑด ์ด๋ ์ ๊ฐ์? (์ด์์ด๋ฉด ๋ ธ๋๋ ํค๊ณ ํ๋ ์ดํด๋ณด์ธ์! :) )