iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >怎么用python实现flappy bird游戏
  • 589
分享到

怎么用python实现flappy bird游戏

2023-06-25 12:06:30 589人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

本篇内容介绍了“怎么用python实现flappy bird游戏”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!程序大概流程:1.加载图片素材

本篇内容介绍了“怎么用python实现flappy bird游戏”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

程序大概流程:1.加载图片素材文件 2.绘画开始界面,等待程序开始(按空格) 3 .程序刷新,不断while 循环(a.随机生成柱子,并移动,然后绘制 b.小鸟自下落 c.检测键盘方向按键) 4.程序结束,绘制结束界面,把分数记录到txt文件

# -*- coding: utf-8 -*-"""Created on Thu Dec 15 00:27:17 2016BY LINJUNJI SYSU 1360622136@qq.com"""import pygamefrom sys import exitimport randomfrom pygame.locals import *from pygame.font import *  from gamerole import *import osimport datetimeimport numpy as npimport operator#图片路径信息BackGround_image_path2='./sources/background/day.png'          #背景图片BackGround_image_path3='./sources/background/night.png'GetStart_image_path='./sources/guide/day/down.png'           #开始界面GameOver_image_path='./sources/other/gameover.png'Restart_image_path='./sources/other/restart.png'Grade_blackball_path='./sources/other/grade_blackball.png'white_Gold_Medal_image_path='./sources/medal/white_gold_medal.png'  #奖牌图片gold_image_path='./sources/medal/gold_medal.png'silver_medal_image_path='./sources/medal/silver_medal.png'bronze_medal_image_path='./sources/medal/bronze_medal.png'Ground_image_path='./sources/background/ground.png'         #地面图片pilar_image_up_path='./sources/pilar/up.png'                #柱子图片pilar_image_down_path='./sources/pilar/down.png'Bird_image1_path='./sources/bird/up.png'                   #小鸟图片Bird_image2_path='./sources/bird/med.png'Bird_image3_path='./sources/bird/down.png'#游戏窗体设置pygame.init()screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))pygame.display.set_caption('falppy_bird') #图片载入      background_day=pygame.image.load(BackGround_image_path2)background_night=pygame.image.load(BackGround_image_path3)ground=pygame.image.load(Ground_image_path)pilar_image_up=pygame.image.load(pilar_image_up_path)pilar_image_down=pygame.image.load(pilar_image_down_path)get_start_image=pygame.image.load(GetStart_image_path)gameover_image=pygame.image.load(GameOver_image_path)medal_blackball_image=pygame.image.load(Grade_blackball_path)restart_image=pygame.image.load(Restart_image_path)bird_images=[]bird_image_up=pygame.image.load(Bird_image1_path)bird_image_med=pygame.image.load(Bird_image2_path)bird_image_down=pygame.image.load(Bird_image3_path)bird_images.append(bird_image_up)bird_images.append(bird_image_med)bird_images.append(bird_image_down)medal_images=[]medal1=pygame.image.load(white_gold_Medal_image_path)medal2=pygame.image.load(gold_image_path)medal3=pygame.image.load(silver_medal_image_path)medal4=pygame.image.load(bronze_medal_image_path)medal_images.append(medal1)medal_images.append(medal2)medal_images.append(medal3)medal_images.append(medal4)#新建小鸟bird_pos=[190,190]  #小鸟初始位置mybird=Bird(bird_images,bird_pos)#柱子集合pilar_set = pygame.sprite.Group()#运行参数设置pilar_frequency=0  #柱子更新参数bird_frequency=0   #小鸟飞行频率clock = pygame.time.Clock()running=Falsescore=0flag=1def collide_circle(pilar, mybird):  #碰撞检测函数    if mybird.rect.right > pilar.pilar1_rect.left and mybird.rect.left < pilar.pilar1_rect.right:        if (mybird.rect.top >pilar.pilar1_rect.bottom and mybird.rect.bottom <pilar.pilar2_rect.top):            return False        else:            return True    else:        if mybird.rect.bottom > 400:            return True        else:            return False    def get_history_record(score):     #获取记录的得分    record=[]    index =0    if os.path.isfile("record.txt"):      #存在:获取记录到的内容          f=open("record.txt")        line=f.readline()        line=f.readline()        while line !="":            record.append([int(line.strip().split(",")[0]),line.strip().split(",")[1]])            line=f.readline()        f.close()    record.append([score,str(datetime.datetime.now())])    record.sort(key=operator.itemgetter(0),reverse=True)    print record    while len(record)>10:        record.pop()    file_writer = open("record.txt", 'w')    file_writer.writelines("time"+","+"grade"+"\n")    for i in range(len(record)):        file_writer.writelines(str(record[i][0])+","+str(record[i][1])+"\n")        if int(record[i][0]) == int(score):            index=i    file_writer.close()    if index >3:        index=3    return record[0][0],index        while not running:    clock.tick(60)       screen.fill(0)    screen.blit(get_start_image, (0, 0))     pygame.display.update()    x, y=pygame.mouse.get_pos()       for event in pygame.event.get():        if event.type ==pygame.QUIT:            pygame.quit()            exit()        elif event.type == pygame.MOUSEBUTTONDOWN:            if y<380 and y>300 and x>180 and x <210:                running=True    while True:    clock.tick(60)       pilar_frequency +=1        #生成柱子    if pilar_frequency %100==0:        pilar_pos=[384,random.randint(130, 250)]        new_pilar=Pilar(pilar_image_up, pilar_image_down, pilar_pos)        pilar_set.add(new_pilar)     if pilar_frequency >=1000:        pilar_frequency=0         flag=(-1)*flag           #移动柱子    for pilar in pilar_set:        pilar.move()        if collide_circle(pilar, mybird):  #碰撞检测代码            mybird.is_hit=True             for pilar in pilar_set:                pilar.stop()        if pilar.pilar1_rect.right <0:            pilar_set.remove(pilar)     #小鸟降落    mybird.SelfMoveDown()     # 绘制背景    screen.fill(0)            if flag==1:        screen.blit(background_day, (0, 0))     else:        screen.blit(background_night, (0, 0))    #绘制柱子    for pilar in pilar_set:        screen.blit(pilar.pilar1_image,pilar.pilar1_rect)        screen.blit(pilar.pilar2_image,pilar.pilar2_rect)    #绘制地面       screen.blit(ground,(0,384))    #绘制玩家小鸟    bird_frequency +=1       if not mybird.is_hit:  #未发生碰撞        score +=10        screen.blit(mybird.image[mybird.image_index],mybird.rect)        mybird.image_index=bird_frequency % 3     else:  #发生碰撞        running=False         mybird.SelfDiedDown()        screen.blit(mybird.image[0],mybird.rect)        has_log=False        while not running and mybird.is_downtoground:     #画面切换到结束界面                       screen.blit(gameover_image,(64,30))            screen.blit(medal_blackball_image,(42,100))            screen.blit(restart_image,(122,270))            if not has_log:                                   bestscore,index=get_history_record(score/100) #获取历史记录情况                print score/100                print bestscore,index                has_log=True            screen.blit(medal_images[index],(75,160))        #要读取之前保存的信息,            x, y=pygame.mouse.get_pos()                          #目前得分            score_font = pygame.font.Font(None, 36)            score_text = score_font.render(str(score/100), True, (255,255,255))            text_rect = score_text.get_rect()            text_rect.midtop = [290, 145]            screen.blit(score_text, text_rect)            #历史最佳得分            score_font = pygame.font.Font(None, 36)            score_text = score_font.render(str(bestscore), True, (255,255,255))            text_rect = score_text.get_rect()            text_rect.midtop = [290,200]            screen.blit(score_text, text_rect)                        for event in pygame.event.get():                if event.type ==pygame.QUIT:                    pygame.quit()                    exit()                elif event.type == pygame.MOUSEBUTTONDOWN:                    if y<360 and y>280 and x>150 and x <240:  #重新开始                        pilar_set = pygame.sprite.Group()                        mybird=Bird(bird_images,bird_pos)                        score=0                        running=True            pygame.display.update()                        # 绘制得分      score_font = pygame.font.Font(None, 36)    score_text = score_font.render(str(score/100), True, (255,255,255))    text_rect = score_text.get_rect()    text_rect.midtop = [185, 30]    screen.blit(score_text, text_rect)    #屏幕更新    pygame.display.update()    #绘制按键执行代码    key_pressed=pygame.key.get_pressed()    if not mybird.is_hit:        if key_pressed[K_w] or key_pressed[K_UP]:            mybird.moveUp()        if key_pressed[K_s] or key_pressed[K_DOWN]:            mybird.moveDown()            for event in pygame.event.get():        if event.type ==pygame.QUIT:            pygame.quit()            exit()

