diff --git "a/\353\261\200 \352\262\214\354\236\204.md" "b/\353\261\200 \352\262\214\354\236\204.md" index 4705dac..9d31f2d 100644 --- "a/\353\261\200 \352\262\214\354\236\204.md" +++ "b/\353\261\200 \352\262\214\354\236\204.md" @@ -1,24 +1,24 @@ ###### 뱀 게임 -##### 1. 플레이 장면 +##### 1️⃣ 플레이 장면 ![snakegame](https://github.com/user-attachments/assets/48bf7e39-2f7c-4298-b6bd-4cd04d267937) -##### 2. 뱀 게임 설명 +##### 2️⃣ 뱀 게임 설명 -1. 주요 요소 +##### 1. 주요 요소 ###### 1) 게임 화면: 게임은 직사각형 형태의 보드 위에서 진행된다. 각 칸은 뱀과 먹이가 놓일 수 있는 영역으로, 크기가 일정하다. - 2) 뱀의 머리와 몸: 뱀은 머리와 여러 개의 몸통 조각으로 이루어져 있다. 뱀의 머리가 먹이를 먹을 때마다 새로운 몸이 추가된다. - 3) 먹이의 위치: 먹이는 게임 화면 내의 랜덤한 위치에 생성된다. 먹이를 먹으면 뱀의 길이가 늘어난다. -2. 게임의 규칙 -뱀은 한 번에 한 칸씩 이동하며, 이동 방향은 사용자 입력에 따라 바뀐다. -뱀의 머리가 벽이나 자기 몸과 부딪히면 게임이 종료된다. -뱀이 먹이를 먹으면 길이가 증가된다. -3. 게임의 알고리즘 - 1) 입력 처리: 사용자 입력(키보드)을 받아 뱀의 방향을 제어한다. - 2) 게임 상태 업데이트: 뱀의 위치를 업데이트하고, 먹이가 먹혔는지, 충돌이 발생했는지 등을 체크하여 게임 상태를 갱신한다. - -##### 3. 조작법 + ###### 2) 뱀의 머리와 몸: 뱀은 머리와 여러 개의 몸통 조각으로 이루어져 있다. 뱀의 머리가 먹이를 먹을 때마다 새로운 몸이 추가된다. + ###### 3) 먹이의 위치: 먹이는 게임 화면 내의 랜덤한 위치에 생성된다. 먹이를 먹으면 뱀의 길이가 늘어난다. +##### 2. 게임의 규칙 +###### 뱀은 한 번에 한 칸씩 이동하며, 이동 방향은 사용자 입력에 따라 바뀐다. +###### 뱀의 머리가 벽이나 자기 몸과 부딪히면 게임이 종료된다. +###### 뱀이 먹이를 먹으면 길이가 증가된다. +##### 3. 게임의 알고리즘 + ###### 1) 입력 처리: 사용자 입력(키보드)을 받아 뱀의 방향을 제어한다. + ###### 2) 게임 상태 업데이트: 뱀의 위치를 업데이트하고, 먹이가 먹혔는지, 충돌이 발생했는지 등을 체크하여 게임 상태를 갱신한다. + +##### 3️⃣ 조작법 |키보드 입력|동작| |:---:|---| @@ -26,7 +26,7 @@ |↓|아래쪽으로 이동| |←|왼쪽으로 이동| |→|오른쪽으로 이동| -##### 3. 코드 상세 분석 +##### 4️⃣ 코드 상세 분석 ##### * 키 입력 코드 ```python @@ -40,7 +40,7 @@ if keys[pygame.K_UP] and snake_dir != (0, block_size): if keys[pygame.K_RIGHT] and snake_dir != (-block_size, 0): snake_dir = (block_size, 0) ``` -### ### pygame.key.get_pressed()는 키가 눌린 상태를 지속적으로 확인해, 키를 누르고 있는 동안 반복적인 동작을 수행한다. 키 입력이 한 번만 처리 되길 원한하면 pygame.KEYDOWN 이벤트를 사용하는 것이 적합하지만 뱀 게임의 특성상 키가 눌린 상태를 지속하는 경우가 많기 때문에pygame.key.get_pressed()를 쓴다. +###### pygame.key.get_pressed()는 키가 눌린 상태를 지속적으로 확인해, 키를 누르고 있는 동안 반복적인 동작을 수행한다. 키 입력이 한 번만 처리 되길 원한하면 pygame.KEYDOWN 이벤트를 사용하는 것이 적합하지만 뱀 게임의 특성상 키가 눌린 상태를 지속하는 경우가 많기 때문에pygame.key.get_pressed()를 쓴다. ###### 첫 번째 조건문을 대표로 보면 ' up 키를 눌렀을 때 and 뱀이 현재 아래로 이동 중이 아닐 때' 위로 이동한다. ##### * 뱀 이동