Python 我是否实施了Prim';s算法正确吗迷宫生成

Python 我是否实施了Prim';s算法正确吗迷宫生成,python,maze,procedural-generation,prims-algorithm,Python,Maze,Procedural Generation,Prims Algorithm,我对Python相当陌生,最近开始创建一个游戏,我希望它完全在终端中进行。游戏的一个方面是创建一个随机迷宫,所以我决定使用随机形式的Prim算法,如下所述- 代码是有效的,但是迷宫感觉很“容易”,好像通道之间有太多的连接。我不知道这是因为我做错了,还是只是算法的一个特点。不管怎样,我都希望有人能解释如何解决这个问题;记住我还是个初学者 import random def printout(*args): for arg in args: print(*arg, sep='') M

我对Python相当陌生,最近开始创建一个游戏,我希望它完全在终端中进行。游戏的一个方面是创建一个随机迷宫,所以我决定使用随机形式的Prim算法,如下所述-

代码是有效的,但是迷宫感觉很“容易”,好像通道之间有太多的连接。我不知道这是因为我做错了,还是只是算法的一个特点。不管怎样,我都希望有人能解释如何解决这个问题;记住我还是个初学者

import random

def printout(*args):
  for arg in args:
    print(*arg, sep='')

Map = [["░" for k in range(40)] for l in range(20)]

def Prim(Map):
  Wall_List = []
  position = [0,20]
  Map[0][20]= " "

  for i in range(420):

    if Map[(position[0]+2)%20][position[1]] == "░":
      Wall_List.append([(position[0]+2)%20,position[1]])
    if Map[(position[0]-2)%20][position[1]] == "░":
      Wall_List.append([(position[0]-2)%20,position[1]])
    if Map[position[0]][(position[1]+2)%40] == "░":
      Wall_List.append([position[0],(position[1]+2)%40])
    if Map[position[0]][(position[1]-2)%40] == "░":
      Wall_List.append([position[0],(position[1]-2)%40])

    cellposition = random.choice(Wall_List)
    joiningwalls = []

    if Map[(cellposition[0]+2)%20][cellposition[1]] == " ":
      joiningwalls.append([(cellposition[0]+1)%20,cellposition[1]])
    if Map[(cellposition[0]-2)%20][cellposition[1]] == " ":
      joiningwalls.append([(cellposition[0]-1)%20,cellposition[1]])
    if Map[cellposition[0]][(cellposition[1]+2)%40] == " ":
      joiningwalls.append([cellposition[0],(cellposition[1]+1)%40])
    if Map[cellposition[0]][(cellposition[1]-2)%40] == " ":
      joiningwalls.append([cellposition[0],(cellposition[1]-1)%40])

    joiningcell = random.choice(joiningwalls)
    Map[joiningcell[0]][joiningcell[1]] = " "
    Map[cellposition[0]][cellposition[1]] = " "

    position = cellposition
    Wall_List.remove(cellposition)

  return Map

Map = Prim(Map)
printout(*Map)