.......

#pgzero

WIDTH = 600
HEIGHT = 400

TITLE = "Clicker Heroes"
FPS = 30

# Nesneler
background = Actor('background')
enemy = Actor('enemy', (400, 230))
bonus_1 = Actor("bonus", (100, 100))
bonus_2 = Actor("bonus", (100, 200))
menu_button = Actor("bonus", (300, 280))
game_button = Actor("bonus", (300, 180))
gallery_button = Actor("bonus", (300, 280))
win = Actor('win')

# Koleksiyon
menu_button_2 = Actor('bonus', (300, 350))
enemy_gallery = Actor('enemy', (150, 80))
enemy2_gallery = Actor('enemy_2', (280, 80))
enemy3_gallery = Actor('enemy_3', (450, 80))
enemy4_gallery = Actor('enemy_4', (220, 230))
enemy5_gallery = Actor('enemy_5', (400, 230))

# Değişkenler
count = 0
damage = 1
hp = 50
price1 = 15
price2 = 200
mode = 'menu'

# Grafikleri çizdirme
def draw():
   global hp, mode
   # Oyun Ekranı
   if mode == 'game':
       background.draw()
       enemy.draw()
       screen.draw.text(hp, center=(400, 130), color="#DC143C", fontsize = 30, background="#FFE4B5")
       screen.draw.text(count, center=(570, 30), color="black", fontsize = 30)
       # Bonuslar
       bonus_1.draw()
       screen.draw.text("Her 2 sn 1 hasar", center=(100, 80), color="black", fontsize = 20)
       screen.draw.text(price1, center=(100, 110), color="black", fontsize = 20)
       bonus_2.draw()
       screen.draw.text("Her 2 sn 5 puan", center=(100, 180), color="black", fontsize = 20)
       screen.draw.text(price2, center=(100, 210), color="black", fontsize = 20)
   
   # Zafer ekranı
   elif mode == 'win':
       win.draw()
       screen.draw.text("Tüm canavarları yendiniz!", center=(300, 100), color="white", fontsize = 32)
       menu_button.draw()
       screen.draw.text("Menüye geri dön!", center=(menu_button.x,menu_button.y - 5), color="black", fontsize = 20)

   # Menü Ekranı    
   elif mode == 'menu':
       win.draw()
       # Menü butonları
       game_button.draw()
       screen.draw.text("OYNA", center=(game_button.x,game_button.y - 5), color="black", fontsize = 20)
       gallery_button.draw()
       screen.draw.text("KOLEKSİYON", center=(gallery_button.x,gallery_button.y - 5), color="black", fontsize = 20)

   # Koleksiyon Ekranı
   elif mode == 'collection':
       win.draw()
       # Canavar koleksiyonu
       enemy_gallery.draw()
       enemy2_gallery.draw()
       enemy3_gallery.draw()
       enemy4_gallery.draw()
       enemy5_gallery.draw()
       menu_button_2.draw()
       screen.draw.text("Menüye geri dön!", center=(menu_button_2.x,menu_button_2.y - 5), color="black", fontsize = 20)
       
       
# Bonus fonksiyonları
def for_bonus_1():
   global hp
   hp -= 1

def for_bonus_2():
   global count
   count += 5


# Tıklamaları işleme
def on_mouse_down(button, pos):
   global count, damage, hp, price1, price2, mode
   #Oyundaki tıklamalar
   if mode == 'game' and button == mouse.LEFT:
       # Nesneye tıklama
       if enemy.collidepoint(pos):
           count += 1
           hp -= damage
           enemy.y = 200
           animate(enemy, tween='bounce_end', duration=0.5, y=230)
       # bonus_1 butonu üzerine tıklama  
       elif bonus_1.collidepoint(pos):
           if count >= price1:
               schedule_interval(for_bonus_1, 2)
               count -= price1
               price1 *= 2
       # bonus_2 butonu üzerine tıklama
       elif bonus_2.collidepoint(pos):
           if count >= price2:
               schedule_interval(for_bonus_2, 2)
               count -= price2
               price2 *= 2

   #Menüdeki tıklamalar            
   elif mode == 'menu' and button == mouse.LEFT:
       # 'Oyna' butonu üzerine tıklama
       if game_button.collidepoint(pos):
           mode = 'game'
       # 'Koleksiyon' butonu üzerine tıklama
       if gallery_button.collidepoint(pos):
           mode = 'collection'
       
   #Kazanma ekranındaki tıklamalar
   elif mode == 'win' and button == mouse.LEFT:
       # 'Menüye geri dön!' butonu üzerine tıklama
       if menu_button.collidepoint(pos):
           mode = 'menu'

   #Koleksiyon ekranındaki tıklamalar
   elif mode == 'collection' and button == mouse.LEFT:
       if menu_button_2.collidepoint(pos):
           mode = 'menu'


#Oyun mantığını işleme
def update(dt):
   global hp, mode
   if mode == 'game':
       # Çizim koşulları
       if  hp <= 0 and enemy.image == 'enemy':
           hp = 100
           enemy.image = 'enemy_2'
       elif hp <= 0 and enemy.image == 'enemy_2':
           hp = 200
           enemy.image = 'enemy_3'
       elif hp <= 0 and enemy.image == 'enemy_3':
           hp = 350
           enemy.image = 'enemy_4'
       elif hp <= 0 and enemy.image == 'enemy_4':
           hp = 500
           enemy.image = 'enemy_5'
       # Kazanma ekranına geçiş
       elif hp <= 0 and enemy.image == 'enemy_5':
           mode = 'win'