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

Python貪吃蛇小游戲?qū)嵗窒?/h1>
 更新時(shí)間:2021年09月06日 10:55:57   作者:Maggie晨曦  
這篇文章主要為大家詳細(xì)介紹了Python貪吃蛇小游戲?qū)嵗闹惺纠a介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了Python實(shí)現(xiàn)貪吃蛇小游戲的具體代碼,供大家參考,具體內(nèi)容如下

使用的庫

pygame 、random 、pyautogui

流程簡述

1.設(shè)置初始參數(shù)

設(shè)置每個(gè)網(wǎng)格大小為 20 px ,size可以隨意修改但最好為20的倍數(shù),設(shè)置初始方向向右,初始蛇長為 3 。

# 初始化參數(shù)
size = 320
screen = pygame.display.set_mode([size,size],0 , 32)
pygame.display.set_caption("貪吃蛇")
cell_size = 20
cell_num = int(size/20)
x , y = [60,0]
# 初始方向向右
dir_snake = 'R'
body_snake = [[0,0],[20,0],[40,0],[60,0]]
# 初始蛇長為3
len_snake = 3
# 初始食物坐標(biāo)
food_coor = [random.randint(0, cell_num - 1) * 20, random.randint(0, cell_num - 1) * 20, 20, 20]
# 蛇移動速度
clock = pygame.time.Clock()

2.鍵盤控制

鍵盤上下左右控制蛇方向,禁止反向。

3.食物

蛇頭吃到食物后,蛇長加一 ,random 一個(gè)隨機(jī)坐標(biāo),如果坐標(biāo)再蛇身上則繼續(xù) random。

if [x,y] == food_coor[:2]:
    food_coor = [random.randint(0, cell_num - 1) * 20, random.randint(0, cell_num - 1) * 20, 20, 20]
    if food_coor[:2] in body_snake[-2:-len_snake -1 :-1]:
        food_coor = [random.randint(0, cell_num - 1) * 20, random.randint(0, cell_num - 1) * 20, 20, 20]
    len_snake +=1

4. 勝負(fù)判斷

蛇頭與蛇身碰撞判輸,彈出游戲結(jié)束窗口,說明最終蛇長為多長。

if body_snake[-1] in body_snake[-2:-len_snake -1 :-1]:
    pyautogui.alert(text='游戲結(jié)束,最終蛇長為{}'.format(len_snake))
    exit()

代碼及結(jié)果

代碼

import pygame , random ,pyautogui
from pygame.locals import *
# 初始化參數(shù)
size = 500
screen = pygame.display.set_mode([size,size],0 , 32)
pygame.display.set_caption("貪吃蛇")
cell_size = 20
cell_num = int(size/20)
x , y = [60,0]
# 初始方向向右
dir_snake = 'R'
body_snake = [[0,0],[20,0],[40,0],[60,0]]
# 初始蛇長為3
len_snake = 3
# 初始食物坐標(biāo)
food_coor = [random.randint(0, cell_num - 1) * 20, random.randint(0, cell_num - 1) * 20, 20, 20]
# 蛇移動速度
clock = pygame.time.Clock()
# bg
def bg():
    for i in range(0, size , int(cell_size)):
        pygame.draw.line(screen,[72,72,72],[i,0],[i,size])
    for i in range(0, size, int(cell_size)):
        pygame.draw.line(screen, [72, 72, 72], [0, i], [size,i])
# 蛇
def snake(K):
    for x,y in K[:-len_snake - 1:-1]:
        pygame.draw.rect(screen,[255,255,255],[x,y,20,20],0)
# 食物
def food():
    pygame.draw.rect(screen,[255,0,0],food_coor,0)
# 主循環(huán)
def running():
    global x ,y , dir_snake ,food_coor , len_snake
    while True:
        for event in pygame.event.get():
            if event.type == QUIT:
                exit()
        screen.fill((40, 43, 46))
        # 方向規(guī)則
        if dir_snake == 'U':
            y -= 20
        elif dir_snake == 'R':
            x += 20
        elif dir_snake == 'D':
            y += 20
        elif dir_snake == 'L':
            x -= 20
        # 鍵盤方向控制
        if event.type == KEYDOWN:
            if event.key == K_LEFT and dir_snake != 'R':
                dir_snake = 'L'
            elif event.key == K_DOWN and dir_snake != 'U':
                dir_snake = 'D'
            elif event.key == K_RIGHT and dir_snake != 'L':
                dir_snake = 'R'
            elif event.key == K_UP and dir_snake != 'D':
                dir_snake = 'U'
        # 撞墻之后
        if x < 0:
            x += size
        elif x >= size:
            x -= size
        elif y < 0:
            y += size
        elif y >= size:
            y -= size
        # draw蛇體
        body_snake.append([x,y])
        snake(body_snake)
        food()
        # 吃到食物后food換位置
        if [x,y] == food_coor[:2]:
            food_coor = [random.randint(0, cell_num - 1) * 20, random.randint(0, cell_num - 1) * 20, 20, 20]
            if food_coor[:2] in body_snake[-2:-len_snake -1 :-1]:
                food_coor = [random.randint(0, cell_num - 1) * 20, random.randint(0, cell_num - 1) * 20, 20, 20]
            len_snake +=1
        # 游戲結(jié)束
        if body_snake[-1] in body_snake[-2:-len_snake -1 :-1]:
            pyautogui.alert(text='游戲結(jié)束,最終蛇長為{}'.format(len_snake))
            exit()
        # 格線
        bg()
        # 右下角顯示蛇長
        font = pygame.font.SysFont("simsunnsimsun", 40)
        text_surface = font.render("{}".format(len_snake), True, (255,255, 255))
        screen.blit(text_surface , (size-40,size-40))
        pygame.display.update()
        # 蛇的移動速度隨著蛇的長度而越來越快
        clock.tick(len_snake * 2)

