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

Python利用Prim算法生成迷宮

 更新時(shí)間:2023年01月06日 09:03:13   作者:Leleprogrammer  
普里姆算法(Prim算法),圖論中的一種算法,可在加權(quán)連通圖里搜索最小生成樹。這篇文章將利用Prim算法實(shí)現(xiàn)迷宮的生成,感興趣的可以了解一下

Prim算法隨機(jī)生成后的迷宮數(shù)列矩陣如下圖:

15x15:

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 s 0 1 0 1 0 1 1 1 1 1 0 1 0 
0 1 0 1 0 1 0 0 0 1 0 0 0 1 0 
0 1 1 1 1 1 1 1 1 1 1 1 0 1 0 
0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 
0 1 0 1 1 1 0 1 1 1 0 1 0 1 0 
0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 
0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 
0 1 0 1 0 0 0 1 0 0 0 1 0 0 0 
0 1 0 1 0 1 1 1 0 1 1 1 1 1 0 
0 1 0 1 0 0 0 1 0 0 0 1 0 1 0 
0 1 0 1 0 1 1 1 1 1 0 1 0 1 0 
0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 
0 1 1 1 0 1 1 1 1 1 1 e 0 1 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 

27x27:

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 s 1 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 1 1 1 1 0 
0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 
0 1 1 1 0 1 0 1 1 1 0 1 0 1 1 1 1 1 0 1 0 1 1 1 1 1 0 
0 0 0 1 0 1 0 0 0 1 0 1 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 
0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 0 1 1 1 0 
0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 1 0 0 0 
0 1 0 1 0 1 0 1 0 1 1 1 0 1 1 1 0 1 0 1 0 1 0 1 1 1 0 
0 0 0 1 0 1 0 1 0 0 0 1 0 1 0 0 0 1 0 1 0 1 0 1 0 0 0 
0 1 0 1 1 1 0 1 0 1 0 1 1 1 0 1 0 1 1 1 0 1 1 1 1 1 0 
0 1 0 0 0 1 0 1 0 1 0 1 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 
0 1 0 1 1 1 1 1 1 1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 0 1 0 
0 1 0 0 0 0 0 1 0 0 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 1 0 
0 1 1 1 1 1 1 1 0 1 0 1 1 1 0 1 1 1 1 1 0 1 0 1 0 1 0 
0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 1 0 0 0 0 0 1 0 1 0 1 0 
0 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 
0 0 0 1 0 0 0 1 0 1 0 1 0 1 0 1 0 0 0 0 0 1 0 1 0 1 0 
0 1 1 1 1 1 1 1 0 1 0 1 0 1 0 1 1 1 1 1 0 1 0 1 0 1 0 
0 0 0 1 0 1 0 1 0 1 0 0 0 0 0 1 0 1 0 1 0 1 0 0 0 0 0 
0 1 1 1 0 1 0 1 0 1 0 1 1 1 1 1 0 1 0 1 0 1 1 1 1 1 0 
0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 1 0 1 0 1 0 
0 1 1 1 1 1 1 1 0 1 0 1 1 1 0 1 1 1 1 1 0 1 0 1 0 1 0 
0 1 0 1 0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 
0 1 0 1 0 1 0 1 0 1 1 1 1 1 0 1 1 1 1 1 0 1 0 1 1 1 0 
0 1 0 0 0 0 0 1 0 0 0 1 0 1 0 1 0 1 0 0 0 1 0 0 0 0 0 
0 1 1 1 e 1 0 1 0 1 1 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 

實(shí)現(xiàn)該效果的代碼如下: 

import random as rd
 
nearmaybe=[
    [-2,0],
    [2,0],
    [0,-2],
    [0,2]
]
 
def createMaze(row,col):
    maze=[[0 for i in range(col)] for i in range(row)]
    check=[]
    firstrow=rd.randrange(1,row-2,2)
    firstcol=rd.randrange(1,col-2,2)
    maze[firstrow][firstcol]=1
    check.append([firstrow,firstcol])
    while len(check):
        c=rd.choice(check)
        nears=[]
        conditions=[]
        for maybe in nearmaybe:
            conditions.append([c[0]+maybe[0],c[1]+maybe[1]])
        for condition in conditions:
            if condition[0]>=1 and condition[0]<=row-2 \
                    and condition[1]>=1 and condition[1]<=col-2:
                nears.append([condition[0],condition[1]])
        for n in nears.copy():
            if maze[n[0]][n[1]]:
                nears.remove(n)
        for block in nears:
            if block[0]==c[0]:
                if block[1]<c[1]:
                    maze[block[0]][c[1]-1]=1
                    maze[block[0]][block[1]]=1
                    check.append([block[0],block[1]])
                else:
                    maze[block[0]][block[1]-1]=1
                    maze[block[0]][block[1]]=1
                    check.append([block[0],block[1]])
            else:
                if block[0]<c[0]:
                    maze[c[0]-1][block[1]]=1
                    maze[block[0]][block[1]]=1
                    check.append([block[0],block[1]])
                else:
                    maze[block[0]-1][block[1]]=1
                    maze[block[0]][block[1]]=1
                    check.append([block[0],block[1]])
        if not len(nears):
            check.remove(c)
    maze[1][1]="s"
    while True:
        c=rd.randint(1,col-2)
        if maze[row-2][c]:
            maze[row-2][c]="e"
            break
 
    return maze

