๋ณธ ๊ฒ์์ ์ฑ๊ท ๊ด๋ํ๊ต ์คํ์์ค์ํํธ์จ์ด ์ค์ต ํ๋ก์ ํธ์ ์ผํ์ผ๋ก python๊ณผ pygame ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๊ตฌํํ ๊ฐ๋จํ snake ๊ฒ์์ ๋๋ค. rajatdiptabiswas์ snake-pygame์ ๊ธฐ๋ฐ์ผ๋ก ๊ธฐ๋ฅ์ ์ถ๊ฐํ์ฌ ์ ๊ทธ๋ ์ด๋ ํ์ต๋๋ค. ํด๋นํ๋ ์๋ณธ ์์ค๋ rajatdiptabiswas/snake-pygame์์ ํ์ธํ์ค ์ ์์ต๋๋ค.
๋ณธ ํ๋ก์ ํธ๋ snake๐๊ฐ ๊ฐ๋ฅํ ๋ง์ ์ฌ๊ณผ๐๋ฅผ ๋จน์ด ์ต๋ํ ๋์ ์ ์๋ฅผ ์ป๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค. ํ๋ ์ด์ด๋ ์ด ์ธ ๊ฐ์ ๋ชฉ์จโค๏ธ์ผ๋ก ์์ํ๋ฉฐ, ๊ฒ์ ์ค๋ฒ ์กฐ๊ฑด ์ถฉ์กฑ ์๋ง๋ค ๋ชฉ์จ์ด ํ๋์ฉ ๋ณ์ ๋ชฉ์จ์ด ๋ชจ๋ ์์ง๋๋ฉด ๊ฒ์์ด ์ข ๋ฃ๋ฉ๋๋ค.
- snake์ ๋จธ๋ฆฌ๊ฐ ๋จน์ด์ ๋ฟ์ ๋๋ง๋ค ์ ์๊ฐ 1์ฉ ์ค๋ฅด๊ณ ๋ชธํต์ด ๊ธธ์ด์ง๋๋ค.
- ๊ฒ์ ์ค๋ฒ ์กฐ๊ฑด ์ถฉ์กฑ ์ ํ๋ก๊ทธ๋จ์ด ์ข
๋ฃ๋ฉ๋๋ค.
- snake์ ๋จธ๋ฆฌ๊ฐ ๋ฒฝ์ ๋ฟ๋ ๊ฒฝ์ฐ
- snake์ ๋จธ๋ฆฌ๊ฐ ์์ ์ ๋ชธํต์ ๋ฟ๋ ๊ฒฝ์ฐ
-
์์ ์คํฌ๋ฆฐ ๊ตฌํ
- ํ๋ ์ด์ด๋ ์์ ์ EASY, MEDIUM, HARD, IMPOSSIBLE๋ก ์ด๋ฃจ์ด์ง ๋ค ๊ฐ์ง์ ๋์ด๋ ์ค ํ ๊ฐ์ง๋ฅผ ์ ํํ ์ ์์ต๋๋ค.
- ํ๋ ์ด์ด๋ Enter ํค๋ฅผ ์ ๋ ฅํ์ฌ ๊ฒ์์ ์์ํฉ๋๋ค.
-
๊ฒ์ ์ถ๊ฐ ๊ธฐ๋ฅ
- ์ด๋ฏธ์ง ์ถ๊ฐ
- snake, food, lives์ ์ด๋ฏธ์ง๋ฅผ ๊ธฐ์กด pygame์์ ์ ๊ณตํ๋ ๊ธฐ๋ณธ ์ ์์ ์ด๋ฏธ์ง๋ก ๋์ฒดํ์ต๋๋ค.
- ๋ชฉ์จ ์์คํ
- ํ๋ ์ด์ด๋ 3๊ฐ์ ๋ชฉ์จ์ ๊ฐ์ง๋ฉฐ, ๊ฒ์์ค๋ฒ ์กฐ๊ฑด ๋ฌ์ฑ ์ ๋ชฉ์จ์ ํ๋์ฉ ์๊ฒ ๋ฉ๋๋ค.
- snake, food ํฌ๊ธฐ ์กฐ์
- ๊ธฐ์กด snake์ food์ ๋ ๋ฐฐ๋ก ์ฌ์ด์ฆ๋ฅผ ์กฐ์ ํ์ฌ ๊ฐ์์ฑ์ ๋์์ต๋๋ค.
- ์ด๋ฏธ์ง ์ถ๊ฐ
-
์ฌ์์ ๊ธฐ๋ฅ ์ถ๊ฐ
- ๋ชฉ์จ์ ๋ชจ๋ ์์ ๊ฒฝ์ฐ, ์ฌ์์์ ๋ฌป๋ ์คํฌ๋ฆฐ์ผ๋ก ์ด๋ํ์ฌ Enter ํค ์ ๋ ฅ ์ ๊ฒ์ ์ฌ์์์ด ๊ฐ๋ฅํฉ๋๋ค.
[1] https://github.com/pygame/pygame "pygame"
[2] https://www.dafont.com/retro-gaming.font "Retro Gaming Font"
[3] https://github.com/rajatdiptabiswas/snake-pygame "snake-pygame"
OS | ์ง์์ฌ๋ถ |
---|---|
Windows | โญ๏ธ |
Linux | โญ๏ธ |
Mac | โญ๏ธ |
- python 3.12 ๋ฒ์ ์ ์ค์นํฉ๋๋ค. https://www.python.org/downloads/
- windows powershell์์ ๋ค์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ์ฌ pygame์ ์ค์นํฉ๋๋ค.
pip3 install pygame
- ์ฌ๋ถํ
์ดํ
python3 main.py
๋ฅผ ์คํํ๋ฉด ๊ฒ์์ด ์์๋ฉ๋๋ค.
ํฐ๋ฏธ๋์ ์ด๊ณ ๋ค์ ๊ณผ์ ์ ์ฐจ๋ก๋ก ์ํํฉ๋๋ค.
- python 3.12 ์ค์น
sudo apt-get update
sudo apt-get install python3
- pip ์ค์น
sudo apt-get install python3-pip
- pygame ์ค์น
sudo apt-get install python3-pip
- ํ๋ก์ ํธ ์ต์์ ๋๋ ํ ๋ฆฌ์์
python3 main.py
๋ฅผ ์คํํ๋ฉด ๊ฒ์์ด ์์๋ฉ๋๋ค.
ํฐ๋ฏธ๋์ ์ด๊ณ ๋ค์ ๊ณผ์ ์ ์ฐจ๋ก๋ก ์ํํฉ๋๋ค.
- pygame ์ค์น
pip3 install pygame
- ํ๋ก์ ํธ ์ต์์ ๋๋ ํ ๋ฆฌ์์
python3 main.py
๋ฅผ ์คํํ๋ฉด ๊ฒ์์ด ์์๋ฉ๋๋ค.
- Description: ๊ฒ์ ์ค๋ฒ ์ ์ฌ์์ ํ๋ฉด์ ํ์ํฉ๋๋ค.
- ์ฌ์ฉ์๊ฐ Enter ํค๋ฅผ ๋๋ฅด๋ฉด ๊ฒ์์ ์ฌ์์ํ๊ณ , ESC ํค๋ฅผ ๋๋ฅด๋ฉด ๊ฒ์์ ์ข ๋ฃํฉ๋๋ค.
- Description: ๊ฒ์ ์ค๋ฒ ์กฐ๊ฑด์ ํ์ธํ๊ณ , ๋ชฉ์จ์ด ๋จ์ ์๋์ง ์ฌ๋ถ์ ๋ฐ๋ผ ๊ฒ์์ ์ฌ์์ํ๊ฑฐ๋ ์ข
๋ฃํฉ๋๋ค.
- ๋ชฉ์จ์ด ๋จ์ ์์ ๊ฒฝ์ฐ ๋ฑ์ ์ค์์ผ๋ก ์ด๋์ํค๊ณ , ๋ชฉ์จ์ด ๋ชจ๋ ์์ง๋๋ฉด ์ฌ์์ ๋ฒํผ์ ํ์ํฉ๋๋ค.
- Description: ๋ชฉ์จ์ด ์์ง๋ ํ ๋ฑ์ ๋ชธ์ ๊น๋ฐ์ด๊ฒ ํ๋ ํจ๊ณผ๋ฅผ ๊ตฌํํฉ๋๋ค.
- 1์ด ๋์ ๋ฑ์ ๋ชธ์ ๊น๋ฐ์ด๊ฒ ํฉ๋๋ค.
- Description: ๊ฒ์ ์์ ํ๋ฉด์ ํ์ํฉ๋๋ค.
- ์ฌ์ฉ์๊ฐ ๋์ด๋๋ฅผ ์ ํํ ์ ์๋๋ก ํ๊ณ , Enter ํค๋ฅผ ๋๋ฅด๋ฉด ๊ฒ์์ ์์ํฉ๋๋ค.
- Description: ํ์ฌ ์ ์๋ฅผ ํ๋ฉด์ ํ์ํฉ๋๋ค. ์ ์์ ๋จ์ ๋ชฉ์จ(ํํธ)์ ํ๋ฉด์ ํ์ํฉ๋๋ค.
- Description: ๊ฒ์์ ๋ฉ์ธ ๋ก์ง์ ํฌํจํ๋ ํจ์์
๋๋ค.
- ๊ฒ์ ๋ณ์ ์ด๊ธฐํ, ๋ฑ๊ณผ ์์์ ์์น ์ค์ , ๊ฒ์ ๋ฃจํ, ๋ฑ์ ์์ง์, ์์ ์์ฑ, ๊ฒ์ ์ค๋ฒ ์กฐ๊ฑด ๋ฑ์ ํฌํจํฉ๋๋ค.
-
apple_image, heart_image, snake_head_image, snake_body_image: ๊ฒ์์ ์ฌ์ฉ๋๋ ์ด๋ฏธ์ง๋ค์ ๋ก๋ํ๊ณ ํฌ๊ธฐ๋ฅผ ์กฐ์ ํฉ๋๋ค.
-
font_path: ํฐํธ ํ์ผ์ ๊ฒฝ๋ก๋ฅผ ์ค์ ํฉ๋๋ค.
-
difficulty: ๊ฒ์์ ๋์ด๋๋ฅผ ์ค์ ํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ 25์ ๋๋ค.
-
frame_size_x, frame_size_y: ๊ฒ์ ์ฐฝ์ ํฌ๊ธฐ๋ฅผ ์ค์ ํฉ๋๋ค.
-
black, white, yellow, orange, red, green, blue: ๊ฒ์์ ์ฌ์ฉ๋ ์์๋ค์ ์ ์ํฉ๋๋ค.
-
score, lives: ์ ์์ ๋ชฉ์จ์ ์ด๊ธฐ๊ฐ์ ์ค์ ํฉ๋๋ค. ๊ฒ์ ์ค๋ฒ ์ ๋ชฉ์จ์ด ์ค์ด๋ค๊ณ , ๋ชฉ์จ์ด ๋ชจ๋ ์์ง๋๋ฉด ๊ฒ์์ด ์ข ๋ฃ๋ฉ๋๋ค.
Pygame์ ์ด๊ธฐํํ๊ณ ๊ฒ์ ์ฐฝ์ ์ค์ ํฉ๋๋ค. ์ด๋ฏธ์ง์ ์์ ๋ฑ์ ๋ก๋ํ๊ณ ์ด๊ธฐํํฉ๋๋ค.
start_screen() ํจ์๊ฐ ํธ์ถ๋์ด ์ฌ์ฉ์๊ฐ ๋์ด๋๋ฅผ ์ ํํ๊ณ ๊ฒ์์ ์์ํ ์ ์์ต๋๋ค.
main() ํจ์์์ ๊ฒ์ ๋ฃจํ๊ฐ ์์๋ฉ๋๋ค. ๋ฑ์ ์์น์ ์์์ ์์น๋ฅผ ์ค์ ํ๊ณ , ๋ฑ์ ์์ง์์ ์ฒ๋ฆฌํฉ๋๋ค. ๊ฒ์ ์ค๋ฒ ์กฐ๊ฑด์ ํ์ธํ๊ณ , ์ ์์ ๋ชฉ์จ์ ํ๋ฉด์ ํ์ํฉ๋๋ค.
๋ฑ์ด ๋ฒฝ์ ๋ถ๋ชํ๊ฑฐ๋ ์์ ์ ๋ชธ๊ณผ ์ถฉ๋ํ๋ฉด ๊ฒ์ ์ค๋ฒ๊ฐ ๋ฉ๋๋ค. ๋ชฉ์จ์ด ๋จ์ ์์ ๊ฒฝ์ฐ ๊ฒ์์ ์ฌ์์ํ๊ณ , ๋ชฉ์จ์ด ๋ชจ๋ ์์ง๋๋ฉด ์ฌ์์ ๋ฒํผ์ ํ์ํฉ๋๋ค.
- ๋ชธ ๊น๋ฐ์ธ ํ ์ด์ ์์น๊ฐ ์ฌ๋ผ์ง์ง ์๋ ์ค๋ฅ ์์
- ์ ์ ์ด๋ฆ ์ ๋ ฅ๋ฐ๊ณ , ๋ช ์์ ์ ๋น ๊ธฐ๋ฅ ์ถ๊ฐ
- ์ฌ๊ณผ ๊ฐ์ ๋๋ฆฌ๊ธฐ
- ์ถ๊ฐ ์ฅ์ ๋ฌผ ๋ง๋ค๊ธฐ