让pygame中的角色处于不同的层,即前面与后面的关系研究的源代码。关键地方有代码注释,让你一看就明白! 以下是部分代码预览:
""" 海星与山(分层角色)。 这个程序是关于角色的层设置的。 可以把角色都放在pygame.sprite.LayeredUpdates所实例化的同一个组。 但每个角色所在层可以不一样。 """ import pygame from random import * from pygame.locals import * class Sprite(pygame.sprite.Sprite): """ 继承自pygame角色类的Sprite类 本类只是测试pygame.sprite.LayeredUpdates类。 角色会从左到右不断地移动。 """ def __init__(self,image,pos,screen): pygame.sprite.Sprite.__init__(self) self.image = image self.rect = image.get_rect(center=pos) self.sw = screen.get_width() self.dx,self.dy = randint(1,10),0 def update(self): """ 更新角色坐标 """ self.rect.move_ip(self.dx,self.dy) if self.rect.left >= self.sw: self.rect.right = 0 def main(): """ 主要执行函数 """ pygame.init() width,height = 480,360 screen = pygame.display.set_mode((width,height)) pygame.display.set_caption("海星与山(分层角色)LayeredUpdates研究by李兴球") hill = pygame.image.load('山.png').convert_alpha() star = pygame.image.load('star.png').convert_alpha() group = pygame.sprite.LayeredUpdates() """pygame官网关于层的说明 If the sprite you add has an attribute layer then that layer will be used. If the **kwarg contains 'layer' then the sprites passed will be added to that layer (overriding the sprite.layer attribute). If neither sprite has attribute layer nor **kwarg then the default layer is used to add the sprites. 从上到下三个如果的翻译: 如果添加的角色有一个layer属性,那么这个属性会被使用 如果在添加的时候有关键词参数layer,那么角色会通过它的值得到所在的层,这会覆盖掉它自己的layer属性。 如果没有设置层,会被默认为缺省的0层。 """ 山 = Sprite(hill,(width//2-100,height-100),screen) 海星 = Sprite(star,(width//2,height-200),screen) group.add(山,layer=0) # 可以通过在这里设置角色所在的层 group.add(海星,layer=1) # 在这里设置的layer会覆盖自身层layer属性 clock = pygame.time.Clock() running = True while running: for event in pygame.event.get(): if event.type == QUIT:running=False group.update() screen.fill((0,125,198)) group.draw(screen) pygame.display.update() clock.tick(60) pygame.quit() if __name__ == "__main__": main()
下载完整源代码与素材,请
需要浏览更多吗?
成为会员后,登陆才能继续浏览!联系微信scratch8即可办理会员。
(会员专属:能浏览所有文章,下载所有带链接的Python资源。)