python - 使用 pygame 进行 Sprite 副本

标签 python pygame sprite

第一次使用 pygamer 有谁知道如何将超过 1 个 Sprite 副本添加到您的窗口中?

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,)

最佳答案

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

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

在代码示例中创建第一个唯一实例。该行上方的代码仅包含指定 Spriterock 如何工作的类定义,但并未实际创建 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()

关于python - 使用 pygame 进行 Sprite 副本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20941297/

相关文章:

python - 如何安装 MySQLdb 包? (导入错误 : No module named setuptools)

python - 使用 Pygame,在不同位置绘制图像的副本

python - 读取 .JPG 图像并在不更改文件大小的情况下保存它

python - 如何从 Linux 终端逐行执行 python 命令?

python - 通过 txt 文件中的坐标进行粒子跟踪

Android/离屏渲染到纹理

java - 如何将子弹对准枪?

c++ - CCSprite 在 COCOS2dx 中不作为物理体?

python - 导入错误 : cannot import name start_ipython

python - Pygame 分发 - 运行时错误