728x90

타워 판매(Sell) 버튼 추가
15강에서 왼쪽 하단 패널과 업그레이드 버튼을 만들었습니다.
이번 16강에서는 선택된 타워를 판매(Sell) 할 수 있도록 버튼을 추가합니다.
Sell 버튼은 패널 우측에 배치합니다.
1. 환불(Refund) 규칙
판매 시 골드는 다음 규칙으로 돌려줍니다.
- 설치 비용(TOWER_COST) + 업그레이드에 사용한 비용(누적)
- 누적 금액의 70% 환불
이를 위해 타워가 지금까지 사용한 골드를 추적합니다.
2. 타워에 누적 비용(spent_gold) 추가
타워가 설치될 때 설치 비용을 누적하고,
업그레이드될 때 업그레이드 비용도 함께 누적합니다.
class Tower:
def __init__(self, pos):
...
self.spent_gold = TOWER_COST # 설치 비용 누적
업그레이드가 될 때마다 누적합니다.
cost = t.get_upgrade_cost()
if gold >= cost:
gold -= cost
t.spent_gold += cost
t.upgrade()
3. Sell 버튼 만들기
업그레이드 버튼은 왼쪽, Sell 버튼은 우측에 배치합니다.
upgrade_btn = pygame.Rect(panel_x + 15, panel_y + PANEL_H - 45, PANEL_W - 110, 34)
sell_btn = pygame.Rect(panel_x + PANEL_W - 85, panel_y + PANEL_H - 45, 70, 34)
4. 클릭 처리 순서
Sell 버튼이 추가되었으므로 클릭 처리 순서를 아래처럼 확장합니다.
- Sell 버튼
- Upgrade 버튼
- 타워 선택
- 타워 설치
5. 패널에 Sell 버튼 표시
선택된 타워가 있을 때 Sell 버튼을 표시하고,
마우스를 올리면 테두리를 강조합니다.
추가로 환불 금액도 표시합니다.
6. 실행 결과

728x90
'⚙️ Python > 🎮 Pygame 실전' 카테고리의 다른 글
| [Pygame] 🧱 벽돌 깨기 게임 만들기 1강 | 게임 구조 개요 (0) | 2026.02.18 |
|---|---|
| [Pygame] 🏰 2D 타워 디펜스 게임 만들기 17강 | 스프라이트 적용 (0) | 2026.02.17 |
| [Pygame] 🏰 2D 타워 디펜스 게임 만들기 15강 | 타워 선택 UI 만들 (0) | 2026.02.15 |
| [Pygame] 🏰 2D 타워 디펜스 게임 만들기 14강 | 타워 강화 시스템 만들기 (0) | 2026.02.14 |
| [Pygame] 🏰 2D 타워 디펜스 게임 만들기 13강 | 적 종류 추가하기 (0) | 2026.02.13 |