iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python如何实现迷宫生成器
  • 570
分享到

Python如何实现迷宫生成器

2023-07-02 16:07:02 570人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章主要介绍了python如何实现迷宫生成器的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python如何实现迷宫生成器文章都会有所收获,下面我们一起来看看吧。首先展示一下效果图:我们先分析一下所需的库:既

这篇文章主要介绍了python如何实现迷宫生成器的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python如何实现迷宫生成器文章都会有所收获,下面我们一起来看看吧。

首先展示一下效果图:

Python如何实现迷宫生成器

我们先分析一下所需的库:

既然是生成器,每次生成的迷宫一模一样显然是说不过去的。因此,我们不可避免地要使用随机数(Random库)。迷宫一定是要绘制的,所以需要有一个GUI库或绘图库,这里我使用Pygame(Tkinter或Turtle其实都可以做到,但毕竟Pygame比较顺手)。与Pygame搭配,Sys似乎也是需要的(用于退出程序,但其实不使用似乎也无伤大雅)。然后是Tkinter.filedialog,主要用于询问保存路径(生成的迷宫总得保存吧)。当然,用Time加一个计时器似乎是锦上添花。

于是,就有:

#coding:utf-8import contextlibwith contextlib.redirect_stdout(None):    import pygameimport randomimport sysimport timefrom tkinter.filedialog import *

这里要说明的是,由于导入Pygame时会输出版本信息等很多内容(这很影响美感),我们需要使用Contextlib阻止它输出。

接下来,我们需要询问一些参数:

a=int(input("列数:"))b=int(input("行数:"))l=int(input("大小:"))saveit=input("是否保存:")

然后,就要运行生成迷宫的程序了。同时,我们有必要计录一下时间(相当于开启计时器):

print("生成中...")e = time.time()

然后就是正式生成迷宫。在介绍这部分代码之前,我们需要了解一下算法

第一步,生成一个由迷宫单元(白格)和墙(黑格)组成的网格。一行中迷宫单元的数量为迷宫的列数,一列找迷宫单元的数量为迷宫的行数。令左上角的迷宫单元为起点,右下角的迷宫单元为终点,打破起点左边与终点右边的墙,如图所示:

Python如何实现迷宫生成器

第二步,访问各迷宫单元。将起点标记为当前迷宫单元,当存在未被访问的迷宫单元(凡是曾经成为过当前迷宫单元的迷宫单元,都视为已访问)时,重复执行:

  • 将周围的未被访问的迷宫单元加入表格;

  •  如果表格中有迷宫单元:

    • 将当前迷宫单元入栈(可以理解为将其加入一个叫做栈的表格);

    • 从表格中随机选择一个迷宫单元;

    • 打破当前迷宫单元与选择的迷宫单元之间的墙;

    • 将选择的迷宫单元标记为当前迷宫单元;

  • 如果表格中没有迷宫单元:

    • 栈顶迷宫单元出栈(可以理解为将栈中的最后一个元素获取并删除);

    • 将出栈的迷宫单元设为当前迷宫单元;

在循环结束以后,就会出现像文章开头效果图一样的结果。

接下来,我们就要将文字化的算法转化为Python的代码。

首先,程序是不认识图片的,它认识的是数据。所以我们需要设置一个二维列表,以此来用一串数据表示当前的图像。当然,我们可以顺便将第一步的设置一起完成:

alist = []aa=0need=[]for j in range(2*a+1):    if aa==0:        aa = 1        alistone = []        for i in range(2*b+1):            alistone.append(1)        alist.append(alistone)    else:        aa=0        alistone = []        bb=0        for i in range(2*b+1):            if bb==0:                bb=1                alistone.append(1)            else:                bb = 0                need.append((j,i))                alistone.append(0)        alist.append(alistone)alist[0][1]=0alist[-1][-2]=0

