如何实现一个类?

我一直在做一个练习,我们需要用另一个函数的大小属性创建一个毛毛虫。在下面的代码中,我添加了一个介于 0 和 3 之间的大小属性。


class Caterpillar:


    def __init__(self):

        self.size = random.randrange(0, 3)

        x = random.randrange(50, 950)

        y = random.randrange(50, 950)

        self.xcoord = x

        self.ycoord = y

但是,在下面的这段代码中,当我尝试在此行中添加大小时pygame.draw.ellipse(screen, red, [x, y, size, 40, 45]),但出现错误。


def draw_critter(self, screen):

        x = self.xcoord

        y = self.ycoord

        size = self.size

        pygame.draw.ellipse(screen, red, [x, y, 40, 45])

        pygame.draw.ellipse(screen, black, [x + 6, y + 10, 10, 15])

        pygame.draw.ellipse(screen, black, [x + 24, y + 10, 10, 15])

        pygame.draw.line(screen, black, (x + 11, y + 1), (x + 9, y - 10), 3)

        pygame.draw.line(screen, black, (x + 25, y + 1), (x + 26, y - 10), 3)

我不明白为什么会出现此错误


File "D:/UniFiles/Sem/159/critters.py", line 53, in <module>

    critter.draw_critter(screen)

  File "D:\UniFiles\Sem\159\mycritters.py", line 27, in draw_critter

    pygame.draw.ellipse(screen, red, [x, y, size, 40, 45])

TypeError: Invalid recstyle argument

我不确定我是否真的了解课堂的运作方式。有人可以告诉我一个例子,说明我如何实现 draw_critter 函数来创建整个毛毛虫而不仅仅是头部。


GCT1015
浏览 105回答 1
1回答

ABOUTYOU

ellipse()期望:pygame.draw.ellipse()     draw an ellipse     ellipse(surface, color, rect) -> Rect     ellipse(surface, color, rect, width=0) -> Rect什么是矩形?它期望这样:pygame.Rect     pygame object for storing rectangular coordinates     Rect(left, top, width, height) -> Rect     Rect((left, top), (width, height)) -> Rect     Rect(object) -> Rect它没有在任何地方提到尺寸参数。我不太确定你想做什么,但听起来你想要一个长椭圆来表示毛毛虫?那么也许你可以画一些size椭圆并将它们隔开一点。例如:for s in range(self.size):     pygame.draw.ellipse(screen, red, [x + s*10, y, 40, 45])这只是一种方式,我不知道你想要它看起来如何。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python