python像素鸟游戏

本文详细介绍了使用Python和Pygame库实现像素鸟游戏的过程。游戏包括背景音乐、小鸟飞行控制、碰撞检测、分数计算等功能。文章还讲解了游戏的模块化设计,包括main模块、Bird模块和Tubing模块。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、引言

本次论文主要是基于对像素鸟游戏的研究。
像素鸟是一款风靡一时的小游戏,这款游戏架构简单,可以通过不同的编程语言去实现。近段时间学了python这门编程语言。于是突发奇想用python去实现这款游戏。
该程序主要实现的功能有:双击运行程序,播放背景音乐。出现游戏界面,通过不断按下键盘上面的 ↑ 键,使得小鸟飞行。每次按下 ↑ 键,就会播放小鸟翅膀挥舞的声音。通过小鸟的飞行,越过障碍物(管子),可以得到分数。每越过一个障碍物就可以得到一分。如果小鸟与障碍物发生碰撞,或者小鸟飞出游戏界面,那么就会播放gameover的声音,同时停止游戏,出现游戏结束界面。在游戏界面界面,你会看到历史最高分和你的分数,如果你的分数高于历史最高分,将会被记录在record.txt文件中。同时,在游戏结束界面有两个图片按钮,你可以通过点击鼠标左键来选择重新开始游戏或者是结束游戏。

2、系统结构

2.1 总体结构

在这里插入图片描述
本程序主要分成了3个模块,main模块是主函数模块,Bird模块是小鸟对象模块继承了(sprite),Tubing模块是管子对象模块也继承了(sprite)

2.2 局部结构

2.2.1 main模块结构

在这里插入图片描述
main模块中主要实现加载背景图片,加载游戏中需要的音乐。判断小鸟精灵和管子组精灵是否发生碰撞,实现小鸟按键飞行,播放音乐。绘制游戏结束后的界面以及按键事件、鼠标点击事件、与退出事件。

2.2.2 Bird模块结构

在这里插入图片描述
Bird模块主要实现关于小鸟对象的图片加载(__init__函数),小鸟显示的位置(__init__函数),小鸟的飞翔(fly函数),小鸟的下降(drop函数)

2.2.3 Tubing模块结构

在这里插入图片描述
Tubing模块主要实现了上面的管子(Tubing_up类)和下面的管子(Tubing_down类)的图片加载(__init__函数)、管子显示的位置(__init__函数)、管子的移动(move函数)

3、代码实现

先导入pygame模块,初始化pygame

import pygame
pygame.init()

创建游戏窗口,设置游戏窗口标题

bg_size = width,height = 903,495
view = pygame.display.set_mode(bg_size)
pygame.display.set_caption("像素鸟小游戏")

加载背景图片、背景音乐、绘制背景图片在游戏窗口上显示、播放背景音乐

import sys

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

#加载背景音乐
pygame.mixer.music.load("music/主界面BGM.mp3")

#加载背景图片
background = pygame.image.load("image/BGM.png").convert()

def main():

    #finish定义游戏是否结束(结束则为True)
    finish = False

    #开始循环播放背景音乐
    pygame.mixer.music.play(-1)
    while True:
        
        #如果点击了关闭事件就退出程序
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                sys.exit()

        #如果游戏还没结束
        if finish == False:

            #绘制背景图片
            view.blit(background,(0,0))

        #如果游戏已经结束,停止背景音乐的播放,绘制游戏结束后的界面
        if finish == True:
            pygame.mixer.music.stop()

        #更新界面
        pygame.display.flip()
        #延迟10毫秒
        pygame.time.delay(10)


if __name__ == "__main__":
    main()

新建一个模块实现小鸟对象

import pygame

#继承Sprite精灵类,方便用于碰撞检测
class Bird(pygame.sprite.Sprite):
        def __init__(self,bg_size):
                pygame.sprite.Sprite.__init__(self)

                #加载图片
                self.img1 = pygame.image.load("image/bird1.png").convert_alpha()
                self.img2 = pygame.image.load("image/bird2.png").convert_alpha()
                self.img3 = pygame.image.load("image/bird3.png").convert_alpha()

                #设置小鸟的初始位置为窗口1/4、高度1/2的位置
                self.width, self.height = bg_size[0], bg_size[1]
                self.rect = self.img1.get_rect()
                self.rect.left, self.rect.top = self.width // 4, self.height // 2

                #设置小鸟的初速度、加速度、路程、时间
                self.v = 20
                self.g = 2
                self.s = 0
                self.t = 0.2

        #小鸟向下飞行的方法
        def drop(self):
                self.v = self.v-self.g*self.t
                self.s = self.v*self.t - 0.5*self.g*self.t*self.t
                self.rect.top = self.rect.top-self.s

        #小鸟向上飞行的方法
        def fly(self):
                self.v = 10

在主函数里面绘制小鸟,并实现小鸟的下落和按键后小鸟飞翔,以及小鸟飞翔挥动翅膀的声音

import Bird

#加载小鸟挥动翅膀的声音、小鸟撞击的声音
wings_sound = pygame.mixer.Sound("music/翅膀声.wav")
crash_sound = pygame.mixer.Sound("music/me_down.wav")

def main():
    #设置小鸟飞行挥动翅膀图片的切换flag
    change = 1
    #创建一个小鸟对象
    bird = Bird.Bird(bg_size)

    while True:

        #如果游戏还没结束
        if finish == False:
            
            #如果小鸟飞行超过上边界或者超过下边界,就播放撞击音乐,把finish置为True,表示程序结束
            if bird.rect.top < 0 or bird.rect.bottom > width:
                crash_sound.play()
                finish = True

            #切换小鸟飞行图片,以达到小鸟挥动翅膀的效果
            if change % 3 == 
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值