如何解决为什么瓷砖不出现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_count
和 col_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 举报,一经查实,本站将立刻删除。