if __name__ == '__main__':
    pygame.init()
    running()

輸出結(jié)果

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

相關(guān)文章

  • Python中所有子圖標(biāo)簽Legend顯示問題記錄

    Python中所有子圖標(biāo)簽Legend顯示問題記錄

    在Python中,利用matplotlib創(chuàng)建的子圖可以很容易地添加圖例,無論是為每個(gè)子圖單獨(dú)添加,還是統(tǒng)一在一起,本文詳細(xì)介紹了如何在多個(gè)子圖中顯示圖例,包括全局圖例的顯示、圖例樣式的調(diào)整和圖例位置的調(diào)整等,需要的朋友可以參考下
    2024-12-12
  • Python創(chuàng)建二維數(shù)組實(shí)例(關(guān)于list的一個(gè)小坑)

    Python創(chuàng)建二維數(shù)組實(shí)例(關(guān)于list的一個(gè)小坑)

    下面小編就為大家?guī)硪黄狿ython創(chuàng)建二維數(shù)組實(shí)例(關(guān)于list的一個(gè)小坑)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-11-11
  • Python實(shí)現(xiàn)基于HTTP文件傳輸實(shí)例

    Python實(shí)現(xiàn)基于HTTP文件傳輸實(shí)例

    這篇文章主要介紹了Python實(shí)現(xiàn)基于HTTP文件傳輸?shù)姆椒?以實(shí)例形式詳細(xì)講述了server端與client端的實(shí)現(xiàn)代碼,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2014-11-11
  • python 6.7 編寫printTable()函數(shù)表格打印(完整代碼)

    python 6.7 編寫printTable()函數(shù)表格打印(完整代碼)

    這篇文章主要介紹了python 6.7 編寫一個(gè)名為printTable()的函數(shù) 表格打印,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-03-03
  • Python實(shí)現(xiàn)簡單文本字符串處理的方法

    Python實(shí)現(xiàn)簡單文本字符串處理的方法

    這篇文章主要介紹了Python實(shí)現(xiàn)簡單文本字符串處理的方法,涉及Python針對文本字符串的切割、計(jì)算、轉(zhuǎn)換等相關(guān)操作技巧,需要的朋友可以參考下
    2018-01-01
  • Python操作word文檔插入圖片和表格的實(shí)例演示

    Python操作word文檔插入圖片和表格的實(shí)例演示

    這篇文章主要給大家介紹了關(guān)于Python操作word文檔插入圖片和表格的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • python使用scrapy解析js示例

    python使用scrapy解析js示例

    這篇文章主要介紹了python使用scrapy解析js的示例,大家參考使用吧
    2014-01-01
  • Python 爬蟲模擬登陸知乎

    Python 爬蟲模擬登陸知乎

    這篇文章主要介紹了Python 爬蟲模擬登陸知乎的相關(guān)資料,非常不錯,具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-09-09
  • 跟老齊學(xué)Python之使用Python查詢更新數(shù)據(jù)庫

    跟老齊學(xué)Python之使用Python查詢更新數(shù)據(jù)庫

    前面我們講述了使用python操作數(shù)據(jù)庫,今天我們來更進(jìn)一步,介紹下python查詢、更新數(shù)據(jù)庫的相關(guān)操作。有需要的小伙伴自己參考下吧。
    2014-11-11
  • python實(shí)現(xiàn)的DES加密算法和3DES加密算法實(shí)例

    python實(shí)現(xiàn)的DES加密算法和3DES加密算法實(shí)例

    這篇文章主要介紹了python實(shí)現(xiàn)的DES加密算法和3DES加密算法,以實(shí)例形式較為詳細(xì)的分析了DES加密算法和3DES加密算法的原理與實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2015-06-06

最新評論

邢台市| 贵港市| 灵山县| 报价| 永川市| 镇远县| 达孜县| 东莞市| 南靖县| 右玉县| 道孚县| 诸城市| 屏东县| 郁南县| 阳朔县| 晋中市| 什邡市| 天台县| 天水市| 宜宾市| 海兴县| 米易县| 固安县| 衡南县| 厦门市| 临洮县| 镇赉县| 茂名市| 开封市| 略阳县| 望江县| 兴宁市| 宜春市| 金堂县| 乳源| 安义县| 马关县| 富蕴县| 东乌珠穆沁旗| 唐河县| 通海县|