欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

《零基础入门学习Python》第090讲:Pygame:飞机大战1

程序员文章站 2022-06-28 14:58:39
不知道大家平时有没有玩过飞机大战的游戏,从这节课开始,我们就来实现一个飞机大战的游戏,具体要求如下:游戏的基本设定:敌方共有大中小3款飞机,分为高中低三种速度;子弹的射程并非全屏,而大概是屏幕长度的80%;消灭小飞机需要 1 发子弹,中飞机需要 8 发,大飞机需要 20 发子弹;每消灭一架小飞机得1000分,中飞机6000分,大飞机10000分;每个30秒有一个随机的道具......

不知道大家平时有没有玩过飞机大战的游戏,从这节课开始,我们就来实现一个飞机大战的游戏,具体要求如下:

游戏的基本设定:

敌方共有大中小3款飞机,分为高中低三种速度;

子弹的射程并非全屏,而大概是屏幕长度的80%;

消灭小飞机需要 1 发子弹,中飞机需要 8 发,大飞机需要 20 发子弹;

每消灭一架小飞机得1000分,中飞机6000分,大飞机10000分;

每个30秒有一个随机的道具补给,分为两种道具,全屏炸弹和双倍子弹;

全屏炸弹最多只能存放 3 枚,双倍子弹可以维持 18 秒钟的效果;

游戏将根据分数来逐步提高难度,难度的提高表现为 飞机数量的增多以及速度的加快;

为中飞机和大飞机增加了血槽的显示,这样我们可以直观的知道敌机快被消灭了没有;

我方有三次机会,每次被敌人消灭,新诞生的飞机会有 3 秒钟的安全期;

游戏结束后会显示历史最高分数。

现在我们就来从无到有,从简单到复杂一起来打造这个游戏吧。

首先,我们把可以独立分开的代码独立为一个一个的模块,如图所示:

《零基础入门学习Python》第090讲:Pygame:飞机大战1

main.py:就是主程序;

bullet.py:就是子弹,子弹有两种,单发和双发;

enemy.py:就是敌机,共有大中小三种,并且都有不同的属性;

myplane.py:就是我的飞机;

supply.py:就是补给和装备;

record.txt:保存的最高分;

三个文件夹就是需要的素材。

现在我们就开始写代码了:

首先是我们的 main 模块:

import pygame
import sys
import traceback #为了更好地退出

from pygame.locals import *

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

bg_size = width, height = 480, 700
screen = pygame.display.set_mode(bg_size)
pygame.display.set_caption("飞机大战 -- Python Demo")

background = pygame.image.load("images/background.png").convert()

# 载入游戏音乐
pygame.mixer.music.load("sound/game_music.ogg")
pygame.mixer.music.set_volume(0.2)
bullet_sound = pygame.mixer.Sound("sound/bullet.wav")
bullet_sound.set_volume(0.2)
bomb_sound = pygame.mixer.Sound("sound/use_bomb.wav")
bomb_sound.set_volume(0.2)
supply_sound = pygame.mixer.Sound("sound/supply.wav")
supply_sound.set_volume(0.2)
get_bomb_sound = pygame.mixer.Sound("sound/get_bomb.wav")
get_bomb_sound.set_volume(0.2)
get_bullet_sound = pygame.mixer.Sound("sound/get_bullet.wav")
get_bullet_sound.set_volume(0.2)
upgrade_sound = pygame.mixer.Sound("sound/upgrade.wav")
upgrade_sound.set_volume(0.2)
enemy3_fly_sound = pygame.mixer.Sound("sound/enemy3_flying.wav")
enemy3_fly_sound.set_volume(0.2)
enemy1_down_sound = pygame.mixer.Sound("sound/enemy1_down.wav")
enemy1_down_sound.set_volume(0.2)
enemy2_down_sound = pygame.mixer.Sound("sound/enemy2_down.wav")
enemy2_down_sound.set_volume(0.2)
enemy3_down_sound = pygame.mixer.Sound("sound/enemy3_down.wav")
enemy3_down_sound.set_volume(0.5)
me_down_sound = pygame.mixer.Sound("sound/me_down.wav")
me_down_sound.set_volume(0.2)

def main():
        pygame.mixer.music.play(-1)

        clock = pygame.time.Clock()

        running = True

        while running:
                for event in pygame.event.get():
                        if event.type == QUIT:
                                pygame.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()

                

《零基础入门学习Python》第090讲:Pygame:飞机大战1

至此,我们游戏的背景和背景音乐就实现了。

大家可以先尝试着实现一下其它的功能,在这个过程中,你一定会遇到很多的问题,但是在解决这些问题的过程中,你必定会学习到更多的知识。

本文地址:https://blog.csdn.net/qq_41556318/article/details/85942920