上节课我们学习了怎么使用pygame做一个简单的动画,还使用pygame做了flappy brid的第一个画面。这节课我们学习怎么让小鸟煽动翅膀动起来,怎么给游戏加背景音乐。
在进入本节编程之前,我们先看看动画是怎么制作的。
https://www.bilibili.com/video/av17828118?spm_id_from=333.338.__bofqi.12
上面视频演示了动画的制作过程。我们首先将一帧帧定格图片画好,然后快速的将图片迭代替换,由于我们眼镜的视觉停留,动画就形成了。
了解完动画原理之后,我们就用程序实现让小鸟煽动翅膀的效果。先上本节课代码
import sys
import pygame
from pygame.locals import *
screenWidth = 288
screenHeight = 512
pygame.init()
pygame.display.set_caption('Flappy Bird')
fpsClock = pygame.time.Clock()
screen = pygame.display.set_mode((screenWidth, screenHeight))
playerImageList = ['../assets/sprites/redbird-upflap.png',
'../assets/sprites/redbird-midflap.png',
'../assets/sprites/redbird-downflap.png', ]
background = pygame.image.load('../assets/sprites/background-day.png').convert()
playerList = [pygame.image.load(playerImageList[0]).convert_alpha(),
pygame.image.load(playerImageList[1]).convert_alpha(),
pygame.image.load(playerImageList[2]).convert_alpha()]
wing_sounds = pygame.mixer.Sound('../assets/audio/wing.ogg')
playerX = int(screenWidth * 0.2)
playerY = int((screenHeight - playerList[0].get_height()) / 2)
playerIndex = 0
while True:
screen.blit(background, (0, 0))
playerIndex = (playerIndex + 1) % 3
screen.blit(playerList[playerIndex], (playerX, playerY))
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
if event.type == KEYDOWN and event.key == K_SPACE:
playerY = playerY - 20
wing_sounds.play()
pygame.display.update()
fpsClock.tick(60)
相比上节课,我们的代码多了这样几行:
playerList = [pygame.image.load(playerImageList[0]).convert_alpha(),
pygame.image.load(playerImageList[1]).convert_alpha(),
pygame.image.load(playerImageList[2]).convert_alpha()]
playerIndex = (playerIndex + 1) % 3
screen.blit(playerList[playerIndex], (playerX, playerY))
我们把小鸟的图片从原来的一张图片(单个字符串)改为了playerList三张图片(集合)。在while循环中,我们增加了一个playerIndex变量,这个变量的作用是在每次循环渲染小鸟角色时从playerList 取对应坐标的图片。这样在我们的游戏运行过程中,小鸟就可以煽动翅膀了。
接下来,我们加上翅膀煽动的声音。看代码:
wing_sounds = pygame.mixer.Sound('../assets/audio/wing.ogg')
if event.type == KEYDOWN and event.key == K_SPACE:
playerY = playerY - 20
wing_sounds.play()
我们来看这段代码,意思是讲音乐加载到我们的程序里。每当空格键点击时,我们让计算机播放煽动翅膀的音乐。
这样我们的小鸟就可以煽动翅膀,发出声音了。下节课,我们学习怎么让我们的游戏世界动起来。