友情提示:380元/半年,儿童学编程,就上码丁实验室。
上节课我们学习了怎么使用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()
我们来看这段代码,意思是讲音乐加载到我们的程序里。每当空格键点击时,我们让计算机播放煽动翅膀的音乐。
这样我们的小鸟就可以煽动翅膀,发出声音了。下节课,我们学习怎么让我们的游戏世界动起来。
始发于简书:阿达老师