打地鼠的游戏规则相信大家都知道,这里就不多介绍了,反正就是不停地拿锤子打洞里钻出来的地鼠~
首先,让我们确定一下游戏中有哪些元素。打地鼠打地鼠,地鼠当然得有啦,那我们就写个地鼠的游戏精灵类:
'''地鼠'''
class Mole(pygame.sprite.Sprite):
def __init__(self, image_paths, position, **kwargs):
pygame.sprite.Sprite.__init__(self)
self.images = [pygame.transform.scale(pygame.image.load(image_paths[0]), (101, 103)),
pygame.transform.scale(pygame.image.load(image_paths[-1]), (101, 103))]
self.image = self.images[0]
self.rect = self.image.get_rect()
self.mask = pygame.mask.from_surface(self.image)
self.setPosition(position)
self.is_hammer = False
'''设置位置'''
def setPosition(self, pos):
self.rect.left, self.rect.top = pos
'''设置被击中'''
def setBeHammered(self):
self.is_hammer = True
'''显示在屏幕上'''
def draw(self, screen):
if self.is_hammer: self.image = self.images[1]
screen.blit(self.image, self.rect)
'''重置'''
def reset(self):
self.image = self.images[0]
self.is_hammer = False
显然,地鼠有被锤子击中和未被锤子击中这两种状态,所以需要加载两张图,当地鼠被击中时从未被击中的地鼠状态图切换到被击中后的地鼠状态图(ps:图可能不像地鼠)。
然后我们再来定义一下锤子这个游戏精灵类,和地鼠类似,锤子也有未锤下去和已锤下去两种状态,只不过锤下去之后需要迅速恢复回未锤下去的状态,具体而言,代码实现如下:
class Hammer(pygame.sprite.Sprite):
def __init__(self, image_paths, position, **kwargs):
pygame.sprite.Sprite.__init__(self)
self.images = [pygame.image.load(image_paths[0]), pygame.image.load(image_paths[1])]
self.ima