2013-10-12 17 views
5

Poniższy fragment kodu z tego poradnika: http://www.raywenderlich.com/24252/beginning-game-programming-for-teens-with-pythonJak naprawić: TypeError „krotki” obiekt nie obsługuje Przydzielenie artykuł

for badguy in badguys: 
     if badguy[0]<-64: 
      badguys.pop(index) 
     badguy[0]-=7 
     index+=1 
    for badguy in badguys: 
     screen.blit(badguyimg, badguy) 

daje mi:

TypeError: 'tuple' object does not support item assignment

Rozumiem, że może to być takie, że badguy jest krotką. Oznacza to, że jest niezmienna (nie można zmienić jego wartości) Ive próbowałem następujące:

t= list(badguy) 
     t[0]= t[0]-7 
     i+=1 

I konwertowane krotka do listy więc możemy minus 7. Ale w grę nic się nie dzieje.

Czy ktoś wie, co mogę zrobić?

Dzięki.

Odpowiedz

17

Zmiana ta

badguy[0]-=7 

w tym

badguy = list(badguy) 
badguy[0]-=7 
badguy = tuple(badguy) 

Alternatywnie, jeśli można zostawić badguy jako list, to nawet nie używać krotki i wszystko będzie w porządku z aktualnym kodem (z dodaną zmianą użycia list zamiast krotek)

+0

Nie mam żadnego ruchu w mojej grze, z tymi zmianami –

+0

@ Pro-grammer: W takim razie masz inne problemy. Proponowane przeze mnie rozwiązanie zajmuje się problemem "krotki". Jeśli masz inny problem, proponuję napisać kolejny wpis: – inspectorG4dget

+0

ok, dzięki za twoją pomoc :-) –

1

Inne rozwiązanie zamiast

badguy[0] -= 7 

zrobić

badguy = (badguy[0] - 7,) + badguy[1:] 

Stwarza to zupełnie nowe krotki ze zaktualizowanej wartości elementu zerowego.

Powiązane problemy