Skip to content

Commit

Permalink
노이즈 문서 마무리 (#10)
Browse files Browse the repository at this point in the history
  • Loading branch information
MineEric64 committed Sep 5, 2023
1 parent f12c225 commit 9709d2e
Show file tree
Hide file tree
Showing 5 changed files with 28 additions and 2 deletions.
Binary file modified docs/images/noise_4.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion docs/submission/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
|[설정](./settings.md)|메인 메뉴나 인게임에서 적용할 수 있는 설정 화면|
|[ESC 화면](./pause_menu.md)|인게임에서 ESC를 눌렀을 때 나오는 일시정지 화면|
|[동적 텍스트 애니메이션](./dynamic_text_animation.md)|NPC와 대화하는 기능을 구현하기 위한 텍스트 애니메이션|
|[노이즈](./noise.md)|체력이 부족하거나 시간을 되돌릴 때 이를 시각화|
|[노이즈](./noise.md)|시간을 되돌릴 때 이를 시각화하는 기능|
|[시간 관리](./time.md)|시간을 되돌리는 기능|
|[중력 & 점프](./gravity_and_jump.md)|점프를 구현하기 위해 중력을 구현|
|[스프라이트](./sprite.md)|스프라이트 애니메이션|
Expand Down
24 changes: 24 additions & 0 deletions docs/submission/noise.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,37 @@
# 노이즈
![1](../images/noise_1.png)

`NoiseEvent`: 노이즈 이미지를 생성하고 기존 이미지에 합성해주는 클래스

- `level`: 노이즈 강도로, 1.0 부터 3.0 까지 설정할 수 있음. 기본값은 1.0
- `width`: 노이즈 이미지의 너비로, 기본값은 화면 너비인 960
- `height`: 노이즈 이미지의 높이로, 기본값은 화면 높이인 540

![2](../images/noise_2.png)

1. 노이즈를 저장하기 위한 pygame 이미지 새로 생성
2. 배열의 길이가 `width` * `height` * 3인 배열 생성, 3을 곱하는 이유는 RGB 정보를 저장하기 위함. 즉 이미지 넓이를 저장하는 셈
3. 1차원 배열에서 3차원 배열로 배열 차원 재할당
4. 노이즈 이미지를 생성하기 위해 무작위 색상을 이미지에 적용
5. numpy 배열을 pygame.Surface로 변환
6. 노이즈가 저장된 이미지 반환

성능을 최적화하기 위해 `numpy` 패키지와 `pygame.Surface.convert()` 함수를 사용함.

![3](../images/noise_3.png)

1. 기존 배경 이미지 복사
2. 복사한 이미지에 SUBTRACT 모드로 노이즈 이미지 합성
3. 노이즈 이미지가 합성된 복사한 이미지 반환

## 인게임
![4](../images/noise_4.png)

1. 기존 배경 이미지로, 시간을 되감고 있지 않은 경우 기존 배경 이미지 그대로 렌더링
2. 시간을 되감고 있는 경우, `NoiseEvent.make_noise()` 함수를 이용하여 노이즈 이미지 생성
3. `NoiseEvent.blend()` 함수를 이용하여 노이즈 이미지와 기존 배경 이미지를 합성 후 배경 이미지에 새로 할당
4. 시간을 되감고 있는 경우 노이즈 이미지가 합성된 이미지로 배경 렌더링

## 참조
- [`noise.py`](../../components/events/noise.py)
- [`maps/__init__.py`](../../maps/__init__.py)
3 changes: 2 additions & 1 deletion docs/submission/time.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,8 @@
## 결과
![5](../images/time_5.gif)

R키를 눌러 시간을 되돌릴 수 있음
- R키를 눌러 시간을 되돌릴 수 있음
- 시간을 되돌리는 것을 시각화하기 위해 노이즈를 사용함.

## 참조
- [`time.py`](../../components/events/time.py)
Expand Down
1 change: 1 addition & 0 deletions screens/ingame.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
from components.events.text import TextEvent
from components.events.grace_period import GracePeriod
from components.events.time import TimeEvent
from components.events.noise import NoiseEvent

from components.sprites.sprite_collection import SpriteCollection
from components.sprites.sprite_handler import SpriteHandler
Expand Down

0 comments on commit 9709d2e

Please sign in to comment.