Python 使用循环创建同一图像的多个实例,是否可以独立移动图像的每个实例?
我在pygame中有一个图像,该图像的多个实例在for循环中调用。有没有一种方法可以独立地移动图像的每个实例,而不用按原样移动代码中的其他实例?或者我必须单独加载图像的单独实例吗Python 使用循环创建同一图像的多个实例,是否可以独立移动图像的每个实例?,python,pygame,Python,Pygame,我在pygame中有一个图像,该图像的多个实例在for循环中调用。有没有一种方法可以独立地移动图像的每个实例,而不用按原样移动代码中的其他实例?或者我必须单独加载图像的单独实例吗 def pawn(self): y_pos = 100 self.image = pygame.transform.scale(pygame.image.load('pawn.png'), (100,100)) for x_pos in range(0,8,1): pieceN
def pawn(self):
y_pos = 100
self.image = pygame.transform.scale(pygame.image.load('pawn.png'), (100,100))
for x_pos in range(0,8,1):
pieceNum = x_pos
screen.blit(self.image, (x_pos*100, y_pos))
我建议使用和:
创建一个派生自pygame.sprite.sprite
的类:
classmysprite(pygame.sprite.sprite):
定义初始(自我、图像、位置x、位置y):
super()。\uuuu init\uuuuu()
self.image=image
self.rect=self.image.get_rect()
self.rect.topleft=(位置x,位置y)
加载图像
image=pygame.transform.scale(pygame.image.load('pawn.png'),(100100))
创建精灵列表
imageList=[MySprite(图像,x位置*100100)用于范围(0,8,1)内的x位置]
并创建一个精灵组:
group=pygame.sprite.group(imageList)
组的精灵可以通过绘制。
(screen
是由pygame.display.set_mode()
创建的曲面):
group.draw(屏幕)
精灵的位置可以通过更改.rect
属性的位置来更改(请参阅)
e、 g
imageList[0]。rect=imageList[0]。rect.move(move\u x,move\u y)
当然,移动可以通过classMySprite
的方法完成:
e、 g
classmysprite(pygame.sprite.sprite):
# [...]
def移动(自身、移动x、移动y):
self.rect=self.rect.move(move_x,move_y)
imageList[1]。移动(01100)
非常感谢,解释得很好!非常感谢。:)