本文实例为大家分享了python实现flappy bird的简单代码,供大家参考,具体内容如下 import pygame

from pygame.locals import *

from sys import exit

import random

# 屏幕宽度

SCREENWIDTH = 288

# 屏幕高度

SCREENHEIGHT = 512

IMAGES = {}

# 背景图片地址

BACKGROUND_PATH = 'back_ground.png'

PIPE_PATH = 'pipe.png'

BASE_PATH = 'base.png'

PLAYER_PATH = (

'bird2_0.png',

'bird2_1.png',

'bird2_2.png',

)

# 初始化

pygame.init()

# 创建窗口

SCREEN = pygame.display.set_mode((SCREENHEIGHT, SCREENHEIGHT))

# 设置窗口标题

pygame.display.set_caption("Flappy Bird")

# 加载图片,透明用convert_alpha,不透明用convert

IMAGES['background'] = pygame.image.load(BACKGROUND_PATH).convert()

IMAGES['base'] = pygame.image.load(BASE_PATH).convert_alpha()

IMAGES['bird'] = (

pygame.image.load(PLAYER_PATH[0]).convert_alpha(),

pygame.image.load(PLAYER_PATH[1]).convert_alpha(),

pygame.image.load(PLAYER_PATH[2]).convert_alpha(),

)

IMAGES['pipe'] = (

pygame.transform.rotate(pygame.image.load(PIPE_PATH).convert_alpha(), 180),

pygame.image.load(PIPE_PATH).convert_alpha()

)

BASEY = SCREENHEIGHT * 0.82

# 设置帧率

FPS = 30

FPSCLOCK = pygame.time.Clock()

PIPE_WIDTH = IMAGES['pipe'][0].get_width()

PIPE_HEIGHT = IMAGES['pipe'][0].get_height()

PLAYER_WIDTH = IMAGES['bird'][0].get_width()

PLAYER_HEIGHT = IMAGES['bird'][0].get_height()

PIPEGAPSIZE = 100 # 两个水管之间的距离

x = SCREENWIDTH//2

y = SCREENHEIGHT//2

move_x = 0

move_y = 0

flap = 0 # 小鸟初始状态

pipeVelX = -4 # 管道x方向的速度

playerVelY = 0 # 小鸟y方向的初速度

playerMaxVelY = 10 # 小鸟y方向的最大速度

playerMinVelY = -8 # 小鸟y方向的最小速度

playerAccY = 2 # 小鸟y方向的下降加速度

playerFlapAcc = -3 # 小鸟y方向的上升加速度

playerFLapped = False # 当小鸟飞的时候为真

playery = int((SCREENHEIGHT - PLAYER_HEIGHT)/2)

# 随机移动柱子

def getRandomPipe():

# 两个水管之间的距离有如下变量

gapYs = [20, 30, 40, 50, 60, 70, 80, 90]

index = random.randint(0, len(gapYs) - 1)

gapY = gapYs[index]

gapY += int(BASEY * 0.2)

# 水管x坐标

pipeX = SCREENWIDTH + 10

return [

{'x': pipeX, 'y': gapY - PIPE_HEIGHT}, # 上面水管的左上角位置

{'x': pipeX, 'y': gapY + PIPEGAPSIZE}, # 下面水管的左上角位置

]

newPipel = getRandomPipe()

upperPipes = [

{'x': SCREENWIDTH, 'y':newPipel[0]['y']}

]

lowerPipes = [

{'x': SCREENWIDTH, 'y':newPipel[1]['y']}

]

while True:

for event in pygame.event.get():

if event.type == QUIT:

exit()

elif event.type == KEYDOWN:

if event.key == K_LEFT:

move_x = -3

elif event.key == K_RIGHT:

move_x = 3

elif event.key == K_UP:

move_y = -3

elif event.key == K_DOWN:

move_y = 3

elif event.type == KEYUP:

move_x = 0

move_y = 0

x = x + move_x

y = y + move_y

# 防止冲出边界

if x > SCREENWIDTH:

x = 0

elif x < 0:

x = SCREENWIDTH

if y > SCREENHEIGHT:

y = 0

elif y < 0:

y = SCREENHEIGHT

# 贴图在左上角

SCREEN.blit(IMAGES['background'], (0, 0)) # 背景

# 显示水管

for uPipe, lPipe in zip(upperPipes, lowerPipes):

SCREEN.blit(IMAGES['pipe'][0], (uPipe['x'], uPipe['y']))

SCREEN.blit(IMAGES['pipe'][1], (lPipe['x'], lPipe['y']))

# 放小鸟

SCREEN.blit(IMAGES['bird'][flap], (x, y))

flap = flap + 1

if flap % 3 == 0:

flap = 0

for uPipe, lPipe in zip(upperPipes, lowerPipes):

uPipe['x'] += pipeVelX

lPipe['x'] += pipeVelX

# 当水管移动到某一位置的时候,生成新的水管

if 0 < upperPipes[0]['x'] < 5:

newPipe = getRandomPipe()

upperPipes.append(newPipe[0])

lowerPipes.append(newPipe[1])

# 如果水管从右往左移动到边缘,则摧毁水管

