游戏,继承问题

2024-05-19 23:02:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我不是新手,也不是python方面的经验,我发现自己陷入了一个棘手的问题,即使在Google和Bing上呆了很多小时,我也能找到答案。我的问题从以下代码开始:

    class Rectangulo(object):
    def __init__ (self, x, y, color, largo, alto, cambio_x, cambio_y):
        self.alto = alto
        self.largo = largo
        self.color = color
        self.cambio_x = cambio_x
        self.cambio_y = cambio_y
        self.x = x
        self.y = y
    def dibujar(self):
        pygame.draw.rect(pantalla, self.color, (self.x, self.y, self.alto, self.largo))
    def mover(self):
        self.x +=  self.cambio_x
        self.y +=  self.cambio_y

class Elipse(Rectangulo):
    def __init__(self):
        Rectangulo.__init__(self)
        def dibujar (self):
            pygame.draw.ellipse(pantalla, Rectangulo.color,(Rectangulo.x, Rectangulo.y, Rectangulo.alto, Rectangulo.largo))

这是目前最重要的一段代码。我已经找到了Elipse中存在的问题,并尝试了许多方法使继承生效,但是控制台继续显示此消息。在

^{pr2}$

每次我试图用以下代码调用类函数dibujar():

for item in range(10):
    x = random.randrange(685)
    y = random.randrange(485)
    alto = random.randrange(20, 71)
    largo = random.randrange(20, 71)
    cam_x = random.randrange(1, 2)
    cam_y = random.randrange(-3, 3)
    miObjeto = Rectangulo(x,y,VERDE,alto,largo,cam_x,cam_y)
    miLista.append(miObjeto)
    miEl = Elipse(x,y,VERDE,alto,largo,cam_x,cam_y)

miEl变量过去有自己的for循环,但我认为这样做对我来说不会那么混乱。我还是搞不清到底发生了什么。恐怕我需要帮助。在


Tags: 代码selfinitdefrandomclasscolorcam
1条回答
网友
1楼 · 发布于 2024-05-19 23:02:52

您的Eclipse实例未能初始化,因为当它调用其基类Rectangulo的初始化时,该类有7个参数(x,y颜色。。。等等)而你没有提供任何。在

所以你有很多选择,但最常见的两种方法是:

  • 将相同的7个参数传递到Eclipse__init__方法,然后将这些相同的参数传递到对Rectangulo.__init__(self, ...)的调用中
  • Elipse中决定要用于Rectangulo的参数,例如Rectangulo.__init__(self, 1, 2, "red", ...)。在

一般来说,你可能会想要第一个选择。e、 g

class Elipse(Rectangulo):
    def __init__(self, x, y, color, largo, alto, cambio_x, cambio_y):
        Rectangulo.__init__(self, x, y, color, largo, alto, cambio_x, cambio_y)

如果Elipse类本身不需要其他参数,则可以通过执行以下操作来简化上述操作:

^{pr2}$

这基本上会将给Elipse实例化的所有参数传递给Elipse.__init__调用。在

相关问题 更多 >