본문 바로가기

[Pygame] 🏰 2D 타워 디펜스 게임 만들기 14강 | 타워 강화 시스템 만들기

@도마22026. 2. 14. 19:00
728x90


이번 강의에서는 타워디펜스의 핵심 성장 요소인 타워 업그레이드를 구현합니다.

구현 목표는 다음과 같습니다.

  • 타워에 레벨(Level) 추가
  • 레벨에 따라 공격력/사거리/공격속도 상승
  • 업그레이드 비용을 골드로 지불
  • 마우스로 타워를 선택하고, 키 입력으로 업그레이드

이번 강의에서는 UI 버튼 대신, 단순하게 키 입력으로 진행합니다.

  • 타워 클릭 → 선택
  • U 키 → 업그레이드

1. 타워 선택 기능(클릭으로)

기존엔 “마지막으로 설치한 타워”만 선택되었지만,
업그레이드를 하려면 원하는 타워를 클릭해서 선택할 수 있어야 합니다.

타워 중심과 클릭 좌표 사이 거리가 타워 반지름 이내면 선택합니다.

def is_clicked(self, pos):
    px, py = pos
    dx = px - self.x
    dy = py - self.y
    return (dx * dx + dy * dy) ** 0.5 <= self.radius

메인 이벤트에서 타워 클릭을 우선 처리합니다.

  • 타워를 클릭했으면 선택만 하고 설치는 하지 않음
  • 타워를 클릭하지 않았을 때만 설치 시도

2. 타워 레벨과 업그레이드 스탯

타워에 레벨을 추가합니다.

  • level 1 시작
  • 업그레이드 시 level + 1
  • 레벨에 따라 스탯 증가

예시 증가 규칙(이번 강의 기준):

  • damage: +4
  • range: +12
  • fire_delay: -40ms (최저 150ms 제한)

3. 업그레이드 비용

업그레이드 비용은 레벨이 오를수록 증가하도록 설정합니다.

def get_upgrade_cost(self):
    return 40 + (self.level - 1) * 35

4. 업그레이드 입력 처리

선택된 타워가 있을 때 U 키를 누르면 업그레이드 합니다.

  • 골드가 충분해야 함
  • 성공 시 골드 차감 + 스탯 증가

5. 실행 결과


728x90
도마2
@도마2 :: 도마의 코드노트

초보자를 위한 코딩 강의를 정리합니다. 파이썬부터 C#, Unity 게임 제작까지 차근차근 기록합니다. — 도마

목차