Flappy Bird游戏

  • 游戏中的对象:
#小鸟:Bird类
class Bird(object):'''定义一个鸟类'''def __init__(self):'''定义初始化方法'''self.birdRect=pygame.Rect(65,50,50,50)self.birdStatus=[pygame.image.load("assets/0.png"),pygame.image.load("assets/1.png"),pygame.image.load("assets/2.png")]self.status=0 #默认飞行状态self.birdx=120self.birdy=350self.jump=Falseself.jumpSpeed=10self.gravity=5self.dead=Falsedef birdUpdate(self):if self.jump:self.jumpSpeed-=1self.birdy-=self.jumpSpeedelse:self.gravity+=0.2self.birdy+=self.gravityself.birdRect[1]=self.birdy
#管道类
class Pipeline(object):'''定义一个管道类'''def __init__(self):'''定义初始化方法'''self.wallx=400self.pineUp=pygame.image.load("assets/top.png")self.pineDown=pygame.image.load("assets/bottom.png")def updatePipeline(self):'''水平移动'''self.wallx-=5   #管道x轴坐标递减,即管道向左移动#当管道运行到某一位置,即小鸟飞跃管道之后,分数加一,并且重置管道if self.wallx< -80:global scorescore+=1self.wallx=400
  • 需要实现的功能

1.创建地图

#创建地图函数
def creatMap():'''定义创建一个地图的方法'''screen.fill((255,255,255))#填入颜色screen.blit(background,(0,0))#填入到背景#显示管道screen.blit(Pipeline.pineUp,(Pipeline.wallx,-300))  #上管道坐标位置screen.blit(Pipeline.pineDown,(Pipeline.wallx,500)) #下管道位置Pipeline.updatePipeline()   #管道移动#显示小鸟if Bird.dead:Bird.status=2elif Bird.jump:Bird.status=1screen.blit(Bird.birdStatus[Bird.status],(Bird.birdx,Bird.birdy))#设置小鸟坐标Bird.birdUpdate()#鸟移动#显示分数screen.blit(font.render(str(score),-1,(255,255,255)),(200,50))#设置颜色及坐标位置pygame.display.update()#更新显示

2.判断小鸟是否死亡

#检测函数
def checkDead():#上方管子的矩形位置upRect=pygame.Rect(Pipeline.wallx,-300,Pipeline.pineUp.get_width()-10,Pipeline.pineUp.get_height())#下方管子的矩形位置downRect=pygame.Rect(Pipeline.wallx,500,Pipeline.pineDown.get_width()-10,Pipeline.pineDown.get_height())#检测小鸟上下管子是否碰撞if upRect.colliderect(Bird.birdRect) or downRect.colliderect(Bird.birdRect):Bird.dead=Truereturn Trueelse :return False

3.游戏结束时反馈结果

def getResult():final_text1="游戏结束"final_text2="你最终的得分是:"+str(score)#pygame.font.SysFont()第一个参数是字体名,第二个参数是字体大小,通过pygame.font.get_fonts()获取当前系统支持的字体ft1_font=pygame.font.SysFont("华文楷体",30)#设置文字字体ft2_font=pygame.font.SysFont("华文楷体",20)#ft1_font.rentder()第一个参数是写的文字,第二个参数是是否开启抗锯齿(bool),第三个参数是字体颜色,第四个是背景颜色ft1_surf=font.render(final_text1,1,(242,3,36)) #把ft1_font写出来ft2_surf=font.render(final_text2,1,(253,177,6))#把ft2_font写出来# 设置文字显示位置screen.blit(ft1_surf,[screen.get_width()/2-ft1_surf.get_width()/2,75])screen.blit(ft2_surf,[screen.get_width()/2-ft2_surf.get_width()/2,150])pygame.display.flip()#更新屏幕显示

主函数

if __name__=='__main__':'''主程序'''pygame.init()pygame.font.init()#初始化字体font=pygame.font.SysFont("华文楷体",50)size=width,length=600,680#设置窗口screen=pygame.display.set_mode(size)#显示窗口clock=pygame.time.Clock()#实例化管道Pipeline=Pipeline()#实例化管道Bird=Bird()#实例化鸟类score=0while True:clock.tick(60)#每六十秒执行一次#轮询事件for event in pygame.event.get():if event.type==pygame.QUIT:sys.exitif(event.type==pygame.KEYDOWN or event.type==pygame.MOUSEBUTTONDOWN) and not Bird.dead:Bird.jump=True #跳跃Bird.gravity=6#重力Bird.jumpSpeed=10#跳跃速度background=pygame.image.load("background.png")background=pygame.transform.scale(background,(600,680))#调整图片大小与窗口适应if checkDead():getResult()else:creatMap()pygame.quit()

注:看到python从入门到精通这本书的第十六章,敲一敲书上的代码