可以看到,除此以外我们还建立了一个列表need,里面存储了所有的迷宫单元。它的作用就是判断迷宫单元是否被访问,每次访问都会将迷宫单元从表格中删除,当表格中没有迷宫单元时,就说明所有迷宫单元都被访问了。

x=1y=1need.remove((1, 1))listing=[]while len(need)>0:    aroundit=[]    try:        if x-2<0:            print(1+"1")        alist[x-2][y]=0        if (x-2,y) in need:            aroundit.append("alist[x-1][y],x=(0,x-2)")    except:        while False:            print()    try:        alist[x+2][y]=0        if (x+2,y) in need:            aroundit.append("alist[x+1][y],x=(0,x+2)")    except:        while False:            print()    try:        alist[x][y+2]=0        if (x,y+2) in need:            aroundit.append("alist[x][y+1],y=(0,y+2)")    except:        while False:            print()    try:        if y-2<0:            print(1+"1")        alist[x][y-2]=0        if (x,y-2) in need:            aroundit.append("alist[x][y-1],y=(0,y-2)")    except:        while False:            print()    if len(aroundit)>0:        listing.append((x,y))        exec(random.choice(aroundit))        need.remove((x, y))    else:        x,y=listing[-1]        listing.pop()

而这些内容,就是第二步。其算法我已经解释过,唯一一个微小的不同是,在此处我们并没有在列表中加入相邻迷宫单元的坐标,而是将其对应的破墙和标记为当前迷宫单元的代码以字符串的形式存储在表格中,并在随机选择出某个迷宫单元所对应的字符串后,使用exec将其转换为代码并运行(这可以节省一些代码)。

print("完成!用时{}秒".fORMat(time.time()-e))

打印完生成迷宫的用时后,我们需要将表格中的数据转化为图像了。当然,在此之前,我们要先确定图片保存的位置。

if saveit=="1":    ccc = askdirectory()    h=""    bbbbb=1    while True:        try:            open("{}/{}×{}迷宫{}.png".format(ccc,a,b,h),"r")            h="({})".format(bbbbb)        except:            break        bbbbb+=1

由于使用时有可能选择不保存图片,因此要先判断你的选择是保存还是不保存。这里字符“1”表示保存(输入其他,自然就是不保存了)。然后我们需要让你选择保存路径(askdirectory()询问的是文件路径,不需要选择文件名)。然后,我们要确定文件名称:“a&times;b迷宫.png”。这里需要判断指定路径是否存在此名称的文件,如果存在,则我们需要在后面加上序号。总而言之,通过这串代码,我们已经将迷宫的路径+文件名确定了。

pygame.init()icon=pygame.image.load("迷宫.png")pygame.display.set_icon(icon)screen=pygame.display.Info()screen = pygame.display.set_mode((l*(2*a+1),l*(2*b+1)))pygame.display.set_caption('迷宫')screen.fill("white")c = pygame.Surface((l, l), flags=pygame.HWSURFACE)c.fill(color='white')d = pygame.Surface((l, l), flags=pygame.HWSURFACE)d.fill(color='black')for i in range(2*a+1):    for j in range(2*b+1):        if alist[i][j]==0:            screen.blit(c, (i*l, j*l))        elif alist[i][j]==1:            screen.blit(d, (i*l, j*l))pygame.display.flip()if saveit=="1":    pygame.image.save(screen, "{}/{}×{}迷宫{}.png".format(ccc, a, b, h))while True:    for event in pygame.event.get():        if event.type == pygame.QUIT:            pygame.quit()            sys.exit()

代码中使用的图片“迷宫.png”(名称不太对,下载以后要重新命名一下):

Python如何实现迷宫生成器

这里主要是Pygame的基本设置,并将表格内容图像化。每一个数字代表一个方块,而数字的值则决定了方块的颜色,数字在表格中的位置决定了方块的位置。就这样,我们呢将表格完全转化成了图像。当然,我们还需要用pygame.image.save()函数将图像保存为图片文件。

这样,这个生成器似乎完成了。

