このチュートリアルのコードの次のフラグメント: http://www.raywenderlich.com/24252/beginning-game-programming-for-teens-with-python
for badguy in badguys:
if badguy[0]<-64:
badguys.pop(index)
badguy[0]-=7
index+=1
for badguy in badguys:
screen.blit(badguyimg, badguy)
私に与えています:
TypeError: 'Tuple'オブジェクトはアイテムの割り当てをサポートしていません
これはbadguy
がタプルであるためと考えられます。これは不変であることを意味します(値を変更することはできません)。
t= list(badguy)
t[0]= t[0]-7
i+=1
タプルをリストに変換して、マイナス7にできるようにしました。しかし、ゲームでは何も起こりません。
誰か私が何ができるか知っていますか?
ありがとう。
これを変える
badguy[0]-=7
これに
badguy = list(badguy)
badguy[0]-=7
badguy = Tuple(badguy)
または、badguy
をlist
のままにできる場合は、タプルを使用しないでください。現在のコードで問題ありません(タプルの代わりにリストを使用するように変更されています)。
別の解決策は
badguy[0] -= 7
する
badguy = (badguy[0] - 7,) + badguy[1:]
これにより、0番目の要素の値が更新された新しいタプルが作成されます。