这是一个基本的飞机大战的代码,仅供参考:

import pygame
import random

# 初始化Pygame
pygame.init()

# 设置窗口大小和标题
WIDTH, HEIGHT = 500, 600
win = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption('飞机大战')

# 加载背景图和玩家飞机图
bg = pygame.image.load('background.png')
player = pygame.image.load('player.png')

# 设置玩家飞机的初始位置和速度
player_x, player_y = 220, 500
player_speed = 5

# 定义敌机类
class Enemy:
    def __init__(self, x, y, speed):
        self.x = x
        self.y = y
        self.speed = speed
        self.image = pygame.image.load('enemy.png')
        self.rect = self.image.get_rect()

    def move(self):
        self.y += self.speed

# 定义子弹类
class Bullet:
    def __init__(self, x, y, speed):
        self.x = x
        self.y = y
        self.speed = speed
        self.image = pygame.image.load('bullet.png')
        self.rect = self.image.get_rect()

    def move(self):
        self.y -= self.speed

# 定义玩家飞机发射子弹的函数
def fire():
    bullet = Bullet(player_x + 25, player_y - 30, 10)
    bullets.append(bullet)

# 定义检测碰撞的函数
def collide(obj1, obj2):
    if obj1.rect.colliderect(obj2.rect):
        return True
    else:
        return False

# 创建敌机和子弹的列表
enemies = []
bullets = []

# 设置游戏帧率
clock = pygame.time.Clock()
FPS = 60

# 游戏循环
running = True
while running:

    # 设置游戏帧率
    clock.tick(FPS)

    # 处理事件
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_SPACE:
                fire()

    # 移动玩家飞机
    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 < WIDTH - 50:
        player_x += player_speed

    # 移动敌机和子弹,检测碰撞
    for enemy in enemies:
        enemy.move()
        if enemy.y > HEIGHT:
            enemies.remove(enemy)
        if collide(enemy, player):
            running = False
        for bullet in bullets:
            if collide(bullet, enemy):
                bullets.remove(bullet)
                enemies.remove(enemy)
    for bullet in bullets:
        bullet.move()
        if bullet.y < 0:
            bullets.remove(bullet)

    # 生成敌机
    if random.randint(1, 60) == 1:
        enemy_x = random.randint(0, WIDTH - 50)
        enemy_y = -50
        enemy_speed = random.randint(2, 5)
        enemy = Enemy(enemy_x, enemy_y, enemy_speed)
        enemies.append(enemy)

    # 绘制背景图、玩家飞机、敌机和子弹
    win.blit(bg, (0, 0))
    win.blit(player, (player_x, player_y))
    for enemy in enemies:
        win.blit(enemy.image, (enemy.x, enemy.y))
    for bullet in bullets:
        win.blit(bullet.image, (bullet.x, bullet.y))

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

# 退出Pygame
pygame.quit()

需要注意的是,这只是一个基本的代码框架,可以根据需要进行修改和完善。例如,可以添加音效、分数、游戏结束界面等功能。

飞机大战游戏代码示例 - Python 实现

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

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