用pygame精灵副本

时间:2014-01-06 00:55:06

标签: python pygame sprite

第一次pygamer这里有没有人知道如何在窗口中添加超过1个精灵副本?

class Spriterock:

    def __init__(self,x,y,width,height):

        self.x=x

        self.y=y

        self.width=width

        self.height=height

        self.i2 = pygame.image.load("rocks.png")

    def render(self):

            window.blit(self.i2, (self.x,self.y))

Sprite2=Spriterock(random.randrange(150,350),random.randrange(100,400),62,47)
我试图制造更多的岩石

修改

你们知道如何将同样的属性应用于克隆吗?我正在使用

def detectCollisionsrock(x1,y1,w1,h1,x2,y2,w2,h2):

    if (x2+w2>=x1>=x2 and y2+h2>=y1>=y2):

        return True

    elif (x2+w2>=x1+w1>=x2 and y2+h2>=y1>=y2):

        return True

    elif (x2+w2>=x1>=x2 and y2+h2>=y1+h1>=y2):

        return True

    elif (x2+w2>=x1+w1>=x2 and y2+h2>=y1+h1>=y2):

        return True

    else:

        return False

  collisionsrock=detectCollisionsrock(Sprite1.x,Sprite1.y,Sprite1.width,Sprite1.height,rock.x,rock.y,rock.width,rock.height,)

1 个答案:

答案 0 :(得分:1)

您当前的代码示例只会创建一个摇滚,因为您只创建了Spriterock类的一个实例。这一行:

Sprite2=Spriterock(random.randrange(150,350),random.randrange(100,400),62,47)

在代码示例中创建第一个实例。该行上方的代码只包含类定义,该类定义指定Spriterock如何工作但实际上不创建一个。

要创建多个实例,您应该执行以下操作:

rock1 = Spriterock(random.randrange(150,350),random.randrange(100,400),62,47)
rock2 = Spriterock(random.randrange(150,350),random.randrange(100,400),62,47)
rock1.render()
rock2.render()
pygame.display.update()