일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 나는 매트로폴리탄 미술관 경비원입니다.
- 부에노비스타 소셜클럽
- Ai
- 매트로폴리탄
- 인생의 해상도
- 에르난 디아스
- 숨결이 바람이 될 때
- 트렌드코리아2025
- 게임개발
- 운석피하기 게임
- 타이핑좀비
- gymnasium
- frozen lake
- 타이핑 몬스터
- pygame
- 나는 스물일곱 2등 항해사입니다.
- 타자연습게임
- 쿠바전통음악
- 단어가 품은 세계
- comfyui
- 아무도 없는 숲속에서
- Python
- Stable diffusion
- 황선엽
- Gym
- openAI
- 시집
- 고양이발 살인사건
- 운석 피하기 게임
- 어른의 행복은 조용하다
- Today
- Total
스푸79 기록 보관소
타자 연습 게임, 타이핑 몬스터(6) - 플레이어 사망 및 사운드 본문

너무 오랫만에 게임공작소에 글을 올립니다.
세상 일이 그렇듯 마무리할 때가 제일 귀찮고 힘들고 참 그렇습니다.ㅎ
좀비가 창궐한 세상에서 열심히 글자를 타이핑하면서 버티던 용감한 람보의 최후의 모습을
스프라이트로 만들었습니다.ㅜㅜ

지난 번 포스팅에서는 철조망 앞에서 손만 흔들 뿐 좀비가 철조망을 뚫지 못했습니다.
이제는 최후의 보루인 철조망까지 뚫고 람포를 향해 계속 걸어가도록 처리했습니다.
class Barrier(pygame.sprite.Sprite):
def __init__(self, main, fence, pos, crash):
super().__init__()
self.id = "barrier"
self.main = main
...(중략)
self.damaged = 0
self.sound_delay_time = 1000
self.last_sound_time = pygame.time.get_ticks()
self.crash = crash
def damage(self, power):
self.damaged += power
self.play_crash_sound()
if self.damaged >= len(self.images):
return False
else:
return True
펜스 클래스를 위와 같이 수정했습니다. 좀비가 공격을 하는 수치를 누적해서 damaged에 적용을 합니다.
damaged 값이 barrier의 총 이미지의 갯수보다 큰 경우는 좀비가 공격을 중지하도록 처리했습니다.
barrier의 총 이미지보다 큰 경우는 barrier가 공격에 의해 뚫린거라
좀비가 공격을 중지하고 원래대로 앞으로 전진을 하게 됩니다.
class Resources:
def __init__(self):
...(중략)...
self.machinegun = pygame.mixer.Sound(cfg.GAME_SOUND_DIR + "machinegun.wav")
self.male_scream = pygame.mixer.Sound(cfg.GAME_SOUND_DIR + "male_scream.wav")
self.female_scream = pygame.mixer.Sound(cfg.GAME_SOUND_DIR + "female_scream.wav")
self.crash = pygame.mixer.Sound(cfg.GAME_SOUND_DIR + "crash.wav")
Resource에는 게임에서 사용할 여러 효과음을 적용했습니다.
타이핑이 성공할 때 적용할 총소리와 좀비가 죽을 때 괴성, 그리고 철조망이 조금씩 부서지는 소리
이렇게 효과음을 게임 초기화 시점에 resource 클래스에서 로딩하도록 처리했습니다.
def check_hit(self, text):
...(중략)...
for e in self.enemy_text_sprites:
if e.text == text:
if e.rect.centerx >= cfg.SCREEN_WIDTH / 2:
self.player.attack("RIGHT")
self.resources.machinegun.play()
e.destroy()
else:
self.player.attack("LEFT")
self.resources.machinegun.play()
e.destroy()
break
총소리는 정확하게 타이핑한 경우에만 총을 쏘는 애니메이션과 총소리가 나도록 처리했습니다.
def set_status(self, status):
if status == "DIE":
self.monster_status = cfg.DIE
self.images = self.die_images
self.speed = pygame.math.Vector2(0, 0)
self.scream.play()
self.collider.clear()
좀비는 DIE 상태가 되는 경우에는 scream.play()로 비명을 지르도록 처리했습니다.
좀비는 남자 좀비와 여자 좀비 성별이 나눠져 있기 때문에 소리를 다르게 처리했습니다. (남녀차별 같은거 아닙니다.^^;)
random_pos = (x, 0)
random_length = get_word_length(time.time() - self.word_pick_time)
random_text = random.choice(self.word_dict[random_length])
#50퍼센트 확률로 남자좀비 또는 여자좀비
if random.random() < 0.5:
walk = self.resources.zombie_walk_images
die = self.resources.zombie_die_images
attack = self.resources.zombie_attack_images
scream = self.resources.male_scream
else:
walk = self.resources.zombie_woman_walk_images
die = self.resources.zombie_woman_die_images
attack = self.resources.zombie_woman_attack_images
scream = self.resources.female_scream
갈등이 없도록 0.5로 반반 나눴습니다.
한쪽 성별이 많이 나온다고 생각하셨다면 백프로 오해예요.
전체 소스를 첨부합니다.
뭐 대단한거는 아니지만 게임 내에 사용한 sprites도 첨부합니다.
자유롭게 사용하셔도 무방합니다.
실행방법은 간단합니다. python이 설치된 PC에서 (설치 버전 3.8 이상)
압축파일을 풀고 python main.py로 실행하시면 됩니다.
pygame과 관련된 오류가 나는 경우
pip install pygame으로 pygame library를 설치하시면 됩니다.
'게임공작소' 카테고리의 다른 글
타자 연습 게임, 타이핑 몬스터(5) - 객체지향 (19) | 2025.02.15 |
---|---|
타자 연습 게임, 타이핑 몬스터(4) - 배경 (23) | 2025.01.26 |
타자 연습 게임, 타이핑 몬스터(3) - 애니메이션 (46) | 2025.01.12 |
타자 연습 게임, 타이핑 몬스터(2) - 프로토타입 (65) | 2024.12.21 |
타자 연습 게임, 타이핑 몬스터(1) - 게임기획 (104) | 2024.12.08 |