以python初学者的身份写一个非常简单的飞机小游戏
时间: 2024-04-21 09:26:50 浏览: 11
好的,我可以为您提供一个简单的飞机小游戏示例。您可以在此基础上自行进行修改和扩展。
```python
import pygame
import random
# 初始化pygame
pygame.init()
# 设置游戏窗口大小
screen_width = 480
screen_height = 700
screen = pygame.display.set_mode((screen_width, screen_height))
# 加载背景图片
bg = pygame.image.load('images/background.png')
# 加载飞机图片
plane_img = pygame.image.load('images/plane.png')
plane_rect = plane_img.get_rect()
plane_width = plane_rect.width
plane_height = plane_rect.height
plane_x = (screen_width - plane_width) // 2
plane_y = screen_height - plane_height - 50
# 加载子弹图片
bullet_img = pygame.image.load('images/bullet.png')
bullet_rect = bullet_img.get_rect()
bullet_width = bullet_rect.width
bullet_height = bullet_rect.height
# 加载敌机图片
enemy_imgs = [
pygame.image.load('images/enemy1.png'),
pygame.image.load('images/enemy2.png'),
pygame.image.load('images/enemy3.png')
]
enemy_rects = [img.get_rect() for img in enemy_imgs]
enemy_widths = [rect.width for rect in enemy_rects]
enemy_heights = [rect.height for rect in enemy_rects]
# 设置游戏字体
font = pygame.font.Font(None, 36)
# 初始化游戏分数
score = 0
# 初始化子弹列表和敌机列表
bullets = []
enemies = []
# 游戏主循环
while True:
# 处理事件
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
exit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_SPACE:
# 发射子弹
bullet_x = plane_x + plane_width // 2 - bullet_width // 2
bullet_y = plane_y - bullet_height
bullets.append(pygame.Rect(bullet_x, bullet_y, bullet_width, bullet_height))
# 检测键盘事件
pressed_keys = pygame.key.get_pressed()
if pressed_keys[pygame.K_LEFT]:
plane_x -= 5
if pressed_keys[pygame.K_RIGHT]:
plane_x += 5
if pressed_keys[pygame.K_UP]:
plane_y -= 5
if pressed_keys[pygame.K_DOWN]:
plane_y += 5
# 控制飞机不出界
if plane_x < 0:
plane_x = 0
if plane_x > screen_width - plane_width:
plane_x = screen_width - plane_width
if plane_y < 0:
plane_y = 0
if plane_y > screen_height - plane_height:
plane_y = screen_height - plane_height
# 更新子弹位置
for bullet in bullets:
bullet.y -= 10
if bullet.y < -bullet_height:
bullets.remove(bullet)
# 添加敌机
if random.randint(1, 60) == 1:
enemy_img = random.choice(enemy_imgs)
enemy_rect = enemy_img.get_rect()
enemy_width = enemy_rect.width
enemy_height = enemy_rect.height
enemy_x = random.randint(0, screen_width - enemy_width)
enemy_y = -enemy_height
enemies.append(pygame.Rect(enemy_x, enemy_y, enemy_width, enemy_height))
# 更新敌机位置
for enemy in enemies:
enemy.y += 5
if enemy.y > screen_height:
enemies.remove(enemy)
# 检测子弹和敌机碰撞
for bullet in bullets:
for enemy in enemies:
if bullet.colliderect(enemy):
bullets.remove(bullet)
enemies.remove(enemy)
score += 10
# 绘制界面
screen.blit(bg, (0, 0))
screen.blit(plane_img, (plane_x, plane_y))
for bullet in bullets:
screen.blit(bullet_img, bullet)
for enemy in enemies:
enemy_img = enemy_imgs[enemy_rects.index(enemy)]
screen.blit(enemy_img, enemy)
score_text = font.render('Score: %d' % score, True, (255, 255, 255))
screen.blit(score_text, (10, 10))
pygame.display.update()
```
您可以将上述代码保存为一个文件,如`plane_game.py`,并在终端中运行该文件。游戏窗口将会打开,并且您可以通过方向键控制飞机的移动,空格键发射子弹。在游戏中,敌机将从屏幕上方不断进入,您需要尽可能地消灭它们并获得更高的分数。