用PYTHON写个飞机大战的小游戏
时间: 2023-10-06 18:08:52 浏览: 78
好的,下面是一个简单的飞机大战小游戏的代码,你可以在Python中运行它:
```python
import pygame
import random
# 初始化Pygame
pygame.init()
# 游戏窗口的尺寸
WINDOW_WIDTH = 480
WINDOW_HEIGHT = 800
# 定义颜色
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
RED = (255, 0, 0)
# 创建游戏窗口
game_window = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT))
# 设置窗口标题
pygame.display.set_caption('飞机大战')
# 加载背景图片
bg_image = pygame.image.load('background.png').convert()
# 加载玩家飞机图片
player_image = pygame.image.load('player.png').convert_alpha()
# 加载敌人飞机图片
enemy_image = pygame.image.load('enemy.png').convert_alpha()
# 设置玩家飞机的初始位置
player_x = WINDOW_WIDTH // 2 - player_image.get_width() // 2
player_y = WINDOW_HEIGHT - player_image.get_height() - 50
# 设置敌人飞机的初始位置
enemy_x = random.randint(0, WINDOW_WIDTH - enemy_image.get_width())
enemy_y = -enemy_image.get_height()
# 定义玩家飞机的移动速度
player_speed = 5
# 定义敌人飞机的移动速度
enemy_speed = 3
# 定义子弹的速度
bullet_speed = 10
# 定义玩家飞机的子弹
player_bullet_list = []
# 定义敌人飞机的子弹
enemy_bullet_list = []
# 定义分数
score = 0
# 创建字体对象
font = pygame.font.SysFont(None, 36)
# 游戏主循环
while True:
# 处理游戏事件
for event in pygame.event.get():
if event.type == pygame.QUIT:
# 退出游戏
pygame.quit()
quit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
# 玩家飞机向左移动
player_x -= player_speed
if event.key == pygame.K_RIGHT:
# 玩家飞机向右移动
player_x += player_speed
if event.key == pygame.K_SPACE:
# 玩家飞机发射子弹
player_bullet_list.append([player_x + player_image.get_width() // 2, player_y])
# 绘制背景
game_window.blit(bg_image, (0, 0))
# 绘制玩家飞机
game_window.blit(player_image, (player_x, player_y))
# 绘制敌人飞机
game_window.blit(enemy_image, (enemy_x, enemy_y))
# 移动敌人飞机
enemy_y += enemy_speed
# 判断敌人飞机是否超出窗口
if enemy_y > WINDOW_HEIGHT:
# 重新生成敌人飞机
enemy_x = random.randint(0, WINDOW_WIDTH - enemy_image.get_width())
enemy_y = -enemy_image.get_height()
# 绘制玩家飞机的子弹
for bullet in player_bullet_list:
pygame.draw.rect(game_window, WHITE, [bullet[0], bullet[1], 2, 10])
# 移动子弹
bullet[1] -= bullet_speed
# 判断子弹是否打中敌人飞机
if bullet[1] < enemy_y + enemy_image.get_height() and bullet[0] > enemy_x and bullet[0] < enemy_x + enemy_image.get_width():
# 增加分数
score += 1
# 重新生成敌人飞机
enemy_x = random.randint(0, WINDOW_WIDTH - enemy_image.get_width())
enemy_y = -enemy_image.get_height()
# 删除子弹
player_bullet_list.remove(bullet)
# 绘制敌人飞机的子弹
for bullet in enemy_bullet_list:
pygame.draw.rect(game_window, RED, [bullet[0], bullet[1], 2, 10])
# 移动子弹
bullet[1] += bullet_speed
# 判断子弹是否打中玩家飞机
if bullet[1] > player_y and bullet[0] > player_x and bullet[0] < player_x + player_image.get_width():
# 游戏结束
pygame.quit()
quit()
# 发射敌人飞机的子弹
if random.randint(0, 100) == 0:
enemy_bullet_list.append([enemy_x + enemy_image.get_width() // 2, enemy_y + enemy_image.get_height()])
# 绘制分数
score_text = font.render('Score: ' + str(score), True, WHITE)
game_window.blit(score_text, (10, 10))
# 刷新游戏窗口
pygame.display.update()
# 控制游戏帧率
pygame.time.Clock().tick(60)
```
在运行游戏之前,你需要在同级目录下创建三个图片文件:background.png、player.png 和 enemy.png,分别作为游戏的背景、玩家飞机和敌人飞机的图片。
阅读全文