最新消息:

少儿编程课堂|python – 使用pygame做个flappy brid-2

Python 少儿编程 1685浏览 0评论

上节课我们学习了怎么使用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()

 

我们来看这段代码,意思是讲音乐加载到我们的程序里。每当空格键点击时,我们让计算机播放煽动翅膀的音乐。

这样我们的小鸟就可以煽动翅膀,发出声音了。下节课,我们学习怎么让我们的游戏世界动起来。

 

 

始发于简书:阿达老师

您必须 登录 才能发表评论!