調(diào)用該函數(shù)的方法:

maze=createMaze(27,27)
for l in maze:
    for s in l:
        print(s,end=" ")
    print()

CreateMaze傳入的兩個(gè)參數(shù)必須都是單數(shù),否則程序可能會(huì)無法運(yùn)行!

下面的for循環(huán)遍歷就是將生成的迷宮矩陣打印出來

S表示出發(fā)點(diǎn)

1表示路

0表示墻

E表示終點(diǎn)

生成迷宮矩陣后,就可以將其引用到游戲中去啦!

到此這篇關(guān)于Python利用Prim算法生成迷宮的文章就介紹到這了,更多相關(guān)Python Prim生成迷宮內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 如何讀取.npy文件以及如何實(shí)現(xiàn)將數(shù)組保存為圖片

    如何讀取.npy文件以及如何實(shí)現(xiàn)將數(shù)組保存為圖片

    這篇文章主要介紹了如何讀取.npy文件以及如何實(shí)現(xiàn)將數(shù)組保存為圖片問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • Python通過requests模塊實(shí)現(xiàn)抓取王者榮耀全套皮膚

    Python通過requests模塊實(shí)現(xiàn)抓取王者榮耀全套皮膚

    只學(xué)書上的理論是遠(yuǎn)遠(yuǎn)不如實(shí)踐帶來的提升快,只有在實(shí)例中才能獲得能力的提升,本篇文章手把手帶你用Python實(shí)現(xiàn)抓取王者榮耀全套皮膚,大家可以在過程中查缺補(bǔ)漏,提升水平
    2021-10-10
  • python3 cookbook中常遇問題解答

    python3 cookbook中常遇問題解答

    本文主要介紹了python3 cookbook中常遇問題解答,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • python 基于wx實(shí)現(xiàn)音樂播放

    python 基于wx實(shí)現(xiàn)音樂播放

    這篇文章主要介紹了python 基于wx實(shí)現(xiàn)音樂播放的示例代碼,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下
    2020-11-11
  • Python人工智能構(gòu)建簡單聊天機(jī)器人示例詳解

    Python人工智能構(gòu)建簡單聊天機(jī)器人示例詳解

    這篇文章主要為大家介紹了Python人工智能構(gòu)建簡單聊天機(jī)器人示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • python Event事件、進(jìn)程池與線程池、協(xié)程解析

    python Event事件、進(jìn)程池與線程池、協(xié)程解析

    這篇文章主要介紹了python Event事件、進(jìn)程池與線程池、協(xié)程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • 在Python中使用SQLite的簡單教程

    在Python中使用SQLite的簡單教程

    這篇文章主要介紹了在Python中使用SQLite的簡單教程,SQLite作為嵌入式數(shù)據(jù)庫被內(nèi)置于歷代Python版本中,需要的朋友可以參考下
    2015-04-04
  • Python 元組(Tuple)操作詳解

    Python 元組(Tuple)操作詳解

    Python的元組與列表類似,不同之處在于元組的元素不能修改,元組使用小括號(hào),列表使用方括號(hào),元組創(chuàng)建很簡單,只需要在括號(hào)中添加元素,并使用逗號(hào)隔開即可
    2014-03-03
  • Mysql數(shù)據(jù)庫反向生成Django里面的models指令方式

    Mysql數(shù)據(jù)庫反向生成Django里面的models指令方式

    這篇文章主要介紹了Mysql數(shù)據(jù)庫反向生成Django里面的models指令方式,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • Python學(xué)習(xí)之sys模塊使用教程詳解

    Python學(xué)習(xí)之sys模塊使用教程詳解

    sys模塊?與?os包一樣,也是對系統(tǒng)資源進(jìn)行調(diào)用。功能同樣也是非常豐富。本文將對sys模塊的一些簡單且常用的函數(shù)進(jìn)行介紹,感興趣的可以學(xué)習(xí)一下
    2022-03-03

最新評(píng)論

会宁县| 白河县| 淳化县| 措勤县| 银川市| 墨竹工卡县| 阳新县| 鸡西市| 普兰县| 涞水县| 湘潭县| 汝阳县| 正阳县| 南华县| 晋宁县| 遂昌县| SHOW| 搜索| 长沙县| 庆云县| 天水市| 龙南县| 波密县| 四平市| 兴文县| 屯留县| 浮梁县| 新昌县| 夏邑县| 庆阳市| 黄浦区| 哈尔滨市| 湖州市| 河池市| 宜宾县| 康马县| 英山县| 台安县| 新晃| 南溪县| 蕉岭县|