if upperPipes[0]['x'] < -PIPE_WIDTH:

# 队列头出队

upperPipes.pop(0)

lowerPipes.pop(0)

# 刷新画面

pygame.display.update()

FPSCLOCK.tick(FPS)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持聚米学院。

python版本的flapy bird_python实现简单flappy bird相关推荐

  1. Python——pygame 面向对象的飞行小鸟(Flappy bird)

    飞行小鸟(Flappy bird) 一些想法 分析需要的功能 构建整体框架 着手完整代码 一些想法 基本游戏界面就是这样 分析需要的功能 我的构思是将游戏分成三个部分 初始游戏菜单界面 游戏进行界面 ...

  2. Python版本OpenCV安装配置及简单实例

    # 2018-06-03 # 1. Python下载:https://www.python.org/downloads/ 选择对应平台对应版本的的Python进行安装. 2. Python版OpenC ...

  3. 检查python版本命令是_检查Python版本

    目的 以下文章将为您提供有关如何在操作系统上检查Python版本的信息. 困难 简单 约定 #-要求linux命令可以直接以root用户身份或通过使用root特权以root特权执行sudo命令 $-要 ...

  4. Flappy Bird成名记:28天令人咋舌却真实的故事

    [导读]<Flappy Bird>的爆红不是作弊的结果,而是自然形成的,这令它的成功更加令人难以置信,也令它从App Store下架的事实更加令人感慨. Flappy Bird 腾讯科技 ...

  5. Mac中Python版本随意切换终极指南,简单到爆,什么都不用设置

    很多人为了Mac自带Python和自己下载的Python冲突发生烦恼,我一开始也很烦恼,现在彻底搞定了,这篇文章就是解决这个困扰而设置的. 这篇文章是继这篇文章后总结出的 简单3步成功给Mac安装指定 ...

  6. 简单3步成功给Mac安装指定Python版本和指定库版本并且随意切换版本,非常简单,不行拿砖砸我

    Mac安装Python真的头疼,我前后斗了一年. Mac默认安装2.7,我们平时2018年都用Python3了. 我按照网友的方法brew install python3,导致Python2和Pyth ...

  7. centos stream 8 升级和切换python版本的简单方法

    简介 别再傻乎乎的从源码构建和修改python软连接了! 由于想在腾讯轻量云服务器上部署一个python机器人,需要centos的3.7.3以上的python,但提供的镜像中centos stream ...

  8. 多版本python共存,安装三方库到指定python版本 多Python版本和虚拟环境

    多个Python版本:在同一台机器上安装不同的Python,例如2.7和3.4. 虚拟环境:独立的环境,既可以同时安装特定版本的Python,也可以安装任何特定于项目的软件包,而不会影响任何其他项目. ...

  9. c# typescript_在任何IDE中从C#,Java或Python代码获取TypeScript接口的简单方法

    c# typescript by Leonardo Carreiro 莱昂纳多·卡雷罗(Leonardo Carreiro) 在任何IDE中从C#,Java或Python代码获取TypeScript接 ...

  10. 如何管理多个Python版本和虚拟环境

    Addition January 2019: If you are coming back to this blog after upgrading to macOS Mojave please se ...

最新文章

  1. Asp.Net中查询域名的Whois信息
  2. scheduled 一秒钟执行一次_spring boot的Scheduled帮你实现定时任务,spring boot实践(11)...
  3. Gartner对于建设「数据中台」的建议
  4. alpine linux 执行文件崩溃 报错 找不到/lib/x86_64-linux-gnu/libc.so 解决方法
  5. 2014年中国互联网的50大预测
  6. phpcms下的邮箱设置
  7. vim多列操作--插入/删除
  8. 习题3.11 递归和非递归查找元素
  9. 计算机二级b5纸是多大尺寸,两张b5纸是多大
  10. 计蒜客模拟赛D2T3 蒜头君救人:用bfs转移状压dp
  11. 第四章 《无冬之夜》
  12. 景区门票分销系统解决方案
  13. linux网络工程师简历 项目经验,参加Linux面试简历中的项目经验该怎么写?
  14. php模拟登陆校园教务网络管理系统
  15. 【JZOJ3339】wyl8899和法法塔的游戏【暴力】
  16. Switch 开关,将字写在滑块上面
  17. 正确写出doublecheck的单例模式
  18. 量子计算数学基础,pauli 矩阵
  19. 映射远程盘或文件夹为本地盘符
  20. php 亚马逊关键字排名,亚马逊提升关键词排名的方法

热门文章

  1. 基于SpringBoot+Vue手表电商销售系统的设计与实现
  2. Python从RGBD数据进行3D场景重建
  3. Kafka学习征途:不再依赖ZK的KRaft
  4. JavaEE | 基本类型包装类
  5. 【CSS】对话框--禁止弹框/对话框蒙层下方内容滚动
  6. kangle虚拟主机系统easypanel使用教程
  7. 新生报到小程序,微信小程序新生入学,微信小程序新生报到系统毕业设计作品
  8. 第二次网页前端培训笔记(HTML表单标签常用字符实体)
  9. 小数在内存中是如何存储的
  10. PyCharm下载和安装教程