• 19-04-2020, 21:08:24
    #1
    Arkadaşlar, iyi akşamlar.

    Aşağıdaki gibi ana sınıf Oyuncu, alt sınıf ise özellikler diye class oluşturdum. 3 karakterim var ve bu karakterin özelliklerine göre r(random) sayı atamasını yaptım. Buraya kadar güzel. Ben VurusYap fonksiyonunda çalıştırıyorum. "1" Tekme seçtikten sonra random sayı atıyor tekrar "1" seçince önceki random sayıyı hafıza da tutuyor ve tekrar döndürüyor. Ben farklı sayı atamasını istiyorum. Nasıl yapabilirim?

    Halbuki self.Yumruk (r(12, 15)) değerleri döndürüyorum. İlkinde dönüyor ikinci de dönmüyor. Diğer elif değerleri de aynı şekilde.

    from random import randint as r

    class Oyuncu:
    def __init__(self, kullaniciAdi, *args, level=0, can=100, enerji=0, **kwargs):
    self.KullaniciAdi = kullaniciAdi
    self.Level = level
    self.Can = can
    self.Enerji = enerji


    class Ozellikler(Oyuncu):
    def __init__(self, yumruk, tekme, tokat, tukur, sac, *args, **kwargs):
    self.Yumruk = yumruk
    self.Tekme = tekme
    self.Tokat = tokat
    self.Tukurme = tukur
    self.SacCekme = sac
    super().__init__(*args, **kwargs)
    def __str__(self):
    return "Kullanıcı adı: {}\nYumruk Ortalama Vuruş: {}\nTekme Ortalama Vuruş: {}\nTokat Ortalama Vuruş: {}\nTükürme Ortalama Vuruş: {}\nSaç Çekme Ortalama Vuruş: {}\nLevel: {}\nCan: {}\nEnerji: {}".format(self.KullaniciAdi, self.Yumruk, self.Tekme, self.Tokat, self.Tukurme, self.SacCekme, self.Level, self.Can, self.Enerji)

    def VurusYap(self):
    while True:
    Vurus = input("Nasıl canını acıtmak istersin(Topuk Yapmak istersen 'ESC' basabilirsin):\n1- Yumruk At\n2- Tekme At\n3- Tokat At\n4- Suratına Tükür\n5- Saçını Çek")

    if Vurus == "1":
    self.Yumruk
    print("Yumruk Değeri: {}".format(self.Yumruk)
    )
    continue
    elif Vurus == "2":
    self.Tekme
    print("Tekme Değeri: {}".format(self.Tekme))
    continue
    elif Vurus == "3":
    self.Tokat
    print("Tokat Değeri: {}".format(self.Tokat))
    continue
    elif Vurus == "4":
    self.Tukurme
    print("Tükürme Değeri: {}".format(self.Tukurme))
    continue
    elif Vurus == "5":
    self.SacCekme
    print("Saç Çekme Değeri: {}".format(self.SacCekme))
    continue
    elif Vurus == "ESC":
    print("Korkak kaçtın ve oyunu kaybettin...")
    break


    Merve = Ozellikler(r(12, 15), r(20, 24), r(8, 10), r(5, 8), r(1, 3), "Merve")
    Didem = Ozellikler(r(5, 9), r(11, 15), r(4, 7), r(2, 4), r(3, 6), "Didem")
    Elif = Ozellikler(r(15, 19), r(25, 29), r(9, 11), r(1, 2), r(1, 2), "Elif")

    Merve.VurusYap()
  • 19-04-2020, 23:10:42
    #2
    Python dan anlamam ama aşağıdaki link işine yarayabilir.

    https://stackoverflow.com/questions/...inimal-changes

    Anladığım kadarı ile randomu genel değişkenlerde tanımladığın için 1 kere üretilen değer sabit kalıyor. Her alt fonksiyonu çağırdığında tekrar üretmen gerekiyor değeri.
  • 19-04-2020, 23:56:28
    #3
    duskorc adlı üyeden alıntı: mesajı görüntüle
    Python dan anlamam ama aşağıdaki link işine yarayabilir.

    https://stackoverflow.com/questions/...inimal-changes

    Anladığım kadarı ile randomu genel değişkenlerde tanımladığın için 1 kere üretilen değer sabit kalıyor. Her alt fonksiyonu çağırdığında tekrar üretmen gerekiyor değeri.
    Cevap için teşekkür ederim fakat benim farklı özelliklere random atadığım için tek random sayacı işime yaramıyor.



    Tıkandım kaldım arkadaşlar. Yardımcı olabilirseniz çok sevinirim.



    Tıkandım kaldım arkadaşlar. Yardımcı olabilirseniz çok sevinirim.