
import pygame
FPS = 60 # 每秒更新游戏画面的频率
WIDTH = 500 # 窗口宽度
HEIGHT = 600 # 窗口高度
GREEN = (54, 173, 35)
# 游戏初始化
pygame.init()
screen = pygame.display.set_mode((WIDTH, HEIGHT)) # 游戏窗口
pygame.display.set_caption("飞机大战") # 窗口标题
clock = pygame.time.Clock() # 设定时钟,为了控制游戏更新画面频率
running = True
# 精灵类游戏角色类
class Player(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.Surface((86, 20)) # 精灵图片
self.image.fill(GREEN)
self.rect = self.image.get_rect() # 定位精灵位置,坐标
self.rect.centerx = WIDTH / 2 # 位置 X轴中间
self.rect.bottom = HEIGHT - 10 # 位置 窗口底部-10
self.speedx = 4 # 控制精灵移动速度
# self.rect.center =(WIDTH/2,HEIGHT/2) 在画布中央
def update(self):
key_pressed = pygame.key.get_pressed() # 监听键盘,按下键返回ture,否flase
if key_pressed[pygame.K_RIGHT]: # 键盘方向键右键 pygame.K_a 键盘A键
self.rect.x += self.speedx
if key_pressed[pygame.K_LEFT]: # 键盘方向键左键
self.rect.x -= self.speedx
# 触碰窗口左右两边边界判断
if self.rect.right > WIDTH:
self.rect.right = WIDTH
if self.rect.left < 0:
self.rect.left = 0
# 多游戏角色
all_sprites = pygame.sprite.Group()
player = Player()
all_sprites.add(player) # 加入游戏群组
# 主游戏循环
while running:
clock.tick(FPS) # FPS一秒更新几次画面
# 鼠标键盘实践监听,回传列表
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# 更新游戏
all_sprites.update() # 执行游戏精灵群组里每个物件的update函数
# 显示
screen.fill((255, 0, 0)) # RGB 红绿蓝(0-255)
all_sprites.draw(screen) # 将游戏群组里精灵画出来
pygame.display.update()
pygame.quit()