真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Python怎么實(shí)現(xiàn)小游戲?flappy-bird

這篇文章主要講解了“Python怎么實(shí)現(xiàn)小游戲flappy-bird”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Python怎么實(shí)現(xiàn)小游戲flappy-bird”吧!

創(chuàng)新互聯(lián)建站于2013年開始,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目網(wǎng)站設(shè)計(jì)、做網(wǎng)站網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元滿洲做網(wǎng)站,已為上家服務(wù),為滿洲各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18982081108

游戲動(dòng)圖:

Python怎么實(shí)現(xiàn)小游戲?flappy-bird

 

源碼

建議先仔細(xì)閱讀一下,然后再往后看 DE8UG 對(duì)源碼的分析。

from random import *
from turtle import *
from freegames import vector

bird = vector(0, 0)
balls = []
score = 0

def tap(x, y):
   "Move bird up in response to screen tap."
   up = vector(0, 30)
   bird.move(up)

def inside(point):
   "Return True if point on screen."
   return -200 < point.x < 200 and -200 < point.y < 200

def draw(alive):
   "Draw screen objects."
   clear()
   goto(bird.x, bird.y)

   if alive:
       dot(10, 'green')
   else:
       dot(10, 'red')

   for ball in balls:
       goto(ball.x, ball.y)
       dot(20, 'black')

   update()

def move():
   "Update object positions."
   global score
   bird.y -= 5

   for ball in balls:
       ball.x -= 3

   if randrange(10) == 0:
       y = randrange(-199, 199)
       ball = vector(199, y)
       balls.append(ball)

   while len(balls) > 0 and not inside(balls[0]):
       balls.pop(0)
       score += 1
       print(f'get {score} scores')

   if not inside(bird):
       draw(False)
       return

   for ball in balls:
       if abs(ball - bird) < 15:
           draw(False)
           return

   draw(True)

   # 在鳥的位置,繪制分?jǐn)?shù)
   goto(bird.x, bird.y)
   write(score, font=('Arial', 30, 'normal'))

   ontimer(move, 50)

setup(420, 420, 370, 0)
hideturtle()
up()
tracer(False)
onscreenclick(tap)
move()
done()
   

運(yùn)行

復(fù)制上述代碼到一個(gè) py 為后綴的文件,命名 flappy.py.

在文件所在目錄打開控制臺(tái):運(yùn)行pip install freegames,然后運(yùn)行python flappy.py

 

分析

查看一個(gè) py 文件中的源碼,最開始可以對(duì)他們進(jìn)行區(qū)域劃分。一般有這么幾個(gè)區(qū)域:

  • 導(dǎo)入
  • 全局變量
  • 函數(shù)
  • 調(diào)用流程

我們可以先大致看幾個(gè)區(qū)域的變量和函數(shù)定義,然后從調(diào)用流程入手,一步步的分析代碼。

這個(gè)游戲代碼是一個(gè)第三方庫(kù) freegames 的一部分。從最上面導(dǎo)入依賴部分可以看出,主要是依賴于 turtle 這個(gè)庫(kù)。

from turtle import *的最后是個(gè)*,表示導(dǎo)入了 turtle 里面所有東西,一般是不建議導(dǎo)入太多內(nèi)容的,一是可能加載太多沒用的代碼,二是可能出現(xiàn)同名的類或函數(shù)。目前這只是個(gè)小游戲,后面也用到不少 turtle 里面的函數(shù),所以這么寫勉強(qiáng)可以接受。

往下看,整個(gè)代碼用到很多函數(shù),只要是 import 沒有明確導(dǎo)入的,以及非本 python 文件寫的函數(shù),其實(shí)都是這個(gè)*帶來的 turtle 內(nèi)部函數(shù)了。如果你不知道神馬意思,記得我我課程里介紹過超全的在線文檔嗎?https://devdocs.io,你只需要搜一下turtle就可以看到相關(guān)解釋了。

導(dǎo)入依賴部分還導(dǎo)入了 freegames 庫(kù)里面一些工具類和函數(shù):from freegames import vector,看單詞就可以知道是個(gè)向量,用來表示坐標(biāo)。

接下來是幾個(gè)函數(shù):tap,inside,draw,move。

Flappy Bird, 是一個(gè)幾年前一位越南開發(fā)者做的游戲,風(fēng)靡一時(shí),容易上癮,褒貶不一。DE8UG 認(rèn)為這是一個(gè)不錯(cuò)的游戲,目前我們看到的這個(gè) python 代碼,雖然沒有把小鳥和障礙物完全描述出來,但是從學(xué)習(xí)和娛樂角度來看,已經(jīng)足夠了。

故事很簡(jiǎn)單:一個(gè)小鳥,需要不斷拍動(dòng)翅膀往前飛,同時(shí)躲避障礙物。

針對(duì)小鳥和障礙物的行為,就不難理解這幾個(gè)函數(shù)了。

tap 表示扇動(dòng)翅膀,我們用點(diǎn)擊屏幕來模擬飛行。

inside 判斷障礙物是否在屏幕內(nèi)。

draw 用來繪制小鳥和障礙物,這里其實(shí)都是點(diǎn),不同的是小鳥為綠色表示正常,紅色表示失敗。障礙物都用黑色表示。這里有個(gè)傳入的參數(shù) alive,用來根據(jù)小鳥的死活來繪制不同的顏色。同時(shí),繪制障礙物時(shí),注意用 goto 調(diào)整不同的位置,以繪制出不同位置的障礙物小球。

move 函數(shù)的功能就比較多了,首先要有小鳥的自動(dòng)降落,表示如果不扇動(dòng)翅膀就會(huì)掉到地上死翹翹了。然后需要繪制黑色小球表示障礙物。這里障礙物相對(duì)小鳥是往左移動(dòng)的,所以 x 設(shè)置為-3(函數(shù)最后有 ontimer(move, 50)表示定時(shí)移動(dòng))。接下來是隨機(jī)模擬不同位置的障礙物,這里主要是縱坐標(biāo) y 在屏幕內(nèi)的變化。接下來判斷如果障礙物已經(jīng)不再屏幕內(nèi),就從列表里面移除。我這里添加了一個(gè) score 變量,在順利躲避了障礙之后,用來累計(jì)分?jǐn)?shù)。之后判斷 bird 的位置如果不在屏幕內(nèi),就給上面的 draw 函數(shù)添加參數(shù) False,然后 return 退出。一切正常的話,就循環(huán)判斷所有的障礙物,判斷小鳥和障礙物的位置是否小與一個(gè)閾值,這里寫的 15。當(dāng)小于這個(gè)值,表示相撞,小鳥就死翹翹了。最后在鳥的位置,繪制分?jǐn)?shù),這會(huì)是一個(gè)動(dòng)態(tài)刷新的過程。

感謝各位的閱讀,以上就是“Python怎么實(shí)現(xiàn)小游戲flappy-bird”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)Python怎么實(shí)現(xiàn)小游戲flappy-bird這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!


新聞標(biāo)題:Python怎么實(shí)現(xiàn)小游戲?flappy-bird
地址分享:http://weahome.cn/article/pcghhp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部