它运行良好,但当迷宫比较复杂时,暴露出一个问题(下图是100&times;100的迷宫):

Python如何实现迷宫生成器

由于正确路径过于曲折,在复杂度较高时,这个迷宫的难度会变得极高!

难度高,在某方面上讲,的确是好事。但当你向你的朋友们展示这个迷宫时,如果你自己也无法得出正确的路径,这不是很扫兴吗?

因此,一个寻路算法变得非常有必要。

寻路算法的大体思路:

在生成的迷宫中,白格为路,黑格为墙。将起点设置为当前位置,重复执行直到终点成为当前位置:

  • 将当前位置标记为正确路径;

  • 将周围未标记的路加入一个表格;

  • 如果表格不空:

    • 将当前位置入栈;

    • 从表格中随机选择一条路,并将其设为当前位置;

  • 如果表格是空的:

    • 栈顶的路出栈;

    • 将其设为当前位置;

通过这个算法,我们可以试出正确的路径(如图):

Python如何实现迷宫生成器

代码的实现:

x2=0y2=1listing2=[]while not(alist[-1][-2]==2):    alist[x2][y2]=3    around2=[]    try:        if x2-1<0:            print(1+"1")        if alist[x2-1][y2]==0:            around2.append("x2=x2-1")    except:        while False:            print()    try:        if alist[x2+1][y2]==0:            around2.append("x2=x2+1")    except:        while False:            print()    try:        if alist[x2][y2+1]==0:            around2.append("y2=y2+1")    except:        while False:            print()    try:        if y2-1<0:            print(1+"1")        if alist[x2][y2-1]==0:            around2.append("y2=y2-1")    except:        while False:            print()    if len(around2)>0:        listing2.append((x2,y2))        exec(random.choice(around2))    else:        alist[x2][y2]=2        x2,y2=listing2[-1]        listing2.pop()alist[-1][-2]=3for i in range(len(alist)):    for j in range(len(alist[0])):        if alist[i][j]==2:            alist[i][j]=0

同时,图像绘制的过程也要作出一些改动,以显示正确路径:

