添加精灵
This commit is contained in:
parent
f229b5fd96
commit
7569f54a58
65
飞机大战.py
65
飞机大战.py
|
@ -2,4 +2,67 @@ import random
|
|||
import time
|
||||
|
||||
import pygame
|
||||
from pygame.constants import *
|
||||
from pygame.constants import *
|
||||
|
||||
# Sprite 精灵
|
||||
class HeroPlane(pygame.sprite.Sprite):
|
||||
# 存放所有飞机的子弹的组
|
||||
bullets = pygame.sprite.Group()
|
||||
|
||||
def __init__(self, screen):
|
||||
# 这个精灵的初始化方法 必须调用
|
||||
pygame.sprite.Sprite.__init__(self)
|
||||
# 图片
|
||||
self.image = pygame.image.load('./feiji/hero1.png')
|
||||
# 根据图片image获取矩形的对象
|
||||
self.rect = self.image.get_rect() # rect属性:矩形
|
||||
self.rect.topleft = [Manager.bg_size[0] / 2 - 100 / 2, 600] # 矩形左上角坐
|
||||
# 窗口
|
||||
self.screen = screen
|
||||
# 速度
|
||||
self.speed = 15
|
||||
# pygame.sprite.Group()生成一个放精灵的对象 类似一个列表
|
||||
self.bullets = pygame.sprite.Group()
|
||||
|
||||
def key_control(self):
|
||||
"""
|
||||
按键的监听 用来改变飞机坐标
|
||||
"""
|
||||
# 监听键盘事件 键盘一直按下
|
||||
key_pressed = pygame.key.get_pressed() # 注意这种方式是能够检测到连续按下的,比之前的版本要新
|
||||
|
||||
# 改变飞机坐标
|
||||
if key_pressed[K_w] or key_pressed[K_UP]:
|
||||
self.rect.top -= self.speed
|
||||
if key_pressed[K_s] or key_pressed[K_DOWN]:
|
||||
self.rect.bottom += self.speed
|
||||
if key_pressed[K_a] or key_pressed[K_LEFT]:
|
||||
self.rect.left -= self.speed
|
||||
if key_pressed[K_d] or key_pressed[K_RIGHT]:
|
||||
self.rect.right += self.speed
|
||||
if key_pressed[K_SPACE]:
|
||||
# 按下空格键 发射一枚子弹 把飞机的坐标传入子弹
|
||||
bullet = Bullet(self.screen, self.rect.left, self.rect.top)
|
||||
# 把子弹放到列表里
|
||||
self.bullets.add(bullet)
|
||||
# 存放所有飞机的子弹的组
|
||||
HeroPlane.bullets.add(bullet)
|
||||
|
||||
# 调用飞机的更新方法
|
||||
def update(self):
|
||||
self.key_control()
|
||||
self.display()
|
||||
|
||||
def display(self):
|
||||
"""显示飞机到窗口"""
|
||||
self.screen.blit(self.image, self.rect)
|
||||
# 更新子弹坐标
|
||||
self.bullets.update()
|
||||
|
||||
# 把所有的子弹全部添加到屏幕
|
||||
self.bullets.draw(self.screen)
|
||||
|
||||
@classmethod
|
||||
def clear_bullets(cls):
|
||||
# 清空子弹
|
||||
cls.bullets.empty()
|
||||
|
|
Loading…
Reference in New Issue