Python dwuwymiarowa tablica obiektów

0

Witam,

mam problem z dodaniem obiektu Wilk do tablicy dwuwymiarowej obiektów Organizm- oczywiście Wilk dziedziczy z klasy Zwierze, natomiast Zwierze dziedziczy z klasy Organizm.

Kiedy tworze nowego "Wilka" wpisuje:
wilk = Wilk(4, 4)

Tablice dwuwymiarową i jednowymiarową inicjalizuje:

    organizmy = [Organizm() for count in range(400)]

    mapa = [[Organizm() for i in range(20)] for j in range(20)] 

Natomiast problem właśnie mam gdy chcę przypisać do tablicy:

    def dodajZwierze(self, zwierze):
        x = zwierze.getPolozenie_x
        y = zwierze.getPolozenie_y

        self.organizmy.append(zwierze())
        self.mapa[x][y] = zwierze() 

Mój error to: 'Wilk' object is not callable
Z kolei gdy zamienię-> zwierze() na-> zwierze
To mam inny błąd: List indices must be integers, not method.
Tak jakbym do tablicy wpisywał złą zmienną, ale w ogóle tego nie rozumiem bo wszystko powinno być ok przez samo dziedziczenie.

Prosiłbym o pomoc : )

0

WTF? Czy ty widziałeś pythona na oczy kiedykolwiek? Tworząc ta swoją tablice tworzysz od razu kilkaset obiektów których nie potrzebujesz. Po co? Lista się sama rozszerza...
Masz tam mieć "zwierze", ale pobierając x i y musisz wywołać metody czyli dać tam () za nazwą metody. Generalnie przeczytaj jakiś kurs pythona...

0

Spokojnie : ) tak, jest to mój pierwszy program w python'ie. I troche brałem przykładu z javy i googlowałem trochę więc od razu walnąłem tak ogromną tablicę, dziękuję za odpowiedź w każdym razie.

A zapomniałbym. Lista [20][20] jest mi potrzebna do wyświetlenia "pola mapy". Jeżeli owe pozycja na liście jest pusta, wyświetlam puste pole. Gdy się coś znajduje to oczywiście wyświetlam tam to co mi jest potrzebne. Stąd uważam, że to ma sens. No prócz tej listy jednowymiarowej która ma 400 pozycji...

0

Przepraszam, że post pod postem ale chce zebrać troszke atencji.
Mam banalne zapewne pytanie z buttonami i ich eventami.

Mam kod:

def akcja():
        print("There you are")
nowaTura = Button(app, text = "Nowa Tura")
    nowaTura.grid(column = 25)
    nowaTura["command"] = akcja 

Moje pytanie tylko polega na tym jak za pomocą eventa przekazać jeszcze parametry.
Jak se wpisze:
nowaTura["command"] = akcja(costam, costam)

To oczywiście nie działa i funkcja jest wykonywana od razu gdy program jest uruchamiany. Mógłby ktoś powiedzieć jak to ładnie zrobić?

0

Dziękuję przydało się py
Mam pytanie. Mam mapke, w nich zwierzaczki itd.
Będę chciał zrobić zapisywanie i wczytywanie stanu planszy.
W javie zapisywałem wszystko w pliku i odczytywałem z pliku za pomocą StreamTokenizer, BufferWriter...
Jak to w python'ie można wykonać sprytnym sposobem? : )

1

Jak sprytnie to pewnie to https://docs.python.org/3.4/library/pickle.html ci się przyda.

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