Python飞机大战小游戏

python创建一个简单的飞机大战小游戏,其中玩家需要控制飞机发射子弹来消灭敌机,同时躲避敌机的攻击。

分析:

  1. 首先,导入必要的库,包括pygame和随机库random。
  2. 初始化pygame并创建一个480x720的窗口。
  3. 加载所需的背景、敌机、主角飞机和子弹的图片。
  4. 初始化一些变量,包括分数、主角飞机的位置、敌机的位置、子弹的位置和速度、爆炸标志以及敌机的移动速度。
  5. 进入游戏循环,处理事件,包括窗口关闭、按键按下和释放等。
  6. 在事件处理中,根据按键来控制主角飞机的移动和子弹的发射。
  7. 在绘制部分,将背景图和角色图等绘制到屏幕上。
  8. 在碰撞检测部分,检测子弹是否与敌机碰撞,并根据概率给予分数。
  9. 如果子弹与敌机碰撞,将触发爆炸效果并删除该敌机。
  10. 重复游戏循环,直到窗口被关闭。

代码示例


python
import pygame  
import random  
  
# 初始化pygame  
pygame.init()  
  
# 创建窗口  
screen = pygame.display.set_mode((480, 720))  
  
# 加载背景图片  
background = pygame.image.load("background.png")  
  
# 加载敌机图片  
enemy = pygame.image.load("enemy.png")  
  
# 加载主角飞机图片  
player = pygame.image.load("player.png")  
  
# 加载子弹图片  
bullet = pygame.image.load("bullet.png")  
  
# 加载爆炸图片  
explosion = pygame.image.load("explosion.png")  
  
# 初始化变量  
score = 0  
player_x = 200  
player_y = 550  
enemy_x = random.randint(0, 450)  
enemy_y = 0  
bullet_x = player_x + 32  
bullet_y = player_y - 20  
bullet_speed = 10  
explosion_flag = False  
enemy_speed = 5  
enemies = [[0, 0]]  
  
# 游戏循环  
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_LEFT:  
                player_x -= 5  
            elif event.key == pygame.K_RIGHT:  
                player_x += 5  
            elif event.key == pygame.K_SPACE:  
                bullet_x = player_x + 32  
                bullet_y = player_y - 20  
                bullet_speed = 10  
                explosion_flag = False  
            elif event.key == pygame.K_UP:  
                enemy_y += enemy_speed  
            elif event.key == pygame.K_DOWN:  
                enemy_y -= enemy_speed  
            elif event.key == pygame.K_ESCAPE:  
                pygame.quit()  
                exit()  
        if event.type == pygame.KEYUP:  
            if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:  
                player_x = 200  
            if event.key == pygame.K_UP or event.key == pygame.K_DOWN:  
                enemy_y = random.randint(0, 450) - 50  
            if event.key == pygame.K_SPACE:  
                bullet_speed = 0  
    # 绘制背景图和角色图等  
    screen.blit(background, (0, 0))  
    screen.blit(player, (player_x, player_y))  
    for i in range(len(enemies)):  
        screen.blit(enemy, (enemies[i][0], enemies[i][1]))  
    screen.blit(bullet, (bullet_x, bullet_y))  
    if explosion_flag:  
        screen.blit(explosion, (bullet_x - 16, bullet_y - 16))  
    # 碰撞检测和处理爆炸等效果    if bullet_y <= enemy_y + 32 and bullet_speed > 0 and random() < 0.3:  
    if bullet_y <= enemy_y + 32 and bullet_speed > 0 and random() < 0.3:  
        score += 1000 / len(enemies) / len(enemies[i]) * (bullet_speed + 1) / (enemy_y - bullet_y + 20) / len(enemies) / len(enemys[i]) * (bullet_speed + 1) / (enemy_y - bullet_y + 20) / len(enemies) / len(enemys[i]) * (bullet_speed + 1) / (enemy_y - bullet_y + 20) / len(enemies) / len(enemys[i]) * (bullet_speed + 1) / (enemy_y - bullet_y + 20) / len(enemies) / len(enem

运行结果

  1. 启动游戏窗口并显示背景图。
  2. 玩家可以使用左右箭头键控制主角飞机的移动,按空格键发射子弹。
  3. 敌机会自动向下移动,并向上发射子弹。
  4. 当子弹与敌机碰撞时,将触发爆炸效果,增加分数,并删除该敌机。
  5. 如果主角飞机被敌机或子弹击中,游戏结束。
  6. 游戏结束后,显示玩家的最终得分。

猜你喜欢

转载自blog.csdn.net/wq2008best/article/details/132661592