微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么瓷砖不出现pygame

如何解决为什么瓷砖不出现pygame

我有一个瓦片地图,它使所有 (<)?\b(?!someNumber|anotherNumber)\b\w+Number(?(1)>|=)\d+ 都是一个瓦片,而整个外层是 1 的。但是,当我运行我的代码时,磁贴只出现在屏幕顶部。既然我到处都是 1,它们不应该出现在整个地图上吗?

1

我做错了什么?

解决方法

让我们关注这部分代码:

    def __init__(self,data):
        self.tile_list = []

        #load images
        dirt_img = pygame.image.load('dirt.png')
        for row in data:
            row_count = 0
            col_count = 0
            for tile in row:
                if tile == 1:
                    img = pygame.transform.scale(dirt_img,(tile_size,tile_size))
                    img_rect = img.get_rect()
                    img_rect.x = col_count * tile_size
                    img_rect.y = row_count * tile_size
                    tile = (img,img_rect)
                    self.tile_list.append(tile)
                col_count += 1
            row_count += 1

如您所见,您有一个嵌套的 for 循环;在外部 for 循环的每次迭代期间,您将 row_countcol_count 的值都设置为 0

因此,无论您在每次迭代结束时将 row_count 增加多少次,for 在内部 1 循环中被调用时都将始终保持为零外部 for 循环,因为它只是在外部 0 循环的每次迭代开始时重新设置为 for

只需将 row_count = 0 移出并高于外部 for 循环:

    def __init__(self,data):
        self.tile_list = []

        #load images
        dirt_img = pygame.image.load('dirt.png')
        row_count = 0
        for row in data:
            col_count = 0
            for tile in row:
                if tile == 1:
                    img = pygame.transform.scale(dirt_img,img_rect)
                    self.tile_list.append(tile)
                col_count += 1
            row_count += 1

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。