第二个文件,gamerole.py 定义两个类,一个是柱子类,定义柱子的生成规则和移动规则 一个是小鸟类,定义小鸟位置信息,加载图片信息以及小鸟的飞行控制

# -*- coding: utf-8 -*-"""Created on Thu Dec 15 00:27:17 2016@author: LINJUNJI """import pygameimport randomSCREEN_WIDTH =384SCREEN_HEIGHT=448INTERVEL=120         #两个障碍之间的间隔UP_LIMIT=60DOWN_LIMIT=360#小鸟类class Bird(pygame.sprite.Sprite):    def __init__(self,bird_imgs,init_pos):        pygame.sprite.Sprite.__init__(self)        self.image=bird_imgs        self.rect=self.image[0].get_rect()        self.rect.midbottom=init_pos        self.up_speed = 5        self.down_speed=2        self.selfdown_speed=2        self.image_index=0          #图片索引参数,控制小鸟飞行姿态变化        self.is_hit=False         self.is_downtoground=False        def SelfMoveDown(self):        self.rect.top += self.selfdown_speed        def SelfDiedDown(self):        self.up_speed = 0        self.down_speed=0        self.rect.bottom +=self.selfdown_speed*2        if self.rect.bottom >=400:            self.rect.bottom =400            self.is_downtoground=True            def moveUp(self):        if self.rect.top<=0:            self.rect.top=0        else:            self.rect.top -=self.up_speed                def moveDown(self):        if self.rect.top>=SCREEN_HEIGHT-self.rect.height:            self.rect.top = SCREEN_HEIGHT-self.rect.height        else:            self.rect.top += self.down_speed    '''            def moveLeft(self):        if self.rect.left <= 0:            self.rect.left = 0        else:            self.rect.left -= self.speed    def moveRight(self):        if self.rect.left >= SCREEN_WIDTH - self.rect.width:            self.rect.left = SCREEN_WIDTH - self.rect.width        else:            self.rect.left += self.speed    '''#柱子类class Pilar(pygame.sprite.Sprite):    def __init__(self,pilar_image_up,pilar_image_down,init_pos):        pygame.sprite.Sprite.__init__(self)        self.pilar1_image=pilar_image_up        self.pilar2_image=pilar_image_down        self.pilar1_rect=self.pilar1_image.get_rect()        self.pilar2_rect=self.pilar2_image.get_rect()        self.pilar1_rect.bottomleft=init_pos        self.pilar2_rect.topleft=[init_pos[0],init_pos[1]+INTERVEL]        self.horizontal_speed=2  #柱子平移的速度        self.vertical_speed=0.3    #柱子上下移动的速度        self.direction=random.randint(0,1)  #柱子上下移动的方向            def move(self):        self.pilar1_rect.left -=self.horizontal_speed   #柱子左右移动        self.pilar2_rect.left -=self.horizontal_speed        if self.direction == 1:                           #控制柱子上下移动            self.pilar1_rect.bottom +=self.vertical_speed                    self.pilar2_rect.top +=self.vertical_speed            if self.pilar2_rect.top > DOWN_LIMIT:                self.direction=0        else:            self.pilar1_rect.bottom -=self.vertical_speed                    self.pilar2_rect.top -=self.vertical_speed            if self.pilar1_rect.bottom < UP_LIMIT:                self.direction=1    def stop(self):        self.horizontal_speed=0        self.vertical_speed=0

