<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          太好玩了!我用 Python 制作一款小游戲!

          共 3653字,需瀏覽 8分鐘

           ·

          2020-11-30 13:39

          超級瑪麗、魂斗羅、坦克大戰(zhàn)、冒險島……提到這些游戲,"80后"、"90后"滔滔不絕,掀起一波回憶殺。

          最近不少媒體發(fā)文稱:"小霸王被申請破產(chǎn)"。其實,不管有沒有破產(chǎn),小霸王終究只能成為童年回憶了,它的落寞是不爭的事實,曾風靡全國的光輝再也回不去了。

          今天我來用 Python 制作一個曾經(jīng)標志性的游戲:「貪吃蛇」。學習和趣味兩不耽誤的coding。讓我們開始構(gòu)建游戲吧。

          導入庫

          首先,我們需要將庫導入到代碼中,這些代碼將用于構(gòu)建游戲。我們需要下面的庫來構(gòu)建和運行我們的游戲。

          import?pygame
          import?time
          import?random

          說明如下:

          • pygame:此庫將幫助我們獲取所有圖形組件來構(gòu)建游戲。
          • random:這個庫將幫助我們在游戲中隨機位置生成食物。
          • time:這有助于我們在游戲中與時間相關(guān)的功能,如蛇的速度。

          啟動游戲并設(shè)置圖形

          現(xiàn)在,讓我們開始構(gòu)建游戲部分。我們將首先初始化游戲。

          pygame.init()

          我們在游戲中定義了6種顏色。

          white?=?(255,?255,?255)
          yellow?=?(255,?255,?102)
          black?=?(0,?0,?0)
          red?=?(213,?50,?80)
          green?=?(0,?255,?0)
          blue?=?(50,?153,?213)

          接下來,我們應(yīng)該定義游戲運行的顯示的大小。將高度定義為 600px,寬度定義為 800px。

          width?=?800
          height?=?600

          接下來,我們將使用定義游戲標題的游戲名稱。

          dis?=?pygame.display.set_mode((width,?height))
          pygame.display.set_caption("Snake?Game")

          定義游戲中使用的變量

          現(xiàn)在我們將初始化時鐘變量,該變量將使用我們之前導入的時間包。

          clock?=?pygame.time.Clock()

          定義我們的蛇的速度,以及蛇塊的大小。

          snake_block?=?10
          snake_speed?=?12

          接下來,我們定義字體大小和字體樣式,用于顯示分數(shù)。

          font_style?=?pygame.font.SysFont(“bahnschrift”,?25)
          score_font?=?pygame.font.SysFont(“comicsansms”,?35)

          定義幫助器函數(shù)

          在這里,我們需要定義三個幫助器函數(shù),用于以下目的:用于顯示分數(shù)、處理蛇和處理游戲中其他相關(guān)信息的顯示。

          def?Your_score(score):
          ????value?=?score_font.render("Your?Score:?"?+?str(score),?True,?yellow)
          ????dis.blit(value,?[0,?0]
          ????
          def?our_snake(snake_block,?snake_list):
          ???for?x?in?snake_list:
          ???pygame.draw.rect(dis,?black,?[x[0],?x[1],?snake_block,?snake_block])
          ?
          def?message(msg,?colour):
          ???mesg?=?font_style.render(msg,?True,?colour)
          ???dis.blit(mesg,?[width?/?6,?height?/?3])

          構(gòu)建游戲循環(huán)

          現(xiàn)在,我們開始構(gòu)建游戲的組件,使其運行并通過鍵盤響應(yīng)用戶輸入。

          我們首先定義兩個布爾變量:game_over和game_close。他們將描述游戲狀態(tài)。

          第一個會告訴游戲是否結(jié)束。下一個變量定義游戲是否關(guān)閉,我們需要再次玩游戲。我們把兩者定義為假。

          game_over?=?False
          game_close?=?False

          下一步,我們的目標是定義游戲中需要的其他變量。

          x1?=?width?/?2
          y1?=?height?/?2
          x1_change?=?0
          y1_change?=?0
          snake_List?=?[]
          snake_length?=?1
          foodx?=?round(random.randrange(0,?width?—?snake_block)?/?10.0)?*?10.0
          foody?=?round(random.randrange(0,?height?—?snake_block)?/?10.0)?*?10.0

          接下來,我們將啟動一個循環(huán),該循環(huán)將game_over變?yōu)門rue。

          在該循環(huán)中,我們將首先定義要執(zhí)行的指令,以防game_close為 True。

          下面是代碼,這將有助于我們解決這種情況時,game_close等于真。

          while?game_close?==?True:
          ?dis.fill(blue)
          ?message(“Oops!?Your?snake?died!?Press?P?to?play?again?or?Q?to?quit”,?red)
          ?Your_score(snake_length?—?1)
          ?pygame.display.update()
          ?
          ?for?event?in?pygame.event.get():
          ???if?event.type?==?pygame.KEYDOWN:
          ?????if?event.key?==?pygame.K_q:
          ???????game_over?=?True
          ???????game_close?=?False
          ?????if?event.key?==?pygame.K_p:
          ???????gameLoop()

          現(xiàn)在,在處理game_close條件后,我們接下來將定義所有必需的步驟,這些步驟將允許我們的蛇通過用戶的輸入移動。我們將接受 W, A, S, D 和向上, 向下, 左右鍵組合玩游戲。您可以自由選擇您選擇的鍵來玩游戲。

          for?event?in?pygame.event.get():
          ?if?event.type?==?pygame.QUIT:
          ???game_over?=?True
          ?if?event.type?==?pygame.KEYDOWN:
          ???if?event.key?==?pygame.K_LEFT?or?event.key?==?pygame.K_a:
          ?????x1_change?=?-snake_block
          ?????y1_change?=?0
          ???elif?event.key?==?pygame.K_RIGHT?or?event.key?==?pygame.K_d:
          ?????x1_change?=?snake_block
          ?????y1_change?=?0
          ???elif?event.key?==?pygame.K_UP?or?event.key?==?pygame.K_w:
          ?????y1_change?=?-snake_block
          ?????x1_change?=?0
          ???elif?event.key?==?pygame.K_DOWN?or?event.key?==?pygame.K_s:
          ?????y1_change?=?snake_block
          ?????x1_change?=?0

          接下來,我們將定義輸?shù)舯荣惖臈l件。

          ?if?x1?>=?width?or?x1?=?height?or?y1?????game_close?=?True
          ?x1?+=?x1_change
          ?y1?+=?y1_change
          ?dis.fill(blue)
          ?pygame.draw.rect(dis,?green,?[foodx,?foody,?snake_block,?snake_block])

          然后,我們調(diào)用our_snake Your_score(定義在之前),并傳遞給這些函數(shù)所需的參數(shù),以顯示更新的蛇和玩家的分數(shù)。

          ?snake_Head?=?[]
          ?snake_Head.append(x1)
          ?snake_Head.append(y1)
          ?snake_List.append(snake_Head)
          ?if?len(snake_List)?>?snake_length:
          ???del?snake_List[0]
          ?
          ?for?x?in?snake_List[:-1]:
          ???if?x?==?snake_Head:
          ?????game_close?=?True
          ?
          ?our_snake(snake_block,?snake_List)
          ?Your_score(snake_length?—?1)
          ?
          ?pygame.display.update()

          接下來,我們將蛇速作為時鐘的參數(shù)。

          if?x1?==?foodx?and?y1?==?foody:
          ??foodx?=?round(random.randrange(0,?width?—?snake_block)?/?10.0)?*?10.0
          ??foody?=?round(random.randrange(0,?height?—?snake_block)?/?10.0)?*?10.0
          ??snake_length?+=?1
          ?
          clock.tick(snake_speed)

          我們的游戲快結(jié)束了。最后一步,我們需要退出游戲,并再次調(diào)用游戲循環(huán)。

          ??pygame.quit()
          ??quit()
          gameLoop()

          我們已經(jīng)完成了貪吃蛇游戲。完整版貪吃蛇游戲代碼如下

          領(lǐng)取方式:


          長按掃碼,發(fā)消息?[貪吃蛇]


          瀏覽 96
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  最近中文字幕av 最新草比视频网站 | 成人黄色性生活aV免费看 | www,黄色在线观看 | 国产免费成人在线视频 | 国产亚洲欧美精品久久久www |