python游戏——Flappy Brid相关推荐

  1. 这个Python游戏库,打开就能玩一天!

    人生苦短,我学Python! 我们其实还可以选择用Python开发小游戏,回忆童年的美好时光. "凹凸版"吃豆子 这次并非用pygame制作的,而是一个很有趣的库:free-pyt ...

  2. Python游戏 (胖鸟快飞Flappybird)

    python游戏开发:(胖鸟快飞) 利用python提供的第三方库pygame和python的基础语法来开发此款小游戏,此款游戏代码行数不超过100行,即使是初学者也可以轻松的了解.最重要的是,通过此 ...

  3. 《树莓派Python编程指南》——2.2 一个Python游戏:猫和老鼠

    本节书摘来自华章计算机<树莓派Python编程指南>一书中的第2章,第2.2节,作者:(美) Alex Bradbury Ben Everard更多章节内容可以访问云栖社区"华章 ...

  4. 33关Python游戏,测试你的爬虫能力到底及格不?

    作者 | 苏克1900 责编 | 胡巍巍 转载自高级农民工(ID: Mocun6) 最近在网上看到一个非常有意思的 Python 游戏通关网站,一共有 33 关,每一关都需要利用 Python 知识解 ...

  5. Python游戏开发:最强大脑第一关,数字华容道

    前言 freegames是Apache2许可的Python游戏集合,旨在用于教育和娱乐,完全是开源的,我们只要引用编写就好,当前在最强大脑的舞台上的第一关就是数字华容道,好多人都栽在了上面,如果你也想 ...

  6. python趣味编程100_《Python游戏趣味编程》 第8章 勇闯地下一百层

    知乎视频​www.zhihu.com 图书简介可以看这里:童晶:<Python游戏趣味编程>新书上架了​zhuanlan.zhihu.com 本章我们将编写一个勇闯地下一百层的游戏,键盘控 ...

  7. python游戏编程入门书籍推荐-游戏编程入门书籍推荐:想要游戏编程尽快入门这些书不要错过...

    游戏编程一直都是编程之中的一大热点,这也是由于游戏本身的火热造成的结果,所以每年都有很多人在关注着游戏编程.介于此小编今天就来将一些好的游戏编程入门书籍推荐给大家,希望对想要了解和学习游戏编程的朋友能 ...

  8. python游戏程序-python游戏程序

    广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. 易于阅读:python代码定义更清晰. 易于维护:源代码是相当容易维护的 ...

  9. python游戏编程书籍-《Python游戏编程快速上手》一1.3 如何使用本书

    本节书摘来异步社区<Python游戏编程快速上手>一书中的第1章,第1.3节,作者: [美]Al Sweigart(斯维加特) 译者: 李强 责编: 陈冀康,更多章节内容可以访问云栖社区& ...

最新文章

  1. 微信小程序 view中的image水平垂直居中
  2. Python3中对Dict的内存优化
  3. Leetcode24.Swap Nodes in Pairs两两交换链表中的节点
  4. 我的NHibernate之路(1)---基本配置篇
  5. SAP手工传输TP使用方法
  6. 安利一下这个群投票的小程序,比较好用
  7. Java黑皮书课后题第10章:**10.23(实现String类)在Java库中提供了String类,给出你自己对下面方法的实现(将新类命名为MyString2)
  8. rabbitmq 取消消息_SpringBoot整合RabbitMQ实现延迟消息
  9. Java Code Geeks和Packt提供的Hadoop书籍赠品
  10. Spring环境的搭建与测试 (spring2.5.6)
  11. 网页复选框设置只能选一个_男生在密室呆一个月, 只能选手机或者女人, 结果太现实...
  12. js获取当前url_javascript如何获取当前URL的主机名?
  13. 高并发网络编程之epoll(个人遇到最好理解的一篇文章、易懂)
  14. eureka默认端口号是多少_微服务技术系列教程 - SpringCloud- 服务治理Eureka(集群搭建)...
  15. php将数组打印到txt文件
  16. 【知了堂学习笔记】SQL查询总结(1)
  17. Excel批量向下填充不连续的空白单元格工具
  18. R语言:lengths计算列表list中元素的个数
  19. STM32 用RS485进行半双工通信出现的问题
  20. 选择美国虚拟主机时要考虑的事项

热门文章

  1. ajax 跨域 CROS
  2. OnlyOffice验证(二)在Centos7上部署OnlyOffice编译结果
  3. 移动端大规模草渲染的实现
  4. 安装原版Windows
  5. RK3568 MIPI驱动JD9365A触摸屏调试过程
  6. Echarts实时更新数据
  7. OSPF数据库同步及泛洪机制
  8. Android V7包学习笔记更新中.....
  9. 例说Android 硬件抽象层
  10. java date加月_关于java:在日期中添加月份