
import pygame |
import random |
# 初始化游戏 |
pygame.init() |
screen = pygame.display.set_mode((400, 600)) |
pygame.display.set_caption("飞机大战") |
# 加载图片资源 背景图,玩家飞机,子弹,敌人飞机 |
background = pygame.image.load("bg.png") |
player_img = pygame.image.load("player.png") |
bullet_img = pygame.image.load("bullet.png") |
enemy_img = pygame.image.load("enemy.png") |
# 设置游戏对象 |
player_x = 200 |
player_y = 500 |
player_speed = 5 |
player_rect = player_img.get_rect() |
player_rect.x = player_x |
player_rect.y = player_y |
bullets = [] |
enemies = [] |
for i in range(5): |
enemy_x = random.randint(50, 350) |
enemy_y = random.randint(-200, -50) |
enemy_speed = random.randint(1, 3) |
enemy_rect = enemy_img.get_rect() |
enemy_rect.x = enemy_x |
enemy_rect.y = enemy_y |
enemies.append((enemy_rect, enemy_speed)) |
score = 0 |
font = pygame.font.Font(None, 36) |
# 游戏循环 |
while True: |
# 处理事件 |
for event in pygame.event.get(): |
if event.type == pygame.QUIT: |
pygame.quit() |
quit() |
elif event.type == pygame.KEYDOWN: |
if event.key == pygame.K_LEFT: |
player_x -= player_speed |
elif event.key == pygame.K_RIGHT: |
player_x += player_speed |
elif event.key == pygame.K_SPACE: |
bullet_x = player_x + player_rect.width // 2 |
bullet_y = player_y |
bullet_rect = bullet_img.get_rect() |
bullet_rect.x = bullet_x |
bullet_rect.y = bullet_y |
bullets.append(bullet_rect) |
# 更新游戏状态 |
for bullet_rect in bullets: |
bullet_rect.y -= 5 |
if bullet_rect.y < -bullet_rect.height: |
bullets.remove(bullet_rect) |
for enemy_rect, enemy_speed in enemies: |
enemy_rect.y += enemy_speed |
if enemy_rect.y > screen.get_height(): |
enemy_rect.x = random.randint(50, 350) |
enemy_rect.y = random.randint(-200, -50) |
enemy_speed = random.randint(1, 3) |
enemies[enemies.index((enemy_rect, enemy_speed))] = (enemy_rect, enemy_speed) |
elif enemy_rect.colliderect(player_rect): |
pygame.quit() |
quit() |
else: |
for bullet_rect in bullets: |
if enemy_rect.colliderect(bullet_rect): |
bullets.remove(bullet_rect) |
enemy_rect.x = random.randint(50, 350) |
enemy_rect.y = random.randint(-200, -50) |
enemy_speed = random.randint(1, 3) |
enemies[enemies.index((enemy_rect, enemy_speed))] = (enemy_rect, enemy_speed) |
score += 1 |
player_rect.x = player_x |
player_rect.y = player_y |
# 绘制游戏界面 |
screen.blit(background, (0, 0)) |
screen.blit(player_img, player_rect) |
for bullet_rect in bullets: |
screen.blit(bullet_img, bullet_rect) |
for enemy_rect, _ in enemies: |
screen.blit(enemy_img, enemy_rect) |
score_text = font.render("得分:"+str(score), True, (255, 255, 255)) |
screen.blit(score_text, (10, 10)) |
# 更新 |
pygame.display.update() |



