第090讲: Pygame:飞机大战1 | 学习记录(小甲鱼零基础入门学习Python)

从这节课开始,我们将逐渐完成并实现一个飞机大战的游戏,具体要求如下:

游戏的基本设定

1、敌方共有大中小3款飞机,分别为高中低三中速度,自己还可以设置一个游戏等级窗口,来改变自己刚开始进入游戏时难度等级;
2、子弹的射程并非全屏,而大概是屏幕长度的80%;
3、消灭飞机需要1发子弹,中飞机需要8发子弹,大飞机需要20发子弹;
4、每消灭一架飞机得1000分,中飞机4000分,打飞机10000分;
5、每隔30秒有一个随机的道具补给,分为两种道具,全屏炸弹和双倍子弹;
6、全屏炸弹最多只能存放3枚,双倍子弹可以维持时间为18秒;
7、游戏将根据分数来逐渐提高难度。难度的提高表现为飞机数量的增多以及速度的加快。

对游戏做的改进
1、(自己思考,之后写入:可以写几个高分榜,每次飞机死亡后,让玩家输入自己的姓名,然后排入高分榜;但是因为初始难度的不同,所以高分榜暂定要分为3个榜单)

2、为中飞机和打飞机增加了血槽的显示,这样我们可以直观的知道敌机快被消灭了没有;
3、我方有三次机会,每次被敌人消灭后,新诞生的飞机有3秒钟的安全期;
4、游戏结束后会显示历史最高分,

这节课我们先来把背景图片和背景音乐加载进去,其中背景音乐要循环播放。

循环播放只需要设置 pygame.mixer.music.play(-1) 将其中的值设为 -1即可

这个过程没有难度,直接上代码了

from pygame.locals import *
from random import *
import traceback
import tkinter as tk
import pygame
import math
import sys

def main() :
    pygame.init()   #初始化
    pygame.mixer.init()     #混音器初始化

    clock = pygame.time.Clock()     #设置一个计时器

    """载入音乐文件"""
    #背景音乐
    pygame.mixer.music.load(r"D:\Code\Python\Pygame\pygame11:飞机大战1\sound\game_music.ogg")  #设置背景音乐
    pygame.mixer.music.set_volume(1)  #设置音量

    #游戏音效
    bullet_music = r"D:\Code\Python\Pygame\pygame11:飞机大战1\sound\bullet.wav"  #子弹特效
    button_music = r"D:\Code\Python\Pygame\pygame11:飞机大战1\sound\button.wav"    #按键特效
    enemy1_down_music = r"D:\Code\Python\Pygame\pygame11:飞机大战1\sound\enemy1_down.wav"    #低等敌机被击毁音效
    enemy2_down_music = r"D:\Code\Python\Pygame\pygame11:飞机大战1\sound\enemy2_down.wav"    #中等敌机被击毁音效
    enemy3_down_music = r"D:\Code\Python\Pygame\pygame11:飞机大战1\sound\enemy3_down.wav"    #高等敌机被击毁音效
    enemy3_fly_music = r"D:\Code\Python\Pygame\pygame11:飞机大战1\sound\enemy3_flying.wav"    #高等敌机出现音效
    get_bomb_music = r"D:\Code\Python\Pygame\pygame11:飞机大战1\sound\get_bomb.wav"    #获得全屏炸弹补给音效
    get_bullet_music = r"D:\Code\Python\Pygame\pygame11:飞机大战1\sound\get_bullet.wav"    #获得双倍子弹补给音效
    me_down_music = r"D:\Code\Python\Pygame\pygame11:飞机大战1\sound\me_down.wav"    #自身飞机被击毁(死亡)音效
    supply_music = r"D:\Code\Python\Pygame\pygame11:飞机大战1\sound\supply.wav"    #补给产生音效
    upgrade_music = r"D:\Code\Python\Pygame\pygame11:飞机大战1\sound\upgrade.wav"    #升级音效
    use_bomb_music = r"D:\Code\Python\Pygame\pygame11:飞机大战1\sound\use_bomb.wav"    #使用全屏炸弹音效

    """图片文件路径"""
    again_image = r"D:\Code\Python\Pygame\pygame11:飞机大战1\images\again.png"   #重新开始图片路径
    background_image = r"D:\Code\Python\Pygame\pygame11:飞机大战1\images\background.png"  #背景图的路径
    
    #设置背景
    bg_size = width , height = 430 , 700       #背景大小
    screen = pygame.display.set_mode(bg_size)   #这是背景大小
    background = pygame.image.load(background_image).convert_alpha()       #画背景
    pygame.mixer.music.play(-1)     #播放背景音乐,-1 表示无限循环播放

    while True :
        for event in pygame.event.get() :
            if event.type == QUIT :
                sys.exit()
        
        screen.blit(background,(0,0))   #绘制背景
        

        pygame.display.flip()   #不停的刷新画面,不停的绘画

        clock.tick(60)     #设置帧率


if __name__ == "__main__":
    # 这样做的好处是双击打开时如果出现异常可以报告异常,而不是一闪而过!
    try:
        main()
    except SystemExit: #这是按下 × 的异常,直接忽略
        pass
    except:
        traceback.print_exc()
        pygame.quit()
        input()

第090讲: Pygame:飞机大战1 | 学习记录(小甲鱼零基础入门学习Python)_第1张图片

你可能感兴趣的:(第090讲: Pygame:飞机大战1 | 学习记录(小甲鱼零基础入门学习Python))