• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed [PYTHON] Przekazywanie zmiennej do klasy i ciągła aktualizacja

Object Storage Arubacloud
0 głosów
501 wizyt
pytanie zadane 2 sierpnia 2021 w Python przez Marak123 Stary wyjadacz (11,190 p.)
zamknięte 3 sierpnia 2021 przez Marak123

Witam smiley

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ę. 

komentarz zamknięcia: Dzięki za pomoc
1
komentarz 3 sierpnia 2021 przez MsMaciek123 Pasjonat (24,760 p.)

Mój pomysł jest taki, spróbuj na podstawie Vectora pozycji gracza, stworzyć nowy Vector. Na samej górze zaimportuj Vector2

from pygame.math import Vector2

i potem:

self.position = Vector2(pos)

 

komentarz 3 sierpnia 2021 przez Marak123 Stary wyjadacz (11,190 p.)

Znaczy ja to robię na podstawie Vectora i chyba ewidentnie przekazywałem adres tego Vectora a nie wartość jaką ma ten Vector ale jak zrobiłem tak jak napisałem Vector2(pos) to przypisuje wartość przekazanego adresu Vectora do nowego Vectora i teraz działa tak ja powinno

dzięki za pomoc smileyyes

Podobne pytania

0 głosów
1 odpowiedź 414 wizyt
pytanie zadane 26 marca 2021 w C i C++ przez Mavimix Dyskutant (8,390 p.)
0 głosów
1 odpowiedź 2,409 wizyt
pytanie zadane 21 czerwca 2017 w JavaScript przez crova Użytkownik (940 p.)
+1 głos
1 odpowiedź 133 wizyt
pytanie zadane 10 sierpnia 2019 w JavaScript przez wsnofi Bywalec (2,680 p.)

92,617 zapytań

141,466 odpowiedzi

319,783 komentarzy

61,999 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...