Jak poruszać się po polach mapy?

0

Witam społeczności.
Przygodę z pythonem zacząłem pare tygodni temu. Mam problem, mianowicie chciałem utworzyć program który będzie pozwalał użytkownikowi poruszać się po polach klasy mapa, natomiast mam ogromny problem z przejściem jednego problemu. Otóż podczas tworzenia klasy i wywołania metody umieszczającej użytkownika na mapie, odwołując się do konkretnego indexu konkretnej listy mapy metoda modyfikuje całą kolumnę, czyli wszystkie listy z danym indeksem wewnętrznym.

Będę bardzo wdzięczny za pomoc. Dziękuję

class Mapka:
    
    def __init__(self, x, y):
        self.x = x
        self.y = y
        self.display = []
        self.display_x = []
    
    def create_map(self):
        self.display.clear()
        for i in range(self.x):
            self.display_x.clear()
            for j in range(self.y):
                self.display_x.append('O')
            self.display.append(self.display_x)
        else:
            return self.display
        
    def print_map(self):
        print(self.display) 

pierwsza_mapka = Mapka(10, 10)
pierwsza_mapka.create_map()

pierwsza_mapka.display[0][1] = 'x'
pierwsza_mapka.print_map()
2

Tutaj self.display.append(self.display_x) dodajesz za każdym razem do listy display listę display_x. Czyli tworzysz listę z jedną zmienną ale wielokrotnie.
Coś w stylu
display = [lista_a, lista_a, lista_a]

Wkleiłem Twój post w ChatGPT i podał poprawną odpowiedź. Jeśli nie chcesz się pomęczyć z tym i popróbować sam rozwiązać to możesz się tym zasugerować.

0
anonimowy napisał(a):

Tutaj self.display.append(self.display_x) dodajesz za każdym razem do listy display listę display_x. Czyli tworzysz listę z jedną zmienną ale wielokrotnie.
Coś w stylu
display = [lista_a, lista_a, lista_a]

Wkleiłem Twój post w ChatGPT i podał poprawną odpowiedź. Jeśli nie chcesz się pomęczyć z tym i popróbować sam rozwiązać to możesz się tym zasugerować.

Faktycznie błyskawiczna odpowiedź i w punkt :) Po zastosowaniu list comprehension problem zrozumiany i rozwiązany :) Dzięki :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1