当然!下面我将为你展示如何使用 Pygame 编写一个简单的飞机射击游戏。

import pygame
import random

# 初始化 Pygame
pygame.init()

# 设置窗口大小
screen_width, screen_height = 800, 600
screen = pygame.display.set_mode((screen_width, screen_height))
pygame.display.set_caption('飞机射击游戏')

# 加载游戏资源
player_img = pygame.image.load('player.png')
enemy_img = pygame.image.load('enemy.png')
bullet_img = pygame.image.load('bullet.png')
bullet_sound = pygame.mixer.Sound('bullet.wav')
explosion_sound = pygame.mixer.Sound('explosion.wav')
background_music = pygame.mixer.music.load('background.mp3')

# 播放背景音乐
pygame.mixer.music.play(-1)

# 定义颜色
white = (255, 255, 255)

# 定义玩家飞机参数
player_width = 64
player_height = 64
player_x = screen_width // 2 - player_width // 2
player_y = screen_height - player_height - 10
player_speed = 5

# 定义敌机参数
enemy_width = 64
enemy_height = 64
enemy_x = random.randint(0, screen_width - enemy_width)
enemy_y = random.randint(50, 150)
enemy_speed = 3

# 定义子弹参数
bullet_width = 32
bullet_height = 32
bullet_x = 0
bullet_y = screen_height - player_height - 10
bullet_speed = 10
bullet_state = 'ready'

# 定义得分
score_value = 0
font = pygame.font.Font('freesansbold.ttf', 32)
text_x = 10
text_y = 10

# 显示得分
def show_score(x, y):
    score = font.render('得分: ' + str(score_value), True, white)
    screen.blit(score, (x, y))

# 显示玩家飞机
def show_player(x, y):
    screen.blit(player_img, (x, y))

# 显示敌机
def show_enemy(x, y):
    screen.blit(enemy_img, (x, y))

# 发射子弹
def fire_bullet(x, y):
    global bullet_state
    bullet_state = 'fire'
    screen.blit(bullet_img, (x + player_width // 2 - bullet_width // 2, y - bullet_height))

# 检测碰撞
def is_collision(enemy_x, enemy_y, bullet_x, bullet_y):
    distance = ((enemy_x - bullet_x) ** 2 + (enemy_y - bullet_y) ** 2) ** 0.5
    if distance < 27:
        return True
    else:
        return False

# 游戏主循环
running = True
clock = pygame.time.Clock()

while running:
    clock.tick(60)

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

        # 监听键盘事件
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_SPACE and bullet_state == 'ready':
                bullet_sound.play()
                bullet_x = player_x
                fire_bullet(bullet_x, bullet_y)

    # 移动玩家飞机
    keys = pygame.key.get_pressed()
    if keys[pygame.K_LEFT] and player_x > 0:
        player_x -= player_speed
    if keys[pygame.K_RIGHT] and player_x < screen_width - player_width:
        player_x += player_speed

    # 移动敌机
    enemy_x += enemy_speed
    if enemy_x <= 0 or enemy_x >= screen_width - enemy_width:
        enemy_speed *= -1
        enemy_y += enemy_height

    # 移动子弹
    if bullet_y <= 0:
        bullet_y = screen_height - player_height - 10
        bullet_state = 'ready'
    if bullet_state == 'fire':
        fire_bullet(bullet_x, bullet_y)
        bullet_y -= bullet_speed

    # 检测碰撞
    collision = is_collision(enemy_x, enemy_y, bullet_x, bullet_y)
    if collision:
        explosion_sound.play()
        bullet_y = screen_height - player_height - 10
        bullet_state = 'ready'
        score_value += 1
        enemy_x = random.randint(0, screen_width - enemy_width)
        enemy_y = random.randint(50, 150)

    # 填充背景色
    screen.fill((0, 0, 0))

    # 显示得分和飞机
    show_score(text_x, text_y)
    show_player(player_x, player_y)
    show_enemy(enemy_x, enemy_y)

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

# 退出游戏
pygame.quit()

请确保你在同一目录下有 player.pngenemy.pngbullet.pngbullet.wavexplosion.wavbackground.mp3 这些游戏资源文件。

这是一个简单的飞机射击游戏,玩家飞机可以通过键盘左右键来控制左右移动,并使用空格键发射子弹。目标是射击敌机并获得尽可能高的得分。游戏会在玩家的飞机与敌机发生碰撞时结束。

你可以根据自己的需要对游戏进行修改和扩展,比如增加更多的敌机、增加游戏关卡、增加道具等。希望这个例子能帮助你开始编写一个飞机射击游戏!如果你有其他问题,我会很乐意回答。

Python Pygame 飞机射击游戏教程:从零开始编写你的第一个游戏

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

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