《零基础入门学习Python》第090讲:Pygame:飞机大战1
不知道大家平时有没有玩过飞机大战的游戏,从这节课开始,我们就来实现一个飞机大战的游戏,具体要求如下:
游戏的基本设定:
敌方共有大中小3款飞机,分为高中低三种速度;
子弹的射程并非全屏,而大概是屏幕长度的80%;
消灭小飞机需要 1 发子弹,中飞机需要 8 发,大飞机需要 20 发子弹;
每消灭一架小飞机得1000分,中飞机6000分,大飞机10000分;
每个30秒有一个随机的道具补给,分为两种道具,全屏炸弹和双倍子弹;
全屏炸弹最多只能存放 3 枚,双倍子弹可以维持 18 秒钟的效果;
游戏将根据分数来逐步提高难度,难度的提高表现为 飞机数量的增多以及速度的加快;
为中飞机和大飞机增加了血槽的显示,这样我们可以直观的知道敌机快被消灭了没有;
我方有三次机会,每次被敌人消灭,新诞生的飞机会有 3 秒钟的安全期;
游戏结束后会显示历史最高分数。
现在我们就来从无到有,从简单到复杂一起来打造这个游戏吧。
首先,我们把可以独立分开的代码独立为一个一个的模块,如图所示:
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()
至此,我们游戏的背景和背景音乐就实现了。
大家可以先尝试着实现一下其它的功能,在这个过程中,你一定会遇到很多的问题,但是在解决这些问题的过程中,你必定会学习到更多的知识。
本文地址:https://blog.csdn.net/qq_41556318/article/details/85942920
推荐阅读
-
《零基础入门学习Python》【第一版】视频课后答案第002讲
-
《零基础入门学习Python》【第一版】视频课后答案第001讲
-
FishC《零基础学习python》笔记--第007、008讲、009讲:了不起的分支和循环1、2、3
-
零基础入门学习Python | 第003讲:插曲之变量和字符串
-
《零基础入门学习Python》第090讲:Pygame:飞机大战1
-
FishC《零基础学习python》笔记--第010讲、11讲、12讲:列表:一个打了激素的数组1、2、3
-
《零基础入门学习Python》【第一版】视频课后答案第002讲
-
《零基础入门学习Python》【第一版】视频课后答案第001讲
-
《零基础入门学习Python》第090讲:Pygame:飞机大战1