Pythonda classlar ve kompozisyon

Bu programı nasıl yaparım baya uğraştım ama olmuyor yani canal false olacak ama 3 tanesininki true olacak ve bunlar rastgele seçilecek bunu hiç anlamadım.Soru şu;

PACMAN oyunun simülasyonu yapılacaktır.

Bir pacman sınıfı yazılacak. Bu pacmanın rengi, puanı ve canı=3 olacak.

YEM yemlerin puanı ve can_al bilgisi olacak. Can-al bilgisi default olarak
False olmalıdır. Yemlerin puanı 1 ve 150 arasında değişen rasgele bir puan
olacak. Bu puan yapıcı fonksiyon içinde rasgele oluşturulacaktır. Eğer
can_al=True ise pacmanin canı bir eksilecek. Eğer can_al=False ise
pacmanin canı değişmeyecek.

Oyun bir pacman ve 150 adet yemden oluşacak. Bu yemlerin 3 tanesinin
can_al özelliği True, geri kalanların can_al özelliği False olacak. Can_al
özelliği true olanlar rasgele seçilecektir. Pacman sırayla yemleri yiyecek.
Yemlerin puanına göre kendi puanı güncellenecektir. Eğer bütün canları
biterse oyun sona erecektir. Oyunun sonunda pacmanin puanını ekrana 3
yazdırınız.

bune biz mi yazacaz komple oyunu

150 tane rastgele puanlara sahip yemi nasıl oluşturucam ve bu 150 yemin 3 tanesine canal=true özelliğini nasıl restgele atıcam.Bunu anlasam yeter.

yani 150 rastgele değer mi

Rastgele puan atmasını yaptım ancak 1 ile 150 arasında puanlara sahip 150 tane yem olacak.Mesela 1.nin puanı 142 ikincinin 76…en son 150.nin puanı 3.Bunun gibi.

Başlık ile soru arasında bir bağlantı kuramıyorum.

Bir tanesine rastgele puan atayabiliyorsanız diğerleri için de aynısını yapabiliyor olmanız lazım. Sorun yaşadığınız kısım ne?

self.puan=random.randint(1,151)
Bu herhangi bir nesneye 1 ile 150 arasında rastgele puan atar.Ama bu nesneden 150 tane olacak.

Nesne oluşturma işlemini 150 defa yapacaksınız. Eğer nasıl yapacağınız hakkında hiçbir fikriniz yoksa konu atlamışsınız. Bir fikriniz var mı?

Nasıl olacak anlatırsanız sevinirim zaten yapamadığım için sordum.

Döngüleri kullanarak.

Döngüleri bilmiyorsanız sınıflar ile henüz uğraşmayın.

ikisinide biliyorum ancak işin içinde kompozisyonda var yani nesneden nesne olşturma gibi.Yapabiliyosan yardım ette yapayım.Yapamadım ki yardım istiyorum.

Ben göremedim, kompozisyon bu problemin neresinde? Veya aynı kompozisyondan mı bahsediyoruz? Ben şundan bahsediyorum.

Bu ne demek? Nesneyi kopyalamak mı?

Nerede zorlandığınızı halen anlayabilmiş değilim. İki sayı arasında rastgele bir değer tutabildiğinizi söylediniz. Bunu döngü ile de yapabiliyorsunuz. Sorun sınıfı yazmakta mı?

evet galiba dahil etme derste kompoziston diye gördük.

Sizi kompozisyon kullanmanız gerektiği düşüncesine iten ne? Ben soruda bununla alakalı bir şey göremedim.

Kompozisyon dersinin ödevi.

Kompozisyon kullanılması gerektiğinden bu kadar eminseniz nerede kullanılması gerektiğini öğrenip bizimle de paylaşır mısınız?

import random

class Pacman():

def __init__(self,renk,puan,can):
    
    self.can=3
    self.renk=renk
    self.puan=puan
    

    

    self.x=Yem()
    

def topla(self):
    
   
    if self.can>0:
        
        
    
        if self.x.canal==False:
        
            self.puan+=self.x.puan
        
        
        
        else:
            self.can-=1
            
    else:
        print("tüm canlar bitti puanınız:",self.puan)

class Yem():

    def __init__(self,canal=False):
        
        
        
        self.canal=False
        self.puan=random.randint(1,151)

ornek=Pacman(“mavi”,50,3)

burada self.x=Yem() demişim pacman bu yemi yediğinde de puanı yükselcek.

Pacman.topla metodu bunu halihazırda yapmıyor mu?

self.x'e de gerek yok, yemin Pacman.topla metoduna bir argüman olarak yollanması daha doğru olur.

Evet
for i in range(1,150):
ornek.topla()

şeklinde yaptığımda oluyor ancak can hiç azalmıyor çünkü yemin canal argümanını otomatik olarak False yaptık.Yani Pacmanın canı hiç azalmıyor.

self.x i kullanmadan nasıl yapıcaz onuda anlatırsan sevinirim.

Bu arada Pacman() ve Yem() diye iki ayrı sınıf olmak zorunda çünkü yem puanını yapıcı fonksiyonun içinde rastgele atayın demiş.