Функция pygame.draw.rect (), вызываемая в классе, не показывает прямоугольник - PullRequest
2 голосов
/ 15 мая 2019

В приведенном ниже коде не показан прямоугольник, вызываемый в классе, который хранится в списке, даже если порядок цикла «draw-refresh» правильный.

while True:

     root.fill((0,200,255))

     for walls in range(len(WallList)):
          WallList[walls]
          print(walls, WallList[walls])

     for event in pygame.event.get():
          if event.type == pygame.QUIT:
                pygame.quit()
                quit()

     pygame.display.update()

Я ожидаю, чтопрямоугольники должны быть нарисованы до того, как корень будет заполнен, но корень всегда синий (цвет, который я дал).

Редактировать: Есть класс:

class Wall():
     def __init__(self, x, y, thotType):
          global TypeList,camX,camY
          self.x=x
          self.y=y
          self.type=thotType
          if self.type== "Wall": pygame.draw.rect(root,(0,255,255),(x+camX,y+camY,mapmultiplier,mapmultiplier),1)
          if self.type== "Blank": pygame.draw.rect(root,(32,32,32),(x+camX,y+camY,mapmultiplier,mapmultiplier))
          TypeList.append(self.type)

1 Ответ

1 голос
/ 15 мая 2019

Вы должны добавить метод к классу, который рисует прямоугольник.

, например

class Wall():
    def __init__(self, x, y, thotType):
        self.x=x
        self.y=y
        self.type=thotType
        TypeList.append(self.type)

    def draw(self):
        if self.type== "Wall":
            pygame.draw.rect(root,(0,255,255),(self.x+camX,self.y+camY,mapmultiplier,mapmultiplier),1)
        if self.type== "Blank":
            pygame.draw.rect(root,(32,32,32),(self.x+camX,self.y+camY,mapmultiplier,mapmultiplier))

тогда вы можете вызвать draw метод:

for walls in range(len(WallList)):
    WallList[walls].draw()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...