|
发表于 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 小助理,如未能正确解答您的问题,请继续追问。 |
|