본문 바로가기

[Pygame] 🏰 2D 타워 디펜스 게임 만들기 16강 | 타워 판매 기능 추가

@도마22026. 2. 16. 19:00
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
도마2
@도마2 :: 도마의 코드노트

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

목차