鱼C论坛

 找回密码
 立即注册
查看: 876|回复: 1

Python

[复制链接]
发表于 2024-1-26 13:42:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
用Python写双人飞机大战游戏代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-1-26 13:44:19 | 显示全部楼层
当然可以!下面是一个简单的示例,展示了如何使用Python编写一个双人飞机大战游戏:
import pygame
from pygame.locals import *
import random

# 初始化pygame
pygame.init()

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

# 加载玩家飞机图片
player_image = pygame.image.load("player.png")
player_rect = player_image.get_rect()
player_rect.topleft = (screen_width / 2, screen_height - player_rect.height - 10)

# 加载敌机图片
enemy_image = pygame.image.load("enemy.png")

# 玩家子弹列表和敌机列表
bullets = []
enemies = []

# 游戏主循环
while True:
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()
        elif event.type == KEYDOWN:
            if event.key == K_SPACE:
                bullet = pygame.Rect(player_rect.left + player_rect.width / 2 - 2, player_rect.top - 10, 4, 10)
                bullets.append(bullet)

    # 移动玩家飞机
    keys_pressed = pygame.key.get_pressed()
    if keys_pressed[K_LEFT] and player_rect.left > 0:
        player_rect.left -= 5
    if keys_pressed[K_RIGHT] and player_rect.right < screen_width:
        player_rect.left += 5
    if keys_pressed[K_UP] and player_rect.top > 0:
        player_rect.top -= 5
    if keys_pressed[K_DOWN] and player_rect.bottom < screen_height:
        player_rect.top += 5

    # 移动子弹
    for bullet in bullets:
        bullet.top -= 10
        if bullet.top < 0:
            bullets.remove(bullet)

    # 生成敌机
    if len(enemies) < 10 and random.randint(0, 50) == 0:
        enemy_rect = enemy_image.get_rect()
        enemy_rect.topleft = (random.randint(0, screen_width - enemy_rect.width), 0)
        enemies.append(enemy_rect)

    # 移动敌机
    for enemy in enemies:
        enemy.top += 3
        if enemy.top > screen_height:
            enemies.remove(enemy)

    # 碰撞检测
    for bullet in bullets:
        for enemy in enemies:
            if bullet.colliderect(enemy):
                bullets.remove(bullet)
                enemies.remove(enemy)
                break

    # 绘制背景、玩家飞机、敌机和子弹
    screen.fill((0, 0, 0))
    screen.blit(player_image, player_rect)
    for enemy in enemies:
        screen.blit(enemy_image, enemy)
    for bullet in bullets:
        pygame.draw.rect(screen, (255, 255, 255), bullet)

    # 更新界面
    pygame.display.update()

在代码中,我们使用了pygame库来处理游戏窗口、图像和事件。首先,我们初始化了pygame,然后设置了游戏窗口的大小。接下来,加载了玩家飞机和敌机的图片,并将它们显示在窗口中。

游戏主循环会一直运行,直到玩家退出游戏。在循环中,我们处理了玩家的键盘事件,例如移动飞机和发射子弹。我们还更新了子弹和敌机的位置,并进行碰撞检测。

最后,我们使用pygame的绘图函数绘制了背景、玩家飞机、敌机和子弹,并通过`pygame.display.update()`更新了游戏窗口。

需要注意的是,代码中使用的图片文件(player.png和enemy.png)需要与代码文件放在同一个目录下。你可以使用任何你喜欢的图片来代替它们,只需将文件名修改为对应的名称即可。

希望这个示例能帮助你开始编写你自己的双人飞机大战游戏!祝你成功!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-22 03:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表