接着昨天的程序继续写下去,昨天我们已经绘制了好了挡板并且实现了挡板对键盘的响应使之能够根据按键进行移动。今天我们开始绘制砖块。那么大概的思路是将所有砖块定义为精灵,然后全部添加进一个精灵组里面。这样方便后面去做砖块和球的冲突判断。
这里我使用了surface.subsurface(rect)这个方法,给砖块进行贴图。我们先绘制一个砖块,来看看代码功能是否正常。其实代码非常简单。
class Block(Sprite):
def __init__(self,screen):
super().__init__()
self.screen = screen
self.image = pygame.image.load('Block.png')
self.rect = self.image.get_rect()
self.frame_rect = self.rect.copy()
self.frame_rect.width = self.frame_rect.width / 4
self.frame_rect.height = self.frame_rect.height / 2
self.rect = self.frame_rect
self.frame = 0
self.last_frame = 7
def update(self):
self.block_image = self.image.subsurface(self.frame_rect)
def blitme(self):
self.screen.blit(self.block_image,self.rect)
好了让我们来看看效果怎么样?
看起来效果还不错。
那么接下来要做的就是将砖块放入精灵组中,并且将砖块排列好。
这里我用的是数组对砖块进行排列。
其实这里我用的还是一种比较原始的方法,这个在后面有很大的优化空间。首先我来定义一个数组,这个数组用来规划砖块的摆放。其中的数字代表当前砖块的帧,也就是