小球精灵类
精灵:
在游戏开发中,在游戏中显示的图片,皆可称为精灵。通常,精灵表示游戏中所有运动的部分。
比如 :敌人,子弹,英雄,云彩等等
sprite类:
在pygame中,提供了一个精灵类Sprite,我们可以封装一个精灵继承自Sprite类,这样可以更方便的操作精灵。
# Sprite 精灵
class Ball(pygame.sprite.Sprite):
def __init__(self, screen):
# 这个精灵的初始化方法 必须调用
pygame.sprite.Sprite.__init__(self)
# 图片 注意精灵的图片对象 必须起名字为image
self.image = pygame.image.load('./feiji/zidan.png')
# 根据图片image获取矩形的对象 对象比如起名为rect
self.rect = self.image.get_rect() # rect属性:矩形
# 小球在屏幕上的x,y坐标
self.rect.topleft = [0, 100] # 矩形左上角坐
# 窗口
self.screen = screen
# 速度
self.speed = 3
def key_control(self):
"""
按键的监听 用来移动精灵
"""
# 监听键盘事件 键盘一直按下
key_pressed = pygame.key.get_pressed() # 注意这种方式是能够检测到连续按下的
# 改变飞机坐标 512, 768
if key_pressed[pygame.K_w] or key_pressed[pygame.K_UP]:
self.rect.top -= self.speed
if key_pressed[pygame.K_s] or key_pressed[pygame.K_DOWN]:
self.rect.bottom += self.speed
if key_pressed[pygame.K_a] or key_pressed[pygame.K_LEFT]:
self.rect.left -= self.speed
if key_pressed[pygame.K_d] or key_pressed[pygame.K_RIGHT]:
self.rect.right += self.speed
if key_pressed[pygame.K_SPACE]:
# 按下空格键
print('空格')
def update(self):
"""调用小球的更新方法,实现小球位置更新"""
self.key_control()
self.display()
def display(self):
"""显示飞机到窗口"""
self.screen.blit(self.image, self.rect)
# 子弹精灵
class Bullet(pygame.sprite.Sprite):
def __init__(self, screen):
pygame.sprite.Sprite.__init__(self)
# 坐标
# 图片
self.image = pygame.image.load('./feiji/bullet_1.png') # 9*21
self.rect = self.image.get_rect() # rect属性:矩形
self.rect.topleft = [200, 200] # 矩形左上角坐
# 窗口
self.screen = screen
# 速度
self.speed = 3
def update(self):
self.auto_move()
self.display()
def auto_move(self):
# 修改子弹坐标
self.rect.bottom += self.speed
# 如果子弹移出屏幕上方,则销毁子弹对象
if self.rect.bottom > 480:
self.speed = -self.speed
if self.rect.top < 0:
self.speed = -self.speed
def display(self):
"""显示飞机到窗口"""
self.screen.blit(self.image, self.rect)