位置:学校首页 > 学校动态>北京Python暑期培训班哪家比较专业
北京Python暑期培训班哪家比较专业?在北京想找Python培训机构小编推荐您可以到北京中公优就业了解一下!优就业是中公教育IT培训品牌,致力于培养面向互联网领域的人才,以学员就业为目的,优质就业为宗旨,为培养真正符合时代需求的IT人才,中公教育优就业以高瞻的视野,经多年布局,打造人才培训服务体系。以企业需求为导向,以行业未来为驱动,向企业和社会不断输送IT人才。
Pygame的基本使用——使用Sprites(精灵)类
Sprite表示精灵,是计算机图形学术语,指屏幕上可以移动的任何对象。当玩任何2D游戏时,在屏幕上看到的所有对象都是精灵。精灵可以设置动画,可以由玩家控制,甚至可以相互交互。
在游戏循环的更新和渲染部分,需要更新和渲染精灵,但是可以想象,如果游戏中包含大量精灵,那么游戏循环的这些部分可能会变得非常漫长而复杂。
Pygame为此提供了一个很好的解决方案:Sprite Group(精灵组)。
创建一个精灵组来容纳游戏中所有的精灵:
all_sprites=pygame.sprite.Group()
现在可以通过在游戏循环中添加以下内容来利用该精灵组:
#更新游戏
all_sprites.update()
#渲染
screen.fill(WHITE)
all_sprites.draw(screen)
对于创建的每个精灵,只需确保将其添加到all_sprites精灵组中,它将自动在游戏窗口上绘制并在每次循环中进行更新。
(1)创建精灵
现在开始创建个精灵。在Pygame中,精灵是对象。首先在template.py中定义精灵类Player,类中定义__init__()方法,其中每个精灵都必须有两个属性,分别是image(图像)和rect(矩形),并将其初始化:
class Player(pygame.sprite.Sprite):#继承pygame中的Sprite类
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.image=pygame.Surface((30,30))
self.image.fill(BLUE)
self.rect=self.image.get_rect()
self.rect.centerx=WIDTH/2
self.rect.centery=HEIGHT-30
其中,定义了图像属性——只是创建了一个简单的30*30的正方形,并用蓝色填充。还定义了矩形属性,get_rect()用于查看图像并计算将其包围的矩形。在Pygame中,可以使用矩形来跟踪对象的坐标,也可以使用矩形将对象放置在游戏窗口上的任意位置。
再创建第二个精灵,这是一个50*50的正方形,并用红色填充:
class Player1(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.image=pygame.Surface((50,50))
self.image.fill(RED)
self.rect=self.image.get_rect()
self.rect.centerx=WIDTH/2
self.rect.centery=HEIGHT/2
然后分别创建Player类的实例player和Player1类的实例player1,还需要将player和player1添加到all_sprites精灵组中:
all_sprites=pygame.sprite.Group()
player=Player()
player1=Player1()
all_sprites.add(player,player1)
较后进行渲染部分,在游戏循环的“screen.fill(WHITE)”代码下面添加如下代码:
all_sprites.draw(screen)
(2)移动精灵
游戏循环显示每一帧,如果需要移动精灵,那么需要在精灵类Player中添加update()方法来更新精灵的位置:
def update(self):
self.rect.x+=3
上述代码的update()方法很简单,就是使精灵矩形的x坐标增加3个像素,即向游戏窗口右边移动3个像素。每次游戏循环,都会调用update()方法,精灵会一直右移。但是这样有个缺点,当精灵移动到游戏窗口较右边时,就会消失不见。可以改动update()方法的代码,使得当精灵移动到较右边时,回到较左边继续移动:
def update(self):
self.rect.x+=3
if self.rect.left>WIDTH:
self.rect.right=0
同样,在Player1类中添加update()方法,使精灵矩形向游戏窗口左边移动2个像素,当精灵移动到较左边时,回到较右边继续移动:
def update(self):
self.rect.x-=2
if self.rect.left<0:
self.rect.right=WIDTH
all_sprites是一个精灵组,对该组进行更新,就是对组中每一个精灵进行更新。在游戏循环中,精灵组all_sprites调用update()方法,则组中每一个精灵将自动在游戏窗口上绘制并在每次循环中进行更新:
all_sprites.update()