1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

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

        共 3653字,需瀏覽 8分鐘

         ·

        2020-11-30 13:39

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

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

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

        導(dǎo)入庫(kù)

        首先,我們需要將庫(kù)導(dǎo)入到代碼中,這些代碼將用于構(gòu)建游戲。我們需要下面的庫(kù)來(lái)構(gòu)建和運(yùn)行我們的游戲。

        import?pygame
        import?time
        import?random

        說(shuō)明如下:

        • pygame:此庫(kù)將幫助我們獲取所有圖形組件來(lái)構(gòu)建游戲。
        • random:這個(gè)庫(kù)將幫助我們?cè)谟螒蛑须S機(jī)位置生成食物。
        • time:這有助于我們?cè)谟螒蛑信c時(shí)間相關(guān)的功能,如蛇的速度。

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

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

        pygame.init()

        我們?cè)谟螒蛑卸x了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)

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

        width?=?800
        height?=?600

        接下來(lái),我們將使用定義游戲標(biāo)題的游戲名稱(chēng)。

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

        定義游戲中使用的變量

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

        clock?=?pygame.time.Clock()

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

        snake_block?=?10
        snake_speed?=?12

        接下來(lái),我們定義字體大小和字體樣式,用于顯示分?jǐn)?shù)。

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

        定義幫助器函數(shù)

        在這里,我們需要定義三個(gè)幫助器函數(shù),用于以下目的:用于顯示分?jǐn)?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)在,我們開(kāi)始構(gòu)建游戲的組件,使其運(yùn)行并通過(guò)鍵盤(pán)響應(yīng)用戶(hù)輸入。

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

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

        game_over?=?False
        game_close?=?False

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

        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

        接下來(lái),我們將啟動(dòng)一個(gè)循環(huán),該循環(huán)將game_over變?yōu)門(mén)rue。

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

        下面是代碼,這將有助于我們解決這種情況時(shí),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條件后,我們接下來(lái)將定義所有必需的步驟,這些步驟將允許我們的蛇通過(guò)用戶(hù)的輸入移動(dòng)。我們將接受 W, A, S, D 和向上, 向下, 左右鍵組合玩游戲。您可以自由選擇您選擇的鍵來(lái)玩游戲。

        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

        接下來(lái),我們將定義輸?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ù),以顯示更新的蛇和玩家的分?jǐn)?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()

        接下來(lái),我們將蛇速作為時(shí)鐘的參數(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)取方式:


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


        瀏覽 96
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            黄色动漫在线看 | 欧美精品性爱 | 超碰欧美在线 | 夜夜揉揉日日人人视频 | av中文字 | 国产老女人操逼视频 | 午夜视频在线播放 | 欧美a级黄色片 | 国产一级a毛一级a看免费观看 | 巨肉黄暴辣文高h公主 |