用python写一个飞机大战的小游戏 完整代码
时间: 2023-12-07 19:32:34 浏览: 115
好的,我可以提供一个简单的飞机大战游戏的代码示例,帮助您入门。
首先,您需要安装 pygame 库来实现游戏界面和游戏逻辑的编写。您可以通过以下命令在终端中安装 pygame 库:
```
pip install pygame
```
然后,您可以使用以下代码实现一个简单的飞机大战游戏:
```python
import pygame
import random
# 初始化 Pygame 库
pygame.init()
# 设置游戏界面大小
screen = pygame.display.set_mode((480, 700))
# 设置游戏标题
pygame.display.set_caption("飞机大战")
# 加载背景图片
bg = pygame.image.load("background.png")
# 加载飞机图片
plane = pygame.image.load("plane.png")
plane_rect = plane.get_rect()
plane_rect.centerx = 240
plane_rect.bottom = 680
# 加载子弹图片
bullet = pygame.image.load("bullet.png")
bullet_rect = bullet.get_rect()
# 加载敌机图片
enemy = pygame.image.load("enemy.png")
enemy_rect = enemy.get_rect()
# 设置字体
font = pygame.font.Font(None, 36)
# 设置游戏状态
game_over = False
# 设置子弹列表
bullet_list = []
# 设置敌机列表
enemy_list = []
# 设置敌机速度
enemy_speed = 5
# 设置敌机生成间隔
enemy_interval = 100
# 设置得分
score = 0
# 设置游戏循环
while not game_over:
# 处理游戏事件
for event in pygame.event.get():
if event.type == pygame.QUIT:
game_over = True
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_SPACE:
# 发射子弹
bullet_rect.centerx = plane_rect.centerx
bullet_rect.bottom = plane_rect.top
bullet_list.append(bullet_rect.copy())
# 绘制背景
screen.blit(bg, (0, 0))
# 移动飞机
keys_pressed = pygame.key.get_pressed()
if keys_pressed[pygame.K_UP]:
plane_rect.top -= 5
if keys_pressed[pygame.K_DOWN]:
plane_rect.bottom += 5
if keys_pressed[pygame.K_LEFT]:
plane_rect.centerx -= 5
if keys_pressed[pygame.K_RIGHT]:
plane_rect.centerx += 5
# 绘制飞机
screen.blit(plane, plane_rect)
# 移动子弹
for bullet_rect in bullet_list:
bullet_rect.bottom -= 10
screen.blit(bullet, bullet_rect)
# 移动敌机
for enemy_rect in enemy_list:
enemy_rect.top += enemy_speed
screen.blit(enemy, enemy_rect)
# 判断敌机是否与飞机相撞
if enemy_rect.colliderect(plane_rect):
game_over = True
# 判断子弹是否击中敌机
for bullet_rect in bullet_list:
if bullet_rect.colliderect(enemy_rect):
score += 10
enemy_list.remove(enemy_rect)
bullet_list.remove(bullet_rect)
# 生成敌机
enemy_interval -= 1
if enemy_interval == 0:
enemy_rect = enemy.get_rect()
enemy_rect.left = random.randint(0, 480 - enemy_rect.width)
enemy_rect.top = -enemy_rect.height
enemy_list.append(enemy_rect)
enemy_interval = 100
# 显示得分
score_text = font.render("得分:" + str(score), True, (255, 255, 255))
screen.blit(score_text, (10, 10))
# 更新游戏界面
pygame.display.update()
# 游戏结束,退出 Pygame 库
pygame.quit()
```
在这个示例中,我们定义了游戏界面大小为 480x700,加载了背景图片、飞机图片、子弹图片和敌机图片,并设置了字体等游戏元素。然后,我们通过 while 循环来处理游戏事件和绘制游戏界面,在其中实现了飞机、子弹和敌机的移动、碰撞检测等游戏逻辑。最后,我们使用 Pygame 库的 display 模块来更新游戏界面,直到游戏结束。
请注意,这只是一个简单的示例,您可以根据需要对其进行修改和扩展,以实现更复杂的游戏逻辑和更丰富的游戏体验。
阅读全文