• 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

VPS Starter Arubacloud
0 głosów
469 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ź 402 wizyt
pytanie zadane 26 marca 2021 w C i C++ przez Mavimix Dyskutant (8,390 p.)
0 głosów
1 odpowiedź 2,370 wizyt
pytanie zadane 21 czerwca 2017 w JavaScript przez crova Użytkownik (940 p.)
+1 głos
1 odpowiedź 129 wizyt
pytanie zadane 10 sierpnia 2019 w JavaScript przez wsnofi Bywalec (2,680 p.)

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...