2015-02-02 8 views
0

У меня есть класс в моей программе pygame, которая расширяет спрайт и эффективно дает столкновение и еще что-то вроде прямоугольника. __init__ класса выглядит следующим образом:pygame рисует заполненный прямоугольник, переписывая границу, но только иногда?

def __init__(self,topleft,size,label): 
    pygame.sprite.Sprite.__init__(self) 
    self.image = pygame.Surface(size) 
    self.rect = self.image.get_rect() 
    self.rect.topleft = topleft 
    self.image.fill([128,128,128]) 
    pygame.draw.rect(self.image, [200,200,200], self.rect, 5) 

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

+0

Вы явно устанавливаете цвет заливки постоянной ... почему вы ожидаете разные цвета? –

+0

Заполнение является постоянным, но граница прямоугольника является константой _different_. Проблема заключается в том, что для каждого прямоугольника за пределами первой границы граница устанавливается на цвет заливки, а не на заданное значение 200 200 200 –

+0

ok теперь я понимаю ... –

ответ

2

Хорошо, я понял. Аргумент Rect в функции draw равен relative в положение изображения. Так как я установил ее прямое расположение на экране, он рисовал прямоугольник, смещенный с угла. Он работал на моем первом, только потому, что он начинался с [0,0]. Вот фиксированный код:

pygame.draw.rect(self.image, [200,200,200],pygame.Rect([0,0],size), 5) 

 Смежные вопросы

  • Нет связанных вопросов^_^