используя классы в Pygame для создания прямоугольника? - PullRequest
1 голос
/ 24 июня 2019

Проблема на самом деле с созданием прямоугольников в Pygame. Очевидно, это просто pygame.draw.rect(), но мои проблемы возникают, когда я пытаюсь нарисовать прямоугольник внутри класса и использую def __init__()

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

class rectangles:

    def __init__(self, command, display, colour, x, y, width, height):
        self.command = command
        self.display = display
        self.colour = colour
        self.x = int(x)
        self.y = int(y)
        self.width = int(width)
        self.height = int(height)

    def rectdraw(self):
        return (self.command, self.display, self.colour, self.x, self.y, self.width, self.height)

block1 = rectangles(pygame.draw.rect, window, black, 100, 100, 200, 200)
block2 = rectangles(pygame.draw.rect, window, black, 20, 20, 400, 600)
block3 = rectangles(pygame.draw.rect, window, black, 800, 500, 40, 40)    


(block1.rectdraw())
(block2.rectdraw())
(block3.rectdraw())

(я также создал окно для pygame, просто не включил его здесь)

Хотя программа не выдает никаких ошибок, она просто выдаст пустой экран и не отобразит нужные мне поля. Это особенно озадачивает, и это заставляет меня думать, что с моими уроками что-то не так.

1 Ответ

0 голосов
/ 24 июня 2019

Проблема в вашем коде заключается в том, что там, где вы написали

return (self.command, self.display, self.colour, self.x, self.y, self.width, self.height)

, вы должны написать

return self.command(self.display, self.colour, self.x, self.y, self.width, self.height)

вместо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...