Pygame oyun içi dükkan ekranı

Eğer menü tek bir sprite’dan oluşacak ise if ile yapmanız daha mantıklı. Eğer -mesela- her butonun kendi sprite’ı olacaksa gui_sprites diye bir liste oluşturursunuz.

her butonun kendi sprite’i olmadan nasıl yapacağız :thinking:

Eğer menünün sprite’ı sabit olacaksa, yani değişmeyecek tek bir resim olacak ise bu olur. Ama bu genel bir çözüm olmaz, sadece bu menüye özel olur. Hem buton koordinatlarını elle yazmamız gerekir.

1 Beğeni

peki şöyle yapsam olurmu:

if self.store.menu == True:
    guisprites.draw()

yoksa şöylemi:

guisprites.draw()

çünkü eğer menu kapanırsa grubu resetlemesi lazım değilmi onun yerine menu aktifken
çizse

Bu da münkün. Siz hangisinin daha uygun olduğunu düşünüyorsanız onu yapabilirsiniz.

birde button widgetini class olarakmı yoksa fonksiyon olarak mı tanımlamalıyım sizce

şöyle:

class Menu:
    def__init__(self,):
         pass
   def button(self):
         pass

Bunları bana sorma ihtiyacı hissetmenizin sebebi nesne tabanlı programlamayı ne zaman ve niçin kullandığımızı tam olarak kavrayamamış olmanız sanırım. Sizce burada button'u bir fonksiyon yapmak mı daha iyi bir kullanım sağlar yoksa sınıf yapmak mı?

Özür dilerim size yanlış sordum
Benim istediğim menugui adlı classın içinde
Tüm widgetları toplamak. Ondan öyle bir soru sordum
Yoksa nesne tabanlı programlamayı
Anlamamaktan değil :grin:

Tamam, bütün arayüz nesnelerini bir modülün veya sınıfın içine toplamanız iyi olur.

pygame de button widget’ını yapmaya çalışıyorum
ama mouse tıklamasında tepki vermesini nasıl yapacağımı bilmiyorum

import pygame as pg

class Button(pg.sprite.Sprite):
    def __init__(self, pos = None, image = None):
        pg.sprite.Sprite.__init__(self)
        assert type(pos) == tuple
        assert type(image) == str
        self.image = pg.image.load(image)
        self.rect = self.image.get_rect(topleft=pos)

araştırdığım kaynaklarda herkez:

for event in pygame.event.get():
            if event.type == MOUSEBUTTONDOWN:
                mouse = pygame.mouse.get_pos()
                if button.pressed(mouse):   #Button's pressed method is called
                    print ('button hit')

şeklinde yapmış ama ben bunu istemiyorum başka türlü nasıl yaparım
yani başka türlü mouse’a basıldığında bilgisayarın tepki vermesini nasıl sağlarım

mesela klavyede:

key = pg.key.get_pressed()
if key[pg.K_SPACE]:
   print("space tuşuna basıldı")

şeklinde yapabiliyorduk onuda öyle yapamazmıyım