在pygame中我遇到了这个问题:+ =不支持的操作数类型:'int'和'list'

时间:2019-11-11 12:27:04

标签: python pygame

class Nave(pygame.sprite.Sprite):
   def __init__(self):
      pygame.sprite.Sprite.__init__(self)
      self.image = pygame.image.load('images/nave.png')
      self.rect = self.image.get_rect()
      self.rect.centerx = width / 2
      self.rect.centery = height / 2 
      self.speed = [0,0]

   def move(self,time,keys):
      if self.rect.right >= 0 :
         if keys[K_RIGHT]:
            self.rect.centerx += self.speed * time 
      if self.rect.left <= width:
         if keys[K_LEFT]:
            self.rect.centerx -= self.speed * time

在函数move中的第3行"self.rect.centerx += self.speed * time"控制台中说我:

  

TypeError:+ =不支持的操作数类型:“ int”和“ list”

2 个答案:

答案 0 :(得分:1)

self.speed是一个列表:

  
self.speed = [0,0]

您必须处理列表中的某个元素(例如self.speed[0]而不是self.speed):

self.rect.centerx += self.speed[0] * time 

答案 1 :(得分:1)

self.speed是您不能将list和int一起添加的列表。

self.rect.centerx += self.speed[0] * time

那样使用。