下面是一个使用Python编写的简单的弹窗飞机大战游戏的示例代码:

import pygame
import random

# 初始化游戏
pygame.init()

# 设置游戏窗口大小
screen_width, screen_height = 480, 600
screen = pygame.display.set_mode((screen_width, screen_height))
pygame.display.set_caption("飞机大战")

# 加载背景图片
background = pygame.image.load("background.png")

# 加载玩家飞机图片
player_img = pygame.image.load("player.png")
player_rect = player_img.get_rect()
player_rect.centerx = screen_width // 2
player_rect.bottom = screen_height - 10

# 加载敌机图片
enemy_img = pygame.image.load("enemy.png")
enemies = []
enemy_speed = 1
enemy_interval = 50
last_enemy_time = pygame.time.get_ticks()

# 加载子弹图片
bullet_img = pygame.image.load("bullet.png")
bullets = []
bullet_speed = 3
bullet_interval = 200
last_bullet_time = pygame.time.get_ticks()

# 游戏循环
running = True
while running:
    # 处理事件
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    # 移动玩家飞机
    keys = pygame.key.get_pressed()
    if keys[pygame.K_LEFT]:
        player_rect.x -= 3
    if keys[pygame.K_RIGHT]:
        player_rect.x += 3
    if keys[pygame.K_UP]:
        player_rect.y -= 3
    if keys[pygame.K_DOWN]:
        player_rect.y += 3

    # 控制玩家飞机在游戏窗口内移动
    if player_rect.left < 0:
        player_rect.left = 0
    if player_rect.right > screen_width:
        player_rect.right = screen_width
    if player_rect.top < 0:
        player_rect.top = 0
    if player_rect.bottom > screen_height:
        player_rect.bottom = screen_height

    # 发射子弹
    current_time = pygame.time.get_ticks()
    if current_time - last_bullet_time > bullet_interval:
        last_bullet_time = current_time
        bullet_rect = bullet_img.get_rect()
        bullet_rect.centerx = player_rect.centerx
        bullet_rect.bottom = player_rect.top
        bullets.append(bullet_rect)

    # 移动子弹
    for bullet_rect in bullets:
        bullet_rect.y -= bullet_speed
        if bullet_rect.bottom < 0:
            bullets.remove(bullet_rect)

    # 生成敌机
    if current_time - last_enemy_time > enemy_interval:
        last_enemy_time = current_time
        enemy_rect = enemy_img.get_rect()
        enemy_rect.x = random.randint(0, screen_width - enemy_rect.width)
        enemy_rect.y = -enemy_rect.height
        enemies.append(enemy_rect)

    # 移动敌机
    for enemy_rect in enemies:
        enemy_rect.y += enemy_speed
        if enemy_rect.top > screen_height:
            enemies.remove(enemy_rect)

    # 检测子弹和敌机的碰撞
    for bullet_rect in bullets:
        for enemy_rect in enemies:
            if bullet_rect.colliderect(enemy_rect):
                bullets.remove(bullet_rect)
                enemies.remove(enemy_rect)

    # 绘制游戏界面
    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)

    # 更新屏幕显示
    pygame.display.flip()

# 退出游戏
pygame.quit()

请注意,上述代码中使用的图片文件需要与代码文件在同一目录下,并且命名为background.png、player.png、enemy.png和bullet.png。此外,你还可以根据自己的需求修改游戏窗口大小、飞机和子弹的速度、生成敌机的间隔等参数


原文地址: https://www.cveoy.top/t/topic/iwFC 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录