Poprzedni problem wyjaśniony.
I czego nie łapiesz w tym komunikacie? Wyrażenie: self.invaders[row]
jest typu list
. Typ ten nie definiuje metody getPosition()
.
Pewnie chodzi Ci o:
for row in range(5):
for col in range(11):
self.screen.blit(self.invaderImg, self.invaders[row][col].getPosition())
Dodaj pętle na samej górze:
for row in range(5):
I zamień każde:
invaders[col]
na:
invaders[row][col]
PS. Ten kod to jakaś tragedia.
self.invaders[row][0]
Nie rozumiem po co chcesz pisać grę, jak oni programowania ani pythonia nie ogarniasz? Może zacznij od jakichś podstaw czy coś, bo nie tędy droga..
Nie rozumiem co to znaczy: "zamiast 5 rzedów na raz to jest to tylko każdy z rzędów po razie.". Chcesz żeby 5 rządków kosmitów zeszło w tym samym czasie o 1 rząd w dół? Czy żeby po kolei każdy z rządków schodził?
self.invaders[row][col] = False - zamieniasz obiekt (aliena) w tablicy na boola. Podczas kolejnych iteracji pętli, próbujesz pobrać pozycję X i Y tego boola, sam sobie odpowiedz czy to możliwe. Po trafieniu musisz usuwać obiekt, a nie zmieniać go na coś innego. Przy okazji zapoznaj się lepiej z podstawami, przydatna będzie również metoda sprawdzająca długość listy. Błędy, które dostajesz to nie jest magia, staraj się je zrozumieć.
Nadal nie usunąłeś aliena, tylko na jego miejsce wstawiłeś do listy NoneType. Nie rób tego na pałę, bo się nie wyrobisz, tylko dowiedz się jak usunąć dany element z listy - https://docs.python.org/2/tutorial/datastructures.html