游戏的素材图片

怎么用python实现flappy bird游戏

“怎么用Python实现flappy bird游戏”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: 怎么用python实现flappy bird游戏

本文链接: https://www.lsjlt.com/news/304715.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么用python实现flappy bird游戏
    本篇内容介绍了“怎么用python实现flappy bird游戏”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!程序大概流程:1.加载图片素材...
    99+
    2023-06-25
  • python怎么实现flappy bird小游戏
    本篇内容介绍了“python怎么实现flappy bird小游戏”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!开发工具:Pytho...
    99+
    2023-06-29
  • 基于JS怎么实现Flappy Bird游戏
    本文小编为大家详细介绍“基于JS怎么实现Flappy Bird游戏”,内容详细,步骤清晰,细节处理妥当,希望这篇“基于JS怎么实现Flappy Bird游戏”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习...
    99+
    2023-06-30
  • python flappy bird小游戏分步实现流程
    目录导语:开发工具:环境搭建运行视频:正文:计分表结尾:导语: 哈喽,哈喽~今天小编又来分享小游戏了——flappy bird(飞扬的小鸟),这个游戏非常的经...
    99+
    2024-04-02
  • 利用python实现flappy bird 游戏(完整代码)
    第一个python文件,flappybirdmain.py ,程序中已经有详细注释.。 程序大概流程:1.加载图片素材文件 2.绘画开始界面,等待程序开始(按空格) 3 .程序刷新,...
    99+
    2024-04-02
  • 基于JS实现Flappy Bird游戏的示例代码
    前言 Flappy Bird 是一款无尽的游戏,玩家可以控制一只鸟。玩家必须保护小鸟免于与管道等障碍物相撞。每次小鸟通过管道时,分数都会增加一。当小鸟与管道碰撞或因重力而坠落时,游戏...
    99+
    2024-04-02
  • JavaScript怎么使用canvas实现flappy bird
    这篇“JavaScript怎么使用canvas实现flappy bird”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这...
    99+
    2023-07-05
  • 利用Jetpack Compose复刻游戏Flappy Bird
    目录1.拆解游戏2.复刻画面ⅰ.布置远近景ⅱ.摆放管道ⅲ.放置小鸟3.状态管理和架构4.路面动起来5.管道动起来6.小鸟飞起来7.碰撞和实时分值8.结束分值和重新开始9.最终效果Fl...
    99+
    2024-04-02
  • VUE实现一个Flappy Bird游戏的示例代码
    Flappy Bird是一个非常简单的小游戏,在app上大家都玩过。这里就用VUE来实现一个简单的PC版Flappy Bird,娱乐一下~~~~~ 要实现这个游戏,首先来分析一下游戏...
    99+
    2024-04-02
  • Python实战:运用Pygame编写Flappy bird小游戏,我能玩一天
    首先下载Python中Pygame的模块可以在Windows下的CMD中使用pip下载pip install pygame有的小伙伴安装的时候报错,那么你可以从官网下载Pygame然后解压进入网址https://www.lfd.uci.ed...
    99+
    2023-06-02
  • 怎么用Python实现滑雪游戏
    这篇文章主要介绍了怎么用Python实现滑雪游戏的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么用Python实现滑雪游戏文章都会有所收获,下面我们一起来看看吧。开发工具Python版本:3.6.4相关模块:...
    99+
    2023-06-27
  • 怎么用Python实现2048小游戏
    这篇文章主要介绍怎么用Python实现2048小游戏,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、开发环境Python版本:3.6.4相关模块:pygame模块;以及一些Python自带的模块。二、环境搭建安装P...
    99+
    2023-06-15
  • 怎么用Python实现拼图小游戏
    本篇内容主要讲解“怎么用Python实现拼图小游戏”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用Python实现拼图小游戏”吧!开发工具Python版本:...
    99+
    2024-04-02
  • 怎么用Python Pygame实现赛车游戏
    今天小编给大家分享一下怎么用Python Pygame实现赛车游戏的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一...
    99+
    2023-06-29
  • 怎么用python实现打砖块小游戏
    这篇文章主要介绍了怎么用python实现打砖块小游戏的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么用python实现打砖块小游戏文章都会有所收获,下面我们一起来看看吧。开发益智的打砖块小游戏,你可以试一下能...
    99+
    2023-06-30
  • python怎么实现贪吃蛇游戏
    要实现贪吃蛇游戏,可以使用Python中的pygame库来进行游戏界面的绘制和键盘事件的监听。以下是一个简单的贪吃蛇游戏的示例代码:...
    99+
    2023-08-09
    python
  • 怎么使用Python+Pygame实现泡泡游戏
    这篇文章主要讲解了“怎么使用Python+Pygame实现泡泡游戏”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用Python+Pygame实现泡泡游戏”吧!一、环境安装1)素材(图片...
    99+
    2023-07-02
  • Python+Pygame怎么实现24点游戏
    这篇文章主要介绍了Python+Pygame怎么实现24点游戏的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python+Pygame怎么实现24点游戏文章都会有所收获,下面我们一起来看看吧。游戏介绍(1)什么...
    99+
    2023-06-30
  • python怎么实现猜数字游戏
    要实现猜数字游戏,可以按照以下步骤进行:1. 生成一个随机数作为答案,可以使用random模块中的randint()函数来生成一个指...
    99+
    2023-08-15
    python
  • python怎么实现三子棋游戏
    一、基本流程三子棋游戏实现逻辑如下:1、创建初始化3*3棋盘;2、玩家执U子,先进行落子;3、胜负判定【胜、负、和棋】,若胜负未分,则继续如下4、电脑执T子,进行落子;5、胜负判定,若胜负未分,则从步骤2继续执行二、基本步骤1、菜单界面选择...
    99+
    2023-05-15
    Python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作