peki sırf Store için ayrı bir python dosyası kullanmama gerek varmı
yada bir menu classı içinde bütün widget ları toplamam mümkünmü
zaten sadece buton lazım
Bunu bana sormanıza gerek yok ki Eğer ihtiyaç duyuyorsanız programınızı modüllere ayırabilirsiniz.
Eğer oyununuzun başka yerlerinde de GUI kullanacak iseniz bir UI modülü oluşturup gerekli sınıfları orada oluşturmanız iyi olabilir.
peki ana döngüde nerde çizdirilecek bunun içinde yardım edebilirmisiniz
döngü taslağı:
class Game:
def__init__(self,):
pass
def new(self):
pass
def update(self):
pass
def run(self):
pass
def draw(self):
pass
yani draw’da nasıl şöylemi
if self.store.menu == True:
#menu çizdir
ve konuyla alakasız ama forum kodları yazarken ki tırnak işareti farklı onu nasıl klavyede
yapabilirim zorlanıyorumda.
sürekli forumun o konusuna dönüyorum.
kopyalıyorum
O şekilde de yapabilirsiniz. Bu size kalmış. Şahsen be çok fazla sprite içeren bir oyun yaptığımda bir liste içerisinde çizilecek bütün spriteları tutmayı tercih ediyorum. Gerektiğinde de sprite ekleyebiliyorum veya silebiliyorum.
bende all_sprites diye grup oluşturdum ama o grup oyunun kamerasına
bağlı yani eğer menuyu o gruba eklersem menu de hareket etmeye başlar
nasıl yapacağım
çünkü eğer menuyu yanlış yerde basarsam screen.fill()
metodu ile ekranı temizlediğimizde hepsi gitmiş olacak
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