adsl9999 发表于 2024-1-26 13:42:33

Python

用Python写双人飞机大战游戏代码

FishC 发表于 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 and player_rect.left > 0:
      player_rect.left -= 5
    if keys_pressed and player_rect.right < screen_width:
      player_rect.left += 5
    if keys_pressed and player_rect.top > 0:
      player_rect.top -= 5
    if keys_pressed 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 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: Python