if saveit=="1":    ccc = askdirectory()    h=""    bbbbb=1    while True:        try:            open("{}/{}×{}迷宫{}.png".format(ccc,a,b,h),"r")            open("{}/{}×{}迷宫(正确线路){}.png".format(ccc,a,b,h),"r")            h="({})".format(bbbbb)        except:            break        bbbbb+=1pygame.init()icon=pygame.image.load("迷宫.png")pygame.display.set_icon(icon)screen=pygame.display.Info()screen = pygame.display.set_mode((l*(2*a+1),l*(2*b+1)))pygame.display.set_caption('迷宫')screen.fill("white")if saveit=="1":    c = pygame.Surface((l, l), flags=pygame.HWSURFACE)    c.fill(color='white')    d = pygame.Surface((l, l), flags=pygame.HWSURFACE)    d.fill(color='black')    f = pygame.Surface((l, l), flags=pygame.HWSURFACE)    f.fill(color='white')    for i in range(2 * a + 1):        for j in range(2 * b + 1):            if alist[i][j] == 0:                screen.blit(c, (i * l, j * l))            elif alist[i][j] == 1:                screen.blit(d, (i * l, j * l))            else:                screen.blit(f, (i * l, j * l))    pygame.image.save(screen, "{}/{}×{}迷宫{}.png".format(ccc, a, b, h))    c = pygame.Surface((l, l), flags=pygame.HWSURFACE)    c.fill(color='white')    d = pygame.Surface((l, l), flags=pygame.HWSURFACE)    d.fill(color='black')    f = pygame.Surface((l, l), flags=pygame.HWSURFACE)    f.fill(color='red')    for i in range(2 * a + 1):        for j in range(2 * b + 1):            if alist[i][j] == 0:                screen.blit(c, (i * l, j * l))            elif alist[i][j] == 1:                screen.blit(d, (i * l, j * l))            else:                screen.blit(f, (i * l, j * l))    pygame.image.save(screen, "{}/{}×{}迷宫(正确线路){}.png".format(ccc, a, b, h))c = pygame.Surface((l, l), flags=pygame.HWSURFACE)c.fill(color='white')d = pygame.Surface((l, l), flags=pygame.HWSURFACE)d.fill(color='black')f = pygame.Surface((l, l), flags=pygame.HWSURFACE)f.fill(color='white')for i in range(2*a+1):    for j in range(2*b+1):        if alist[i][j]==0:            screen.blit(c, (i*l, j*l))        elif alist[i][j]==1:            screen.blit(d, (i*l, j*l))        else:            screen.blit(f,(i*l, j*l))pygame.display.flip()aaaaaaa = 0while True:    for event in pygame.event.get():        if event.type == pygame.QUIT:            pygame.quit()            sys.exit()        if event.type == pygame.MOUSEBUTTONDOWN:            if aaaaaaa == 1:                aaaaaaa = 0                c = pygame.Surface((l, l), flags=pygame.HWSURFACE)                c.fill(color='white')                d = pygame.Surface((l, l), flags=pygame.HWSURFACE)                d.fill(color='black')                f = pygame.Surface((l, l), flags=pygame.HWSURFACE)                f.fill(color='white')                for i in range(2 * a + 1):                    for j in range(2 * b + 1):                        if alist[i][j] == 0:                            screen.blit(c, (i * l, j * l))                        elif alist[i][j] == 1:                            screen.blit(d, (i * l, j * l))                        else:                            screen.blit(f, (i * l, j * l))                pygame.display.flip()            else:                aaaaaaa = 1                c = pygame.Surface((l, l), flags=pygame.HWSURFACE)                c.fill(color='white')                d = pygame.Surface((l, l), flags=pygame.HWSURFACE)                d.fill(color='black')                f = pygame.Surface((l, l), flags=pygame.HWSURFACE)                f.fill(color='red')                for i in range(2 * a + 1):                    for j in range(2 * b + 1):                        if alist[i][j] == 0:                            screen.blit(c, (i * l, j * l))                        elif alist[i][j] == 1:                            screen.blit(d, (i * l, j * l))                        else:                            screen.blit(f, (i * l, j * l))                pygame.display.flip()

通过这些改动,显示正确路径的效果就实现了。生成完成以后,窗口上显示的是没有正确路径的迷宫,而点击窗口后,正确的路径就会显示(再次点击隐藏)。

刚刚那张100&times;100的迷宫,其正确路径是:

Python如何实现迷宫生成器

完整的代码:

