用python编写一个飞机大战的小游戏
时间: 2023-09-09 10:06:59 浏览: 257
Python编写飞机大战小游戏
3星 · 编辑精心推荐
好的,下面是一个简单的飞机大战小游戏的 Python 代码。这个游戏使用 Pygame 模块,需要先安装 Pygame 模块。
```python
import pygame
import random
# 初始化 Pygame
pygame.init()
# 游戏窗口大小
WINDOW_WIDTH = 480
WINDOW_HEIGHT = 800
# 创建游戏窗口
screen = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT))
# 游戏标题
pygame.display.set_caption('飞机大战')
# 载入游戏背景图片
bg_img = pygame.image.load('background.png')
# 载入玩家飞机图片
player_img = pygame.image.load('player.png')
# 玩家飞机初始位置
player_x = WINDOW_WIDTH // 2
player_y = WINDOW_HEIGHT - 100
# 玩家飞机移动速度
player_speed = 5
# 子弹图片
bullet_img = pygame.image.load('bullet.png')
# 子弹列表
bullets = []
# 子弹速度
bullet_speed = 10
# 敌机图片
enemy_img = pygame.image.load('enemy.png')
# 敌机列表
enemies = []
# 敌机速度
enemy_speed = 2
# 计分
score = 0
# 创建字体对象
font = pygame.font.Font(None, 36)
# 游戏主循环
while True:
# 处理游戏事件
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
exit()
# 获取键盘按键状态
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
player_x -= player_speed
if keys[pygame.K_RIGHT]:
player_x += player_speed
if keys[pygame.K_SPACE]:
# 发射子弹
bullets.append([player_x + 30, player_y - 20])
# 绘制游戏背景
screen.blit(bg_img, (0, 0))
# 绘制玩家飞机
screen.blit(player_img, (player_x, player_y))
# 绘制子弹
for bullet in bullets:
screen.blit(bullet_img, (bullet[0], bullet[1]))
bullet[1] -= bullet_speed
# 移除越界的子弹
bullets = [bullet for bullet in bullets if bullet[1] > -20]
# 添加敌机
if random.randint(1, 100) == 1:
enemies.append([random.randint(0, WINDOW_WIDTH - 50), -50])
# 绘制敌机
for enemy in enemies:
screen.blit(enemy_img, (enemy[0], enemy[1]))
enemy[1] += enemy_speed
# 移除越界的敌机
enemies = [enemy for enemy in enemies if enemy[1] < WINDOW_HEIGHT]
# 检测子弹是否击中敌机
for bullet in bullets:
for enemy in enemies:
if bullet[0] > enemy[0] and bullet[0] < enemy[0] + 50 and bullet[1] > enemy[1] and bullet[1] < enemy[1] + 50:
# 子弹击中敌机
bullets.remove(bullet)
enemies.remove(enemy)
score += 10
# 绘制分数
score_text = font.render('Score: ' + str(score), True, (255, 255, 255))
screen.blit(score_text, (10, 10))
# 更新屏幕
pygame.display.update()
# 游戏结束条件
if player_y < -50:
print('Game Over! Your score is', score)
pygame.quit()
exit()
for enemy in enemies:
if enemy[0] > player_x - 50 and enemy[0] < player_x + 50 and enemy[1] > player_y - 50 and enemy[1] < player_y + 50:
print('Game Over! Your score is', score)
pygame.quit()
exit()
```
这段代码实现了一个基本的飞机大战游戏,玩家使用左右方向键移动飞机,空格键发射子弹,击落敌机得分。游戏结束条件为玩家飞机撞到敌机或者飞出屏幕顶部。
阅读全文