如何在循环中修改x坐标以实现PyGame精灵的横向排列?
解决Pygame田野图片重叠问题
你的问题出在循环内部重复初始化x变量——每次循环都会把x重置为50,导致所有Field实例的x坐标都是50,最终全部重叠在一起。
修复方案一:将x初始化移到循环外
把x的初始值定义在循环外面,每次循环后累加偏移量,这样每次创建的Field都会使用更新后的x坐标:
camera = pygame.sprite.Group() x = 50 y = 200 for i in range(6): Field((x, y), camera) x += 200
修复方案二:利用循环变量计算位置
更简洁的方式是直接用循环的索引i来计算每个Field的x坐标,避免手动维护x变量:
camera = pygame.sprite.Group() y = 200 for i in range(6): # 初始x + 索引*间距 x = 50 + i * 200 Field((x, y), camera)
额外提示:路径转义问题
注意你的图片路径使用了单斜杠\,在Python中这会被视为转义字符,可能导致图片加载失败。可以改用原始字符串或者双斜杠:
# 原始字符串(前面加r) self.image = pygame.image.load(r'C:\Users\*****\Documents\Python\BuildATown\graphics\field.png').convert_alpha() # 或者双斜杠转义 self.image = pygame.image.load('C:\\Users\\*****\\Documents\\Python\\BuildATown\\graphics\\field.png').convert_alpha()
内容的提问来源于stack exchange,提问作者Cookie Man
相关产品推荐
相关产品推荐

