最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python實(shí)現(xiàn)簡(jiǎn)單flappy bird

 更新時(shí)間:2018年12月24日 11:48:20   作者:wwxy261  
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)簡(jiǎn)單flappy bird小游戲,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了python實(shí)現(xiàn)flappy bird的簡(jiǎn)單代碼,供大家參考,具體內(nèi)容如下

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()
# 創(chuàng)建窗口
SCREEN = pygame.display.set_mode((SCREENHEIGHT, SCREENHEIGHT))
# 設(shè)置窗口標(biāo)題
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
 
# 設(shè)置幀率
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 # 兩個(gè)水管之間的距離
x = SCREENWIDTH//2
y = SCREENHEIGHT//2
move_x = 0
move_y = 0
 
flap = 0 # 小鳥(niǎo)初始狀態(tài)
pipeVelX = -4 # 管道x方向的速度
playerVelY = 0 # 小鳥(niǎo)y方向的初速度
playerMaxVelY = 10 # 小鳥(niǎo)y方向的最大速度
playerMinVelY = -8 # 小鳥(niǎo)y方向的最小速度
playerAccY = 2 # 小鳥(niǎo)y方向的下降加速度
playerFlapAcc = -3 # 小鳥(niǎo)y方向的上升加速度
playerFLapped = False # 當(dāng)小鳥(niǎo)飛的時(shí)候?yàn)檎?
playery = int((SCREENHEIGHT - PLAYER_HEIGHT)/2)
 
 
# 隨機(jī)移動(dòng)柱子
def getRandomPipe():
  # 兩個(gè)水管之間的距離有如下變量
  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坐標(biāo)
  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']))
 
 
 
  # 放小鳥(niǎo)
  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
 
 
  # 當(dāng)水管移動(dòng)到某一位置的時(shí)候,生成新的水管
 
  if 0 < upperPipes[0]['x'] < 5:
    newPipe = getRandomPipe()
    upperPipes.append(newPipe[0])
    lowerPipes.append(newPipe[1])
  
 
  # 如果水管從右往左移動(dòng)到邊緣,則摧毀水管
  if upperPipes[0]['x'] < -PIPE_WIDTH:
    # 隊(duì)列頭出隊(duì)
    upperPipes.pop(0)
    lowerPipes.pop(0)
 
 
  # 刷新畫(huà)面
  pygame.display.update()
  FPSCLOCK.tick(FPS)

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python中._pth文件的作用及說(shuō)明

    Python中._pth文件的作用及說(shuō)明

    這篇文章主要介紹了Python中._pth文件的作用及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • pygame實(shí)現(xiàn)煙雨蒙蒙下彩虹雨

    pygame實(shí)現(xiàn)煙雨蒙蒙下彩虹雨

    這篇文章主要為大家詳細(xì)介紹了pygame實(shí)現(xiàn)煙雨蒙蒙下彩虹雨,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • 用Python簡(jiǎn)單實(shí)現(xiàn)個(gè)貪吃蛇小游戲(保姆級(jí)教程)

    用Python簡(jiǎn)單實(shí)現(xiàn)個(gè)貪吃蛇小游戲(保姆級(jí)教程)

    本文基于Windows環(huán)境開(kāi)發(fā),適合Python新手,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)python的小伙伴們很有幫助,需要的朋友可以參考下
    2021-06-06
  • python 模擬登陸github的示例

    python 模擬登陸github的示例

    這篇文章主要介紹了python 模擬登陸github的示例代碼,幫助大家更好的理解和學(xué)習(xí)python 爬蟲(chóng)的相關(guān)知識(shí),感興趣的朋友可以了解下
    2020-12-12
  • Python?VTK映射三維模型表面距離

    Python?VTK映射三維模型表面距離

    這篇文章主要介紹了Python?VTK映射三維模型表面距離,通過(guò)如何使用VTK讀取圖片計(jì)算兩個(gè)三維模型(stl)的表面距離,并將其距離值映射到模型上展開(kāi)主題,需要的朋友可以參考一下
    2022-04-04
  • 解決pyCharm中 module 調(diào)用失敗的問(wèn)題

    解決pyCharm中 module 調(diào)用失敗的問(wèn)題

    今天小編就為大家分享一篇解決pyCharm中 module 調(diào)用失敗的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-02-02
  • tensorflow實(shí)現(xiàn)邏輯回歸模型

    tensorflow實(shí)現(xiàn)邏輯回歸模型

    這篇文章主要為大家詳細(xì)介紹了tensorflow實(shí)現(xiàn)邏輯回歸模型的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • Python實(shí)現(xiàn)3行代碼解簡(jiǎn)單的一元一次方程

    Python實(shí)現(xiàn)3行代碼解簡(jiǎn)單的一元一次方程

    這篇文章主要介紹了Python實(shí)現(xiàn)3行代碼解簡(jiǎn)單的一元一次方程,很適合Python初學(xué)者學(xué)習(xí)借鑒,需要的朋友可以參考下
    2014-08-08
  • python使用OpenCV獲取高動(dòng)態(tài)范圍成像HDR

    python使用OpenCV獲取高動(dòng)態(tài)范圍成像HDR

    這篇文章主要介紹了python使用OpenCV獲取高動(dòng)態(tài)范圍成像HDR,如何使用不同曝光設(shè)置拍攝的多張圖像創(chuàng)建高動(dòng)態(tài)范圍圖像HDR,下文嗎更詳細(xì)的內(nèi)容介紹,需要的小伙伴可以參考一下
    2022-04-04
  • Django中如何使用sass的方法步驟

    Django中如何使用sass的方法步驟

    這篇文章主要介紹了Django中如何使用sass的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07

最新評(píng)論

上林县| 罗江县| 岱山县| 宝应县| 监利县| 甘德县| 五河县| 平江县| 赤城县| 莱西市| 湘阴县| 丰城市| 合肥市| 武城县| 安溪县| 常德市| 泽州县| 宁晋县| 平乡县| 石首市| 吉水县| 威海市| 沛县| 江都市| 图木舒克市| 安岳县| 双桥区| 通许县| 双鸭山市| 大洼县| 阜康市| 高淳县| 都兰县| 依安县| 西乡县| 苍山县| 吉首市| 保定市| 天镇县| 纳雍县| 苏尼特左旗|