鱼C论坛

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

Python

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

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

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

x
用Python写双人飞机大战游戏代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

  1. import pygame
  2. from pygame.locals import *
  3. import random

  4. # 初始化pygame
  5. pygame.init()

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

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

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

  16. # 玩家子弹列表和敌机列表
  17. bullets = []
  18. enemies = []

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

  29.     # 移动玩家飞机
  30.     keys_pressed = pygame.key.get_pressed()
  31.     if keys_pressed[K_LEFT] and player_rect.left > 0:
  32.         player_rect.left -= 5
  33.     if keys_pressed[K_RIGHT] and player_rect.right < screen_width:
  34.         player_rect.left += 5
  35.     if keys_pressed[K_UP] and player_rect.top > 0:
  36.         player_rect.top -= 5
  37.     if keys_pressed[K_DOWN] and player_rect.bottom < screen_height:
  38.         player_rect.top += 5

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

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

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

  54.     # 碰撞检测
  55.     for bullet in bullets:
  56.         for enemy in enemies:
  57.             if bullet.colliderect(enemy):
  58.                 bullets.remove(bullet)
  59.                 enemies.remove(enemy)
  60.                 break

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

  68.     # 更新界面
  69.     pygame.display.update()
复制代码


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

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

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

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

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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-23 21:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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