Pygame oyun içi dükkan ekranı

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 :slightly_smiling_face: 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 :smile:

Ctrl + Alt + , ve AltGr + , bende çalışıyor. Sizde çalışmaz ise buraya bakabilirsiniz.

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