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
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.
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
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