Witam
Mam mały problem z jedną klasą której przekazuje przy tworzeniu tego obiektu zmienną a potem ta zmienna w tej klasie jest przekazywana do zmiennej tego obiektu to zamiast dane być ciągle takie same to ta zmienna jest przekazywana na okrągło chociaż ze była przekazywana tylko raz.
I tak pewnie nikt nie zrozumiał o co mi chodzi więc daje kod.
Dodam jeszcze tylko ze używam biblioteki pygame jak coś.
Kod kalsy:
class Ammo():
def __init__(self, pos):
self.position = pos
Kod tworzenia klasy:
def checkEvent(self):
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit(0)
elif event.type == pygame.KEYDOWN and event.key == pygame.K_SPACE:
print("work")
self.playerOne.shoot.append(Ammo(self.playerOne.pos)) #Tutaj tworzę tą klasę tylko raz
Obiekt jest tworzony i wrzucany do listy po naciśnięciu spacji ale to nie ważne i jest wrzucany tylko raz bo sprawdzałem to za pomocą printa i wyświetlił się tylko raz.
Działanie na tej klasie.
for bul in self.playerOne.shoot:
pygame.draw.circle(self.screen, bul.bg, bul.position, bul.size)
print("Woerk: " + str(bul.position))
I tu pojawia się problem bo zmienna która jest przekazywana przy tworzeniu obiektu aktualizuje dane w obiekcie na bieżąco czyli jeżeli dane w zmiennej która jest przekazywana do obiektu zostaną zmienione to dane przypisane do zmiennej w obiekcie też zostają zmienione.
I sprawdzałem to na zmiennej którą zadeklarowałem na początku kodu, przekazałem ją do obiektu a potem ją nadpisałem innymi danymi to dane w obiekcie też się jakoś zmieniły.
Wie ktoś jak zrobić tak żeby przekazać tylko dane ze zmiennej do obiektu a nie całą zmienna?? Bo tutaj to chyba po prostu jest przekazywany adres zmiennej w pamięci ram a nie dane tej zmiennej, nie wiem czy dobrze myślę.