#coding:utf-8import contextlibwith contextlib.redirect_stdout(None):    import pygameimport randomimport sysimport timefrom tkinter.filedialog import *a=int(input("列数:"))b=int(input("行数:"))l=int(input("大小:"))saveit=input("是否保存:")print("生成中...")e = time.time()alist = []aa=0need=[]for j in range(2*a+1):    if aa==0:        aa = 1        alistone = []        for i in range(2*b+1):            alistone.append(1)        alist.append(alistone)    else:        aa=0        alistone = []        bb=0        for i in range(2*b+1):            if bb==0:                bb=1                alistone.append(1)            else:                bb = 0                need.append((j,i))                alistone.append(0)        alist.append(alistone)alist[0][1]=0alist[-1][-2]=0x=1y=1need.remove((1, 1))listing=[]while len(need)>0:    aroundit=[]    try:        if x-2<0:            print(1+"1")        alist[x-2][y]=0        if (x-2,y) in need:            aroundit.append("alist[x-1][y],x=(0,x-2)")    except:        while False:            print()    try:        alist[x+2][y]=0        if (x+2,y) in need:            aroundit.append("alist[x+1][y],x=(0,x+2)")    except:        while False:            print()    try:        alist[x][y+2]=0        if (x,y+2) in need:            aroundit.append("alist[x][y+1],y=(0,y+2)")    except:        while False:            print()    try:        if y-2<0:            print(1+"1")        alist[x][y-2]=0        if (x,y-2) in need:            aroundit.append("alist[x][y-1],y=(0,y-2)")    except:        while False:            print()    if len(aroundit)>0:        listing.append((x,y))        exec(random.choice(aroundit))        need.remove((x, y))    else:        x,y=listing[-1]        listing.pop()x2=0y2=1listing2=[]while not(alist[-1][-2]==2):    alist[x2][y2]=3    around2=[]    try:        if x2-1<0:            print(1+"1")        if alist[x2-1][y2]==0:            around2.append("x2=x2-1")    except:        while False:            print()    try:        if alist[x2+1][y2]==0:            around2.append("x2=x2+1")    except:        while False:            print()    try:        if alist[x2][y2+1]==0:            around2.append("y2=y2+1")    except:        while False:            print()    try:        if y2-1<0:            print(1+"1")        if alist[x2][y2-1]==0:            around2.append("y2=y2-1")    except:        while False:            print()    if len(around2)>0:        listing2.append((x2,y2))        exec(random.choice(around2))    else:        alist[x2][y2]=2        x2,y2=listing2[-1]        listing2.pop()alist[-1][-2]=3for i in range(len(alist)):    for j in range(len(alist[0])):        if alist[i][j]==2:            alist[i][j]=0print("完成!用时{}秒".format(time.time()-e))if saveit=="1":    ccc = askdirectory()    h=""    bbbbb=1    while True:        try:            open("{}/{}×{}迷宫{}.png".format(ccc,a,b,h),"r")            open("{}/{}×{}迷宫(正确线路){}.png".format(ccc,a,b,h),"r")            h="({})".format(bbbbb)        except:            break        bbbbb+=1pygame.init()icon=pygame.image.load("迷宫.png")pygame.display.set_icon(icon)screen=pygame.display.Info()screen = pygame.display.set_mode((l*(2*a+1),l*(2*b+1)))pygame.display.set_caption('迷宫')screen.fill("white")if saveit=="1":    c = pygame.Surface((l, l), flags=pygame.HWSURFACE)    c.fill(color='white')    d = pygame.Surface((l, l), flags=pygame.HWSURFACE)    d.fill(color='black')    f = pygame.Surface((l, l), flags=pygame.HWSURFACE)    f.fill(color='white')    for i in range(2 * a + 1):        for j in range(2 * b + 1):            if alist[i][j] == 0:                screen.blit(c, (i * l, j * l))            elif alist[i][j] == 1:                screen.blit(d, (i * l, j * l))            else:                screen.blit(f, (i * l, j * l))    pygame.image.save(screen, "{}/{}×{}迷宫{}.png".format(ccc, a, b, h))    c = pygame.Surface((l, l), flags=pygame.HWSURFACE)    c.fill(color='white')    d = pygame.Surface((l, l), flags=pygame.HWSURFACE)    d.fill(color='black')    f = pygame.Surface((l, l), flags=pygame.HWSURFACE)    f.fill(color='red')    for i in range(2 * a + 1):        for j in range(2 * b + 1):            if alist[i][j] == 0:                screen.blit(c, (i * l, j * l))            elif alist[i][j] == 1:                screen.blit(d, (i * l, j * l))            else:                screen.blit(f, (i * l, j * l))    pygame.image.save(screen, "{}/{}×{}迷宫(正确线路){}.png".format(ccc, a, b, h))c = pygame.Surface((l, l), flags=pygame.HWSURFACE)c.fill(color='white')d = pygame.Surface((l, l), flags=pygame.HWSURFACE)d.fill(color='black')f = pygame.Surface((l, l), flags=pygame.HWSURFACE)f.fill(color='white')for i in range(2*a+1):    for j in range(2*b+1):        if alist[i][j]==0:            screen.blit(c, (i*l, j*l))        elif alist[i][j]==1:            screen.blit(d, (i*l, j*l))        else:            screen.blit(f,(i*l, j*l))pygame.display.flip()aaaaaaa = 0while True:    for event in pygame.event.get():        if event.type == pygame.QUIT:            pygame.quit()            sys.exit()        if event.type == pygame.MOUSEBUTTONDOWN:            if aaaaaaa == 1:                aaaaaaa = 0                c = pygame.Surface((l, l), flags=pygame.HWSURFACE)                c.fill(color='white')                d = pygame.Surface((l, l), flags=pygame.HWSURFACE)                d.fill(color='black')                f = pygame.Surface((l, l), flags=pygame.HWSURFACE)                f.fill(color='white')                for i in range(2 * a + 1):                    for j in range(2 * b + 1):                        if alist[i][j] == 0:                            screen.blit(c, (i * l, j * l))                        elif alist[i][j] == 1:                            screen.blit(d, (i * l, j * l))                        else:                            screen.blit(f, (i * l, j * l))                pygame.display.flip()            else:                aaaaaaa = 1                c = pygame.Surface((l, l), flags=pygame.HWSURFACE)                c.fill(color='white')                d = pygame.Surface((l, l), flags=pygame.HWSURFACE)                d.fill(color='black')                f = pygame.Surface((l, l), flags=pygame.HWSURFACE)                f.fill(color='red')                for i in range(2 * a + 1):                    for j in range(2 * b + 1):                        if alist[i][j] == 0:                            screen.blit(c, (i * l, j * l))                        elif alist[i][j] == 1:                            screen.blit(d, (i * l, j * l))                        else:                            screen.blit(f, (i * l, j * l))                pygame.display.flip()

