python游戏——Flappy Brid
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相关推荐
- 这个Python游戏库,打开就能玩一天!
人生苦短,我学Python! 我们其实还可以选择用Python开发小游戏,回忆童年的美好时光. "凹凸版"吃豆子 这次并非用pygame制作的,而是一个很有趣的库:free-pyt ...
- Python游戏 (胖鸟快飞Flappybird)
python游戏开发:(胖鸟快飞) 利用python提供的第三方库pygame和python的基础语法来开发此款小游戏,此款游戏代码行数不超过100行,即使是初学者也可以轻松的了解.最重要的是,通过此 ...
- 《树莓派Python编程指南》——2.2 一个Python游戏:猫和老鼠
本节书摘来自华章计算机<树莓派Python编程指南>一书中的第2章,第2.2节,作者:(美) Alex Bradbury Ben Everard更多章节内容可以访问云栖社区"华章 ...
- 33关Python游戏,测试你的爬虫能力到底及格不?
作者 | 苏克1900 责编 | 胡巍巍 转载自高级农民工(ID: Mocun6) 最近在网上看到一个非常有意思的 Python 游戏通关网站,一共有 33 关,每一关都需要利用 Python 知识解 ...
- Python游戏开发:最强大脑第一关,数字华容道
前言 freegames是Apache2许可的Python游戏集合,旨在用于教育和娱乐,完全是开源的,我们只要引用编写就好,当前在最强大脑的舞台上的第一关就是数字华容道,好多人都栽在了上面,如果你也想 ...
- python趣味编程100_《Python游戏趣味编程》 第8章 勇闯地下一百层
知乎视频www.zhihu.com 图书简介可以看这里:童晶:<Python游戏趣味编程>新书上架了zhuanlan.zhihu.com 本章我们将编写一个勇闯地下一百层的游戏,键盘控 ...
- python游戏编程入门书籍推荐-游戏编程入门书籍推荐:想要游戏编程尽快入门这些书不要错过...
游戏编程一直都是编程之中的一大热点,这也是由于游戏本身的火热造成的结果,所以每年都有很多人在关注着游戏编程.介于此小编今天就来将一些好的游戏编程入门书籍推荐给大家,希望对想要了解和学习游戏编程的朋友能 ...
- python游戏程序-python游戏程序
广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. 易于阅读:python代码定义更清晰. 易于维护:源代码是相当容易维护的 ...
- python游戏编程书籍-《Python游戏编程快速上手》一1.3 如何使用本书
本节书摘来异步社区<Python游戏编程快速上手>一书中的第1章,第1.3节,作者: [美]Al Sweigart(斯维加特) 译者: 李强 责编: 陈冀康,更多章节内容可以访问云栖社区& ...
最新文章
- 微信小程序 view中的image水平垂直居中
- Python3中对Dict的内存优化
- Leetcode24.Swap Nodes in Pairs两两交换链表中的节点
- 我的NHibernate之路(1)---基本配置篇
- SAP手工传输TP使用方法
- 安利一下这个群投票的小程序,比较好用
- Java黑皮书课后题第10章:**10.23(实现String类)在Java库中提供了String类,给出你自己对下面方法的实现(将新类命名为MyString2)
- rabbitmq 取消消息_SpringBoot整合RabbitMQ实现延迟消息
- Java Code Geeks和Packt提供的Hadoop书籍赠品
- Spring环境的搭建与测试 (spring2.5.6)
- 网页复选框设置只能选一个_男生在密室呆一个月, 只能选手机或者女人, 结果太现实...
- js获取当前url_javascript如何获取当前URL的主机名?
- 高并发网络编程之epoll(个人遇到最好理解的一篇文章、易懂)
- eureka默认端口号是多少_微服务技术系列教程 - SpringCloud- 服务治理Eureka(集群搭建)...
- php将数组打印到txt文件
- 【知了堂学习笔记】SQL查询总结(1)
- Excel批量向下填充不连续的空白单元格工具
- R语言:lengths计算列表list中元素的个数
- STM32 用RS485进行半双工通信出现的问题
- 选择美国虚拟主机时要考虑的事项