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
'⚙️ Python > 🎮 Pygame 실전' 카테고리의 다른 글
| [Pygame] 🏰 2D 타워 디펜스 게임 만들기 16강 | 타워 판매 기능 추가 (0) | 2026.02.16 |
|---|---|
| [Pygame] 🏰 2D 타워 디펜스 게임 만들기 15강 | 타워 선택 UI 만들 (0) | 2026.02.15 |
| [Pygame] 🏰 2D 타워 디펜스 게임 만들기 13강 | 적 종류 추가하기 (0) | 2026.02.13 |
| [Pygame] 🏰 2D 타워 디펜스 게임 만들기 12강 | 웨이브 시스템 만들기 (0) | 2026.02.12 |
| [Pygame] 🏰 2D 타워 디펜스 게임 만들기 11강 | 총알 만들기 (0) | 2026.02.11 |