在pygame中创建精灵的问题

notproplayer 3

因此,基本上我知道该怎么做的是添加一个玩家精灵(使玩家类继承自pygame.sprite等),这对我有用。

我想知道如何做的是迭代创建精灵并将它们添加到精灵组中。这是因为我有一个二维数组,并且有一个函数可以读取该数组并将相应的“平铺”放置在2d空间中,这是为了更轻松地创建层。因此,我希望此函数执行的操作是创建这些精灵(我猜是用读取数组的for循环吗?)并将它们添加到组中,但这不起作用,因此我首先要提出一些问题:

1)可以在类init函数之外创建精灵吗?

2)什么是精灵,它是与rect耦合的表面吗?

3)最后,您对如何完成此工作有一个简单的想法:如果我给您一个二维数组,您将如何制作读取该数组并计算位置的函数(这很好,我想我已经知道了) out),最重要的是,使sprites超出给定的位置,然后可以将其添加到sprites组中。

提前致谢

懒惰

您可以在类的init函数之外创建精灵吗?

当然。

精灵到底是什么,它是与rect耦合的表面吗?

如果我们谈论pygame的Sprite课程:是的。

这样的精灵基本上是Surfaceimage属性)和Rectrect属性)。它们与pygame的Group一起使用效果最佳

最后,您对如何完成此工作有一个想法...。

只需创建一个嵌套循环即可遍历数组。

这是一个简单的例子:

import pygame
pygame.init()

TILESIZE = 64

class Actor(pygame.sprite.Sprite):
    def __init__(self, color, pos):
        super().__init__()
        self.image = pygame.Surface((TILESIZE, TILESIZE))
        self.image.fill(pygame.Color(color))
        self.rect = self.image.get_rect(topleft = pos)

def main():

    data = [
        '     YUB  ',
        '  G       ',
        '        B ',
        '          ',
        '   Y      ',
        '        U ',
    ]

    screen = pygame.display.set_mode((len(data[0]) * TILESIZE, len(data) * TILESIZE))
    sprites = pygame.sprite.Group()

    colors = {
        'G': 'green',
        'B': 'black',
        'Y': 'yellow',
        'U': 'dodgerblue'
    }

    x, y = 0, 0
    for line in data:
        for char in line:
            if char in colors:
                sprites.add(Actor(colors[char], (x * TILESIZE, y * TILESIZE)))
            x += 1
        x = 0
        y += 1

    while True:
        events = pygame.event.get()
        for event in events:
            if event.type == pygame.QUIT:
                pygame.quit()
                return

        sprites.update()

        screen.fill((100, 100, 100))
        sprites.draw(screen)

        pygame.display.flip()

main()

在此处输入图片说明

您可以在此处找到另一个示例

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章