关于“Python如何实现迷宫生成器”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“Python如何实现迷宫生成器”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网Python频道。

--结束END--

本文标题: Python如何实现迷宫生成器

本文链接: https://www.lsjlt.com/news/343050.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python如何实现迷宫生成器
    这篇文章主要介绍了Python如何实现迷宫生成器的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python如何实现迷宫生成器文章都会有所收获,下面我们一起来看看吧。首先展示一下效果图:我们先分析一下所需的库:既...
    99+
    2023-07-02
  • Python实现迷宫生成器的详细代码
    作为一项古老的智力游戏,千百年来迷宫都散发着迷人的魅力。但是,手工设计迷宫费时又耗(脑)力,于是,我们有必要制作一个程序:迷宫生成器…… 好吧,我编不下去...
    99+
    2024-04-02
  • python实现地牢迷宫生成的完整步骤
    目录基本属性生成房间生成墙壁生成门口生成通道总结 基本属性 定义当前地牢的等级,地图长宽,房间数量,房间的最小最大长度,如下 class Map: def __...
    99+
    2024-04-02
  • Python利用Prim算法生成迷宫
    Prim算法随机生成后的迷宫数列矩阵如下图: 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 ...
    99+
    2023-01-06
    Python Prim生成迷宫 Python生成迷宫 Python Prim算法
  • Matlab利用prim算法实现迷宫的生成
    目录代码使用迷宫生成映射图多起点完整代码最近比较忙更新频率也慢了下来,今天带来一个比较有趣的可视化,基于prim算法的迷宫生成并用距离生成图片: 我通过各种向量化编程编写了一个...
    99+
    2022-11-13
    Matlab prim算法生成迷宫 Matlab prim算法 Matlab 迷宫
  • Python Prim算法通过遍历墙实现迷宫的生成
    之前,我们在另外一篇文章中使用Prim算法生成了一个完美迷宫,利用的是遍历网格的方法,这一次,我们要教教大家用遍历墙的方法生成,上一篇文章链接:Python利用Prim算法生成迷宫 ...
    99+
    2023-01-06
    Python Prim生成迷宫 Python生成迷宫 Python Prim算法
  • Python如何实现过迷宫小游戏
    小编给大家分享一下Python如何实现过迷宫小游戏,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!开发工具Python版本: 3.6.4相关模块:pygame模块;以及一些Python自带的模块。环境搭建安装Python并添...
    99+
    2023-06-22
  • 如何使用Python实现多路径迷宫
    小编给大家分享一下如何使用Python实现多路径迷宫,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!python的数据类型有哪些python的数据类型:1. 数字类...
    99+
    2023-06-14
  • Python随机生成迷宫游戏的代码示例
    目录一、随机生成迷宫游戏介绍二、生成迷宫的二维数组三、深度优先搜索算法寻找通路四、生成迷宫的随机算法五、使用Pygame显示迷宫六、随机生成迷宫游戏完整代码这篇文章将详细阐述Pyth...
    99+
    2023-08-08
    Python随机生成迷宫 Python 迷宫
  • 如何实现一个canvas迷宫游戏
    小编给大家分享一下如何实现一个canvas迷宫游戏,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!正文实现这个小游戏也不难,让我们想想,一个迷宫游戏有哪些基本要素。...
    99+
    2023-06-09
  • Python实现迷宫自动寻路实例
    目录背景预处理寻路算法测试优化绘制路径结语背景 我打开手机,发现有人在QQ空间里叫嚣。 看他得意的样子,显然是在家里呆久了,已经忘了天有多高。 预处理 设计一个迷宫自动寻路算法并不...
    99+
    2024-04-02
  • 如何利用JAVA实现走迷宫程序
    本Demo使用三个类 一个Test类 一个自定义的Stack类 一个自定义的Queue类 可以实现的功能: 1.对于一个写在文本文件中的迷宫,能够将其转换为二维数组用广度优先搜索实现...
    99+
    2024-04-02
  • python如何实现生成器
    这篇文章主要介绍了python如何实现生成器,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。生成器注意区分列表推导式,生成器效率更高>&...
    99+
    2024-04-02
  • Java如何实现经典游戏复杂迷宫
    这篇文章主要为大家展示了“Java如何实现经典游戏复杂迷宫”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Java如何实现经典游戏复杂迷宫”这篇文章吧。前言人类建造迷宫已有5000年的历史。在世界...
    99+
    2023-06-29
  • 如何使用python求解迷宫问题
    这篇文章主要介绍“如何使用python求解迷宫问题”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“如何使用python求解迷宫问题”文章能帮助大家解决问题。前言在迷宫问题中,给定入口和出口,要求找到路...
    99+
    2023-06-29
  • Python实现过迷宫小游戏示例详解
    目录前言开发工具环境搭建原理简介主要代码前言 今天为大家带来解闷用的过迷宫小游戏分享给大家好了。让我们愉快地开始吧~ 开发工具 Python版本: 3.6.4 相关模块: pygam...
    99+
    2024-04-02
  • 如何使用Python生成九宫格图片
    这篇文章将为大家详细讲解有关如何使用Python生成九宫格图片,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、前言大家在朋友圈应该看到过用一张图片以九宫格的方式显示,效果大致如下:要实现上面的效果非常简...
    99+
    2023-06-14
  • 教你怎么用Python实现多路径迷宫
    目录一、思路介绍二、图示三、分区域演示代码一、思路介绍 在已有的单路径迷宫基础上打开一块合适的墙就可以构成2路径的迷宫。 打开的墙不能和已有的路径过近。 1...
    99+
    2024-04-02
  • 如何用Python进行编程迷宫大阵
    如何用Python进行编程迷宫大阵,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。前言由外国人编写的freegames是一个免费的开源游戏集合,这个很方便了我们的开发简单的游戏,...
    99+
    2023-06-02
  • C++ DFS算法如何实现走迷宫自动寻路
    小编给大家分享一下C++ DFS算法如何实现走迷宫自动寻路,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!C++ DFS算法实现走迷宫自动寻路,供大家参考,具体内容...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作