卜梁人 發表於 2022-7-8 16:45:00

Python迷宫生成器

<div style="font-family: &quot;华文新魏&quot;">
<p><span style="font-size: 18px">作为一项古老的智力游戏,千百年来迷宫都散发着迷人的魅力。但是,手工设计迷宫费时又耗(脑)力,于是,我们有必要制作一个程序:迷宫生成器……</span></p>
<p><span style="font-size: 18px">好吧,我编不下去了。但是,从上面的文字中,我们可以看出,我们此次的主题是:用Python实现一个迷宫生成器。</span></p>
<p><span style="font-size: 18px">首先展示一下效果图:</span></p>
<p><img src="https://img2022.cnblogs.com/blog/2855863/202207/2855863-20220708150728601-887674900.png" alt="" loading="lazy"></p>
<p><span style="font-size: 18px">我们先分析一下所需的库:</span></p>
<p><span style="font-size: 18px">既然是生成器,每次生成的迷宫一模一样显然是说不过去的。因此,我们不可避免地要使用随机数(Random库)。迷宫一定是要绘制的,所以需要有一个GUI库或绘图库,这里我使用Pygame(Tkinter或Turtle其实都可以做到,但毕竟Pygame比较顺手)。与Pygame搭配,Sys似乎也是需要的(用于退出程序,但其实不使用似乎也无伤大雅)。然后是Tkinter.filedialog,主要用于询问保存路径(生成的迷宫总得保存吧)。当然,用Time加一个计时器似乎是锦上添花。</span></p>
<p><span style="font-size: 18px">于是,就有:</span></p>
<div class="cnblogs_code">
<pre><span style="font-size: 16px"><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">coding:utf-8</span>
<span style="color: rgba(0, 0, 255, 1)">import</span><span style="color: rgba(0, 0, 0, 1)"> contextlib
with contextlib.redirect_stdout(None):
    </span><span style="color: rgba(0, 0, 255, 1)">import</span><span style="color: rgba(0, 0, 0, 1)"> pygame
</span><span style="color: rgba(0, 0, 255, 1)">import</span><span style="color: rgba(0, 0, 0, 1)"> random
</span><span style="color: rgba(0, 0, 255, 1)">import</span><span style="color: rgba(0, 0, 0, 1)"> sys
</span><span style="color: rgba(0, 0, 255, 1)">import</span><span style="color: rgba(0, 0, 0, 1)"> time
</span><span style="color: rgba(0, 0, 255, 1)">from</span> tkinter.filedialog <span style="color: rgba(0, 0, 255, 1)">import</span> *</span></pre>
</div>
<p><span style="font-size: 18px">这里要说明的是,由于导入Pygame时会输出版本信息等很多内容(这很影响美感),我们需要使用Contextlib阻止它输出。</span></p>
<p><span style="font-size: 18px">接下来,我们需要询问一些参数:</span></p>
<div class="cnblogs_code">
<pre><span style="font-size: 16px">a=int(input(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">列数:</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">))
b</span>=int(input(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">行数:</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">))
l</span>=int(input(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">大小:</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">))
saveit</span>=input(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">是否保存:</span><span style="color: rgba(128, 0, 0, 1)">"</span>)</span></pre>
</div>
<p><span style="font-size: 18px">然后,就要运行生成迷宫的程序了。同时,我们有必要计录一下时间(相当于开启计时器):</span></p>
<div class="cnblogs_code">
<pre><span style="font-size: 16px"><span style="color: rgba(0, 0, 255, 1)">print</span>(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">生成中...</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">)
e </span>= time.time()</span></pre>
</div>
<p><span style="font-size: 18px">然后就是正式生成迷宫。在介绍这部分代码之前,我们需要了解一下算法:</span></p>
<p><span style="font-size: 18px">第一步,生成一个由迷宫单元(白格)和墙(黑格)组成的网格。一行中迷宫单元的数量为迷宫的列数,一列找迷宫单元的数量为迷宫的行数。令左上角的迷宫单元为起点,右下角的迷宫单元为终点,打破起点左边与终点右边的墙,如图所示:</span></p>
<p><img src="https://img2022.cnblogs.com/blog/2855863/202207/2855863-20220708162600698-726077968.png" alt="" loading="lazy"></p>
<p><span style="font-size: 18px">第二步,访问各迷宫单元。将起点标记为当前迷宫单元,当存在未被访问的迷宫单元(凡是曾经成为过当前迷宫单元的迷宫单元,都视为已访问)时,重复执行:</span></p>
<ul>
<li><span style="font-size: 18px">将周围的未被访问的迷宫单元加入表格;</span></li>
<li><span style="font-size: 18px">&nbsp;如果表格中有迷宫单元:</span>
<ul>
<li><span style="font-size: 18px">将当前迷宫单元入栈(可以理解为将其加入一个叫做栈的表格);</span></li>
<li><span style="font-size: 18px">从表格中随机选择一个迷宫单元;</span></li>
<li><span style="font-size: 18px">打破当前迷宫单元与选择的迷宫单元之间的墙;</span></li>
<li><span style="font-size: 18px">将选择的迷宫单元标记为当前迷宫单元;</span></li>
</ul>
</li>
<li><span style="font-size: 18px">如果表格中没有迷宫单元:</span>
<ul>
<li><span style="font-size: 18px">栈顶迷宫单元出栈(可以理解为将栈中的最后一个元素获取并删除);</span></li>
<li><span style="font-size: 18px">将出栈的迷宫单元设为当前迷宫单元;</span></li>
</ul>
</li>
</ul>
<p><span style="font-size: 18px">在循环结束以后,就会出现像文章开头效果图一样的结果。</span></p>
<p><span style="font-size: 18px">接下来,我们就要将文字化的算法转化为Python的代码。</span></p>
<p><span style="font-size: 18px">首先,程序是不认识图片的,它认识的是数据。所以我们需要设置一个二维列表,以此来用一串数据表示当前的图像。当然,我们可以顺便将第一步的设置一起完成:</span></p>
<div class="cnblogs_code">
<pre><span style="font-size: 16px">alist =<span style="color: rgba(0, 0, 0, 1)"> []
aa</span>=<span style="color: rgba(0, 0, 0, 1)">0
need</span>=<span style="color: rgba(0, 0, 0, 1)">[]
</span><span style="color: rgba(0, 0, 255, 1)">for</span> j <span style="color: rgba(0, 0, 255, 1)">in</span> range(2*a+1<span style="color: rgba(0, 0, 0, 1)">):
    </span><span style="color: rgba(0, 0, 255, 1)">if</span> aa==<span style="color: rgba(0, 0, 0, 1)">0:
      aa </span>= 1<span style="color: rgba(0, 0, 0, 1)">
      alistone </span>=<span style="color: rgba(0, 0, 0, 1)"> []
      </span><span style="color: rgba(0, 0, 255, 1)">for</span> i <span style="color: rgba(0, 0, 255, 1)">in</span> range(2*b+1<span style="color: rgba(0, 0, 0, 1)">):
            alistone.append(</span>1<span style="color: rgba(0, 0, 0, 1)">)
      alist.append(alistone)
    </span><span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)">:
      aa</span>=<span style="color: rgba(0, 0, 0, 1)">0
      alistone </span>=<span style="color: rgba(0, 0, 0, 1)"> []
      bb</span>=<span style="color: rgba(0, 0, 0, 1)">0
      </span><span style="color: rgba(0, 0, 255, 1)">for</span> i <span style="color: rgba(0, 0, 255, 1)">in</span> range(2*b+1<span style="color: rgba(0, 0, 0, 1)">):
            </span><span style="color: rgba(0, 0, 255, 1)">if</span> bb==<span style="color: rgba(0, 0, 0, 1)">0:
                bb</span>=1<span style="color: rgba(0, 0, 0, 1)">
                alistone.append(</span>1<span style="color: rgba(0, 0, 0, 1)">)
            </span><span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)">:
                bb </span>=<span style="color: rgba(0, 0, 0, 1)"> 0
                need.append((j,i))
                alistone.append(0)
      alist.append(alistone)
alist[</span>1]=<span style="color: rgba(0, 0, 0, 1)">0
alist[</span>-1][-2]=0</span></pre>
</div>
<p><span style="font-size: 18px">可以看到,除此以外我们还建立了一个列表need,里面存储了所有的迷宫单元。它的作用就是判断迷宫单元是否被访问,每次访问都会将迷宫单元从表格中删除,当表格中没有迷宫单元时,就说明所有迷宫单元都被访问了。</span></p>
<div class="cnblogs_code">
<pre><span style="font-size: 16px">x=1<span style="color: rgba(0, 0, 0, 1)">
y</span>=1<span style="color: rgba(0, 0, 0, 1)">
need.remove((</span>1, 1<span style="color: rgba(0, 0, 0, 1)">))
listing</span>=<span style="color: rgba(0, 0, 0, 1)">[]
</span><span style="color: rgba(0, 0, 255, 1)">while</span> len(need)&gt;<span style="color: rgba(0, 0, 0, 1)">0:
    aroundit</span>=<span style="color: rgba(0, 0, 0, 1)">[]
    </span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)">:
      </span><span style="color: rgba(0, 0, 255, 1)">if</span> x-2&lt;<span style="color: rgba(0, 0, 0, 1)">0:
            </span><span style="color: rgba(0, 0, 255, 1)">print</span>(1+<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">1</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">)
      alist=<span style="color: rgba(0, 0, 0, 1)">0
      </span><span style="color: rgba(0, 0, 255, 1)">if</span> (x-2,y) <span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> need:
            aroundit.append(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">alist,x=(0,x-2)</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">)
    </span><span style="color: rgba(0, 0, 255, 1)">except</span><span style="color: rgba(0, 0, 0, 1)">:
      </span><span style="color: rgba(0, 0, 255, 1)">while</span><span style="color: rgba(0, 0, 0, 1)"> False:
            </span><span style="color: rgba(0, 0, 255, 1)">print</span><span style="color: rgba(0, 0, 0, 1)">()
    </span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)">:
      alist=<span style="color: rgba(0, 0, 0, 1)">0
      </span><span style="color: rgba(0, 0, 255, 1)">if</span> (x+2,y) <span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> need:
            aroundit.append(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">alist,x=(0,x+2)</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">)
    </span><span style="color: rgba(0, 0, 255, 1)">except</span><span style="color: rgba(0, 0, 0, 1)">:
      </span><span style="color: rgba(0, 0, 255, 1)">while</span><span style="color: rgba(0, 0, 0, 1)"> False:
            </span><span style="color: rgba(0, 0, 255, 1)">print</span><span style="color: rgba(0, 0, 0, 1)">()
    </span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)">:
      alist=<span style="color: rgba(0, 0, 0, 1)">0
      </span><span style="color: rgba(0, 0, 255, 1)">if</span> (x,y+2) <span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> need:
            aroundit.append(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">alist,y=(0,y+2)</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">)
    </span><span style="color: rgba(0, 0, 255, 1)">except</span><span style="color: rgba(0, 0, 0, 1)">:
      </span><span style="color: rgba(0, 0, 255, 1)">while</span><span style="color: rgba(0, 0, 0, 1)"> False:
            </span><span style="color: rgba(0, 0, 255, 1)">print</span><span style="color: rgba(0, 0, 0, 1)">()
    </span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)">:
      </span><span style="color: rgba(0, 0, 255, 1)">if</span> y-2&lt;<span style="color: rgba(0, 0, 0, 1)">0:
            </span><span style="color: rgba(0, 0, 255, 1)">print</span>(1+<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">1</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">)
      alist=<span style="color: rgba(0, 0, 0, 1)">0
      </span><span style="color: rgba(0, 0, 255, 1)">if</span> (x,y-2) <span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> need:
            aroundit.append(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">alist,y=(0,y-2)</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">)
    </span><span style="color: rgba(0, 0, 255, 1)">except</span><span style="color: rgba(0, 0, 0, 1)">:
      </span><span style="color: rgba(0, 0, 255, 1)">while</span><span style="color: rgba(0, 0, 0, 1)"> False:
            </span><span style="color: rgba(0, 0, 255, 1)">print</span><span style="color: rgba(0, 0, 0, 1)">()
    </span><span style="color: rgba(0, 0, 255, 1)">if</span> len(aroundit)&gt;<span style="color: rgba(0, 0, 0, 1)">0:
      listing.append((x,y))
      </span><span style="color: rgba(0, 0, 255, 1)">exec</span><span style="color: rgba(0, 0, 0, 1)">(random.choice(aroundit))
      need.remove((x, y))
    </span><span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)">:
      x,y</span>=listing[-1<span style="color: rgba(0, 0, 0, 1)">]
      listing.pop()</span></span></pre>
</div>
<p><span style="font-size: 18px">而这些内容,就是第二步。其算法我已经解释过,唯一一个微小的不同是,在此处我们并没有在列表中加入相邻迷宫单元的坐标,而是将其对应的破墙和标记为当前迷宫单元的代码以字符串的形式存储在表格中,并在随机选择出某个迷宫单元所对应的字符串后,使用exec将其转换为代码并运行(这可以节省一些代码)。</span></p>
<div class="cnblogs_code">
<pre><span style="font-size: 16px"><span style="color: rgba(0, 0, 255, 1)">print</span>(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">完成!用时{}秒</span><span style="color: rgba(128, 0, 0, 1)">"</span>.format(time.time()-e))</span></pre>
</div>
<p><span style="font-size: 18px">打印完生成迷宫的用时后,我们需要将表格中的数据转化为图像了。当然,在此之前,我们要先确定图片保存的位置。</span></p>
<div class="cnblogs_code">
<pre><span style="font-size: 16px"><span style="color: rgba(0, 0, 255, 1)">if</span> saveit==<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">1</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">:
    ccc </span>=<span style="color: rgba(0, 0, 0, 1)"> askdirectory()
    h</span>=<span style="color: rgba(128, 0, 0, 1)">""</span><span style="color: rgba(0, 0, 0, 1)">
    bbbbb</span>=1
    <span style="color: rgba(0, 0, 255, 1)">while</span><span style="color: rgba(0, 0, 0, 1)"> True:
      </span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)">:
            open(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">{}/{}×{}迷宫{}.png</span><span style="color: rgba(128, 0, 0, 1)">"</span>.format(ccc,a,b,h),<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">r</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">)
            h</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">({})</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">.format(bbbbb)
      </span><span style="color: rgba(0, 0, 255, 1)">except</span><span style="color: rgba(0, 0, 0, 1)">:
            </span><span style="color: rgba(0, 0, 255, 1)">break</span><span style="color: rgba(0, 0, 0, 1)">
      bbbbb</span>+=1</span></pre>
</div>
<p><span style="font-size: 18px">由于使用时有可能选择不保存图片,因此要先判断你的选择是保存还是不保存。这里字符“1”表示保存(输入其他,自然就是不保存了)。然后我们需要让你选择保存路径(askdirectory()询问的是文件路径,不需要选择文件名)。然后,我们要确定文件名称:“a×b迷宫.png”。这里需要判断指定路径是否存在此名称的文件,如果存在,则我们需要在后面加上序号。总而言之,通过这串代码,我们已经将迷宫的路径+文件名确定了。</span></p>
<div class="cnblogs_code">
<pre><span style="font-size: 16px"><span style="color: rgba(0, 0, 0, 1)">pygame.init()
icon</span>=pygame.image.load(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">迷宫.png</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">)
pygame.display.set_icon(icon)
screen</span>=<span style="color: rgba(0, 0, 0, 1)">pygame.display.Info()
screen </span>= pygame.display.set_mode((l*(2*a+1),l*(2*b+1<span style="color: rgba(0, 0, 0, 1)">)))
pygame.display.set_caption(</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">迷宫</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">)
screen.fill(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">white</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">)
c </span>= pygame.Surface((l, l), flags=<span style="color: rgba(0, 0, 0, 1)">pygame.HWSURFACE)
c.fill(color</span>=<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">white</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">)
d </span>= pygame.Surface((l, l), flags=<span style="color: rgba(0, 0, 0, 1)">pygame.HWSURFACE)
d.fill(color</span>=<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">black</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 0, 255, 1)">for</span> i <span style="color: rgba(0, 0, 255, 1)">in</span> range(2*a+1<span style="color: rgba(0, 0, 0, 1)">):
    </span><span style="color: rgba(0, 0, 255, 1)">for</span> j <span style="color: rgba(0, 0, 255, 1)">in</span> range(2*b+1<span style="color: rgba(0, 0, 0, 1)">):
      </span><span style="color: rgba(0, 0, 255, 1)">if</span> alist==<span style="color: rgba(0, 0, 0, 1)">0:
            screen.blit(c, (i</span>*l, j*<span style="color: rgba(0, 0, 0, 1)">l))
      </span><span style="color: rgba(0, 0, 255, 1)">elif</span> alist==1<span style="color: rgba(0, 0, 0, 1)">:
            screen.blit(d, (i</span>*l, j*<span style="color: rgba(0, 0, 0, 1)">l))
pygame.display.flip()
</span><span style="color: rgba(0, 0, 255, 1)">if</span> saveit==<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">1</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">:
    pygame.image.save(screen, </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">{}/{}×{}迷宫{}.png</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">.format(ccc, a, b, h))
</span><span style="color: rgba(0, 0, 255, 1)">while</span><span style="color: rgba(0, 0, 0, 1)"> True:
    </span><span style="color: rgba(0, 0, 255, 1)">for</span> event <span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> pygame.event.get():
      </span><span style="color: rgba(0, 0, 255, 1)">if</span> event.type ==<span style="color: rgba(0, 0, 0, 1)"> pygame.QUIT:
            pygame.quit()
            sys.exit()</span></span></pre>
</div>
<p><span style="font-size: 18px">代码中使用的图片“迷宫.png”(名称不太对,下载以后要重新命名一下):</span></p>
<p><span style="font-size: 18px"><img src="https://img2022.cnblogs.com/blog/2855863/202207/2855863-20220708165639885-181070575.png" alt=""></span></p>
<p><span style="font-size: 18px">这里主要是Pygame的基本设置,并将表格内容图像化。每一个数字代表一个方块,而数字的值则决定了方块的颜色,数字在表格中的位置决定了方块的位置。就这样,我们呢将表格完全转化成了图像。当然,我们还需要用pygame.image.save()函数将图像保存为图片文件。</span></p>
<p><span style="font-size: 18px">这样,这个生成器似乎完成了。</span></p>
<p><span style="font-size: 18px">它运行良好,但当迷宫比较复杂时,暴露出一个问题(下图是100×100的迷宫):</span></p>
<p><img src="https://img2022.cnblogs.com/blog/2855863/202207/2855863-20220708162315912-1373876738.png" alt="" loading="lazy"></p>
<p><span style="font-size: 18px">由于正确路径过于曲折,在复杂度较高时,这个迷宫的难度会变得极高!</span></p>
<p><span style="font-size: 18px">难度高,在某方面上讲,的确是好事。但当你向你的朋友们展示这个迷宫时,如果你自己也无法得出正确的路径,这不是很扫兴吗?</span></p>
<p><span style="font-size: 18px">因此,一个寻路算法变得非常有必要。</span></p>
<p><span style="font-size: 18px">寻路算法的大体思路:</span></p>
<p><span style="font-size: 18px">在生成的迷宫中,白格为路,黑格为墙。将起点设置为当前位置,重复执行直到终点成为当前位置:</span></p>
<ul>
<li><span style="font-size: 18px">将当前位置标记为正确路径;</span></li>
<li><span style="font-size: 18px">将周围未标记的路加入一个表格;</span></li>
<li><span style="font-size: 18px">如果表格不空:</span></li>
<ul>
<li><span style="font-size: 18px">将当前位置入栈;</span></li>
<li><span style="font-size: 18px">从表格中随机选择一条路,并将其设为当前位置;</span></li>
</ul>
<li><span style="font-size: 18px">如果表格是空的:</span></li>
<ul>
<li><span style="font-size: 18px">栈顶的路出栈;</span></li>
<li><span style="font-size: 18px">将其设为当前位置;</span></li>
</ul>
</ul>
<p><span style="font-size: 18px">通过这个算法,我们可以试出正确的路径(如图):</span></p>
<p><img src="https://img2022.cnblogs.com/blog/2855863/202207/2855863-20220708162024147-2120000227.png" alt="" loading="lazy"></p>
<p><span style="font-size: 18px">代码的实现:</span></p>
<div class="cnblogs_code">
<pre><span style="font-size: 16px">x2=<span style="color: rgba(0, 0, 0, 1)">0
y2</span>=1<span style="color: rgba(0, 0, 0, 1)">
listing2</span>=<span style="color: rgba(0, 0, 0, 1)">[]
</span><span style="color: rgba(0, 0, 255, 1)">while</span> <span style="color: rgba(0, 0, 255, 1)">not</span>(alist[-1][-2]==2<span style="color: rgba(0, 0, 0, 1)">):
    alist</span>=3<span style="color: rgba(0, 0, 0, 1)">
    around2</span>=<span style="color: rgba(0, 0, 0, 1)">[]
    </span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)">:
      </span><span style="color: rgba(0, 0, 255, 1)">if</span> x2-1&lt;<span style="color: rgba(0, 0, 0, 1)">0:
            </span><span style="color: rgba(0, 0, 255, 1)">print</span>(1+<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">1</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">)

      </span><span style="color: rgba(0, 0, 255, 1)">if</span> alist==<span style="color: rgba(0, 0, 0, 1)">0:
            around2.append(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">x2=x2-1</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">)
    </span><span style="color: rgba(0, 0, 255, 1)">except</span><span style="color: rgba(0, 0, 0, 1)">:
      </span><span style="color: rgba(0, 0, 255, 1)">while</span><span style="color: rgba(0, 0, 0, 1)"> False:
            </span><span style="color: rgba(0, 0, 255, 1)">print</span><span style="color: rgba(0, 0, 0, 1)">()
    </span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)">:

      </span><span style="color: rgba(0, 0, 255, 1)">if</span> alist==<span style="color: rgba(0, 0, 0, 1)">0:
            around2.append(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">x2=x2+1</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">)
    </span><span style="color: rgba(0, 0, 255, 1)">except</span><span style="color: rgba(0, 0, 0, 1)">:
      </span><span style="color: rgba(0, 0, 255, 1)">while</span><span style="color: rgba(0, 0, 0, 1)"> False:
            </span><span style="color: rgba(0, 0, 255, 1)">print</span><span style="color: rgba(0, 0, 0, 1)">()
    </span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)">:

      </span><span style="color: rgba(0, 0, 255, 1)">if</span> alist==<span style="color: rgba(0, 0, 0, 1)">0:
            around2.append(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">y2=y2+1</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">)
    </span><span style="color: rgba(0, 0, 255, 1)">except</span><span style="color: rgba(0, 0, 0, 1)">:
      </span><span style="color: rgba(0, 0, 255, 1)">while</span><span style="color: rgba(0, 0, 0, 1)"> False:
            </span><span style="color: rgba(0, 0, 255, 1)">print</span><span style="color: rgba(0, 0, 0, 1)">()
    </span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)">:
      </span><span style="color: rgba(0, 0, 255, 1)">if</span> y2-1&lt;<span style="color: rgba(0, 0, 0, 1)">0:
            </span><span style="color: rgba(0, 0, 255, 1)">print</span>(1+<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">1</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">)
      </span><span style="color: rgba(0, 0, 255, 1)">if</span> alist==<span style="color: rgba(0, 0, 0, 1)">0:
            around2.append(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">y2=y2-1</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">)
    </span><span style="color: rgba(0, 0, 255, 1)">except</span><span style="color: rgba(0, 0, 0, 1)">:
      </span><span style="color: rgba(0, 0, 255, 1)">while</span><span style="color: rgba(0, 0, 0, 1)"> False:
            </span><span style="color: rgba(0, 0, 255, 1)">print</span><span style="color: rgba(0, 0, 0, 1)">()
    </span><span style="color: rgba(0, 0, 255, 1)">if</span> len(around2)&gt;<span style="color: rgba(0, 0, 0, 1)">0:
      listing2.append((x2,y2))
      </span><span style="color: rgba(0, 0, 255, 1)">exec</span><span style="color: rgba(0, 0, 0, 1)">(random.choice(around2))
    </span><span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)">:
      alist</span>=2<span style="color: rgba(0, 0, 0, 1)">
      x2,y2</span>=listing2[-1<span style="color: rgba(0, 0, 0, 1)">]
      listing2.pop()
alist[</span>-1][-2]=3
<span style="color: rgba(0, 0, 255, 1)">for</span> i <span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> range(len(alist)):
    </span><span style="color: rgba(0, 0, 255, 1)">for</span> j <span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> range(len(alist)):
      </span><span style="color: rgba(0, 0, 255, 1)">if</span> alist==2<span style="color: rgba(0, 0, 0, 1)">:
            alist</span>=0</span></pre>
</div>
<p><span style="font-size: 18px">同时,图像绘制的过程也要作出一些改动,以显示正确路径:</span></p>
<div class="cnblogs_code">
<pre><span style="font-size: 16px"><span style="color: rgba(0, 0, 255, 1)">if</span> saveit==<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">1</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">:
    ccc </span>=<span style="color: rgba(0, 0, 0, 1)"> askdirectory()
    h</span>=<span style="color: rgba(128, 0, 0, 1)">""</span><span style="color: rgba(0, 0, 0, 1)">
    bbbbb</span>=1
    <span style="color: rgba(0, 0, 255, 1)">while</span><span style="color: rgba(0, 0, 0, 1)"> True:
      </span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)">:
            open(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">{}/{}×{}迷宫{}.png</span><span style="color: rgba(128, 0, 0, 1)">"</span>.format(ccc,a,b,h),<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">r</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">)
            open(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">{}/{}×{}迷宫(正确线路){}.png</span><span style="color: rgba(128, 0, 0, 1)">"</span>.format(ccc,a,b,h),<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">r</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">)
            h</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">({})</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">.format(bbbbb)
      </span><span style="color: rgba(0, 0, 255, 1)">except</span><span style="color: rgba(0, 0, 0, 1)">:
            </span><span style="color: rgba(0, 0, 255, 1)">break</span><span style="color: rgba(0, 0, 0, 1)">
      bbbbb</span>+=1<span style="color: rgba(0, 0, 0, 1)">
pygame.init()
icon</span>=pygame.image.load(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">迷宫.png</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">)
pygame.display.set_icon(icon)
screen</span>=<span style="color: rgba(0, 0, 0, 1)">pygame.display.Info()
screen </span>= pygame.display.set_mode((l*(2*a+1),l*(2*b+1<span style="color: rgba(0, 0, 0, 1)">)))
pygame.display.set_caption(</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">迷宫</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">)
screen.fill(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">white</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 0, 255, 1)">if</span> saveit==<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">1</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">:
    c </span>= pygame.Surface((l, l), flags=<span style="color: rgba(0, 0, 0, 1)">pygame.HWSURFACE)
    c.fill(color</span>=<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">white</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">)
    d </span>= pygame.Surface((l, l), flags=<span style="color: rgba(0, 0, 0, 1)">pygame.HWSURFACE)
    d.fill(color</span>=<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">black</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">)
    f </span>= pygame.Surface((l, l), flags=<span style="color: rgba(0, 0, 0, 1)">pygame.HWSURFACE)
    f.fill(color</span>=<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">white</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">)
    </span><span style="color: rgba(0, 0, 255, 1)">for</span> i <span style="color: rgba(0, 0, 255, 1)">in</span> range(2 * a + 1<span style="color: rgba(0, 0, 0, 1)">):
      </span><span style="color: rgba(0, 0, 255, 1)">for</span> j <span style="color: rgba(0, 0, 255, 1)">in</span> range(2 * b + 1<span style="color: rgba(0, 0, 0, 1)">):
            </span><span style="color: rgba(0, 0, 255, 1)">if</span> alist ==<span style="color: rgba(0, 0, 0, 1)"> 0:
                screen.blit(c, (i </span>* l, j *<span style="color: rgba(0, 0, 0, 1)"> l))
            </span><span style="color: rgba(0, 0, 255, 1)">elif</span> alist == 1<span style="color: rgba(0, 0, 0, 1)">:
                screen.blit(d, (i </span>* l, j *<span style="color: rgba(0, 0, 0, 1)"> l))
            </span><span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)">:
                screen.blit(f, (i </span>* l, j *<span style="color: rgba(0, 0, 0, 1)"> l))
    pygame.image.save(screen, </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">{}/{}×{}迷宫{}.png</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">.format(ccc, a, b, h))
    c </span>= pygame.Surface((l, l), flags=<span style="color: rgba(0, 0, 0, 1)">pygame.HWSURFACE)
    c.fill(color</span>=<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">white</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">)
    d </span>= pygame.Surface((l, l), flags=<span style="color: rgba(0, 0, 0, 1)">pygame.HWSURFACE)
    d.fill(color</span>=<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">black</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">)
    f </span>= pygame.Surface((l, l), flags=<span style="color: rgba(0, 0, 0, 1)">pygame.HWSURFACE)
    f.fill(color</span>=<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">red</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">)
    </span><span style="color: rgba(0, 0, 255, 1)">for</span> i <span style="color: rgba(0, 0, 255, 1)">in</span> range(2 * a + 1<span style="color: rgba(0, 0, 0, 1)">):
      </span><span style="color: rgba(0, 0, 255, 1)">for</span> j <span style="color: rgba(0, 0, 255, 1)">in</span> range(2 * b + 1<span style="color: rgba(0, 0, 0, 1)">):
            </span><span style="color: rgba(0, 0, 255, 1)">if</span> alist ==<span style="color: rgba(0, 0, 0, 1)"> 0:
                screen.blit(c, (i </span>* l, j *<span style="color: rgba(0, 0, 0, 1)"> l))
            </span><span style="color: rgba(0, 0, 255, 1)">elif</span> alist == 1<span style="color: rgba(0, 0, 0, 1)">:
                screen.blit(d, (i </span>* l, j *<span style="color: rgba(0, 0, 0, 1)"> l))
            </span><span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)">:
                screen.blit(f, (i </span>* l, j *<span style="color: rgba(0, 0, 0, 1)"> l))
    pygame.image.save(screen, </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">{}/{}×{}迷宫(正确线路){}.png</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">.format(ccc, a, b, h))
c </span>= pygame.Surface((l, l), flags=<span style="color: rgba(0, 0, 0, 1)">pygame.HWSURFACE)
c.fill(color</span>=<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">white</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">)
d </span>= pygame.Surface((l, l), flags=<span style="color: rgba(0, 0, 0, 1)">pygame.HWSURFACE)
d.fill(color</span>=<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">black</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">)
f </span>= pygame.Surface((l, l), flags=<span style="color: rgba(0, 0, 0, 1)">pygame.HWSURFACE)
f.fill(color</span>=<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">white</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 0, 255, 1)">for</span> i <span style="color: rgba(0, 0, 255, 1)">in</span> range(2*a+1<span style="color: rgba(0, 0, 0, 1)">):
    </span><span style="color: rgba(0, 0, 255, 1)">for</span> j <span style="color: rgba(0, 0, 255, 1)">in</span> range(2*b+1<span style="color: rgba(0, 0, 0, 1)">):
      </span><span style="color: rgba(0, 0, 255, 1)">if</span> alist==<span style="color: rgba(0, 0, 0, 1)">0:
            screen.blit(c, (i</span>*l, j*<span style="color: rgba(0, 0, 0, 1)">l))
      </span><span style="color: rgba(0, 0, 255, 1)">elif</span> alist==1<span style="color: rgba(0, 0, 0, 1)">:
            screen.blit(d, (i</span>*l, j*<span style="color: rgba(0, 0, 0, 1)">l))
      </span><span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)">:
            screen.blit(f,(i</span>*l, j*<span style="color: rgba(0, 0, 0, 1)">l))
pygame.display.flip()
aaaaaaa </span>=<span style="color: rgba(0, 0, 0, 1)"> 0
</span><span style="color: rgba(0, 0, 255, 1)">while</span><span style="color: rgba(0, 0, 0, 1)"> True:
    </span><span style="color: rgba(0, 0, 255, 1)">for</span> event <span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> pygame.event.get():
      </span><span style="color: rgba(0, 0, 255, 1)">if</span> event.type ==<span style="color: rgba(0, 0, 0, 1)"> pygame.QUIT:
            pygame.quit()
            sys.exit()
      </span><span style="color: rgba(0, 0, 255, 1)">if</span> event.type ==<span style="color: rgba(0, 0, 0, 1)"> pygame.MOUSEBUTTONDOWN:
            </span><span style="color: rgba(0, 0, 255, 1)">if</span> aaaaaaa == 1<span style="color: rgba(0, 0, 0, 1)">:
                aaaaaaa </span>=<span style="color: rgba(0, 0, 0, 1)"> 0
                c </span>= pygame.Surface((l, l), flags=<span style="color: rgba(0, 0, 0, 1)">pygame.HWSURFACE)
                c.fill(color</span>=<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">white</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">)
                d </span>= pygame.Surface((l, l), flags=<span style="color: rgba(0, 0, 0, 1)">pygame.HWSURFACE)
                d.fill(color</span>=<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">black</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">)
                f </span>= pygame.Surface((l, l), flags=<span style="color: rgba(0, 0, 0, 1)">pygame.HWSURFACE)
                f.fill(color</span>=<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">white</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">)
                </span><span style="color: rgba(0, 0, 255, 1)">for</span> i <span style="color: rgba(0, 0, 255, 1)">in</span> range(2 * a + 1<span style="color: rgba(0, 0, 0, 1)">):
                  </span><span style="color: rgba(0, 0, 255, 1)">for</span> j <span style="color: rgba(0, 0, 255, 1)">in</span> range(2 * b + 1<span style="color: rgba(0, 0, 0, 1)">):
                        </span><span style="color: rgba(0, 0, 255, 1)">if</span> alist ==<span style="color: rgba(0, 0, 0, 1)"> 0:
                            screen.blit(c, (i </span>* l, j *<span style="color: rgba(0, 0, 0, 1)"> l))
                        </span><span style="color: rgba(0, 0, 255, 1)">elif</span> alist == 1<span style="color: rgba(0, 0, 0, 1)">:
                            screen.blit(d, (i </span>* l, j *<span style="color: rgba(0, 0, 0, 1)"> l))
                        </span><span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)">:
                            screen.blit(f, (i </span>* l, j *<span style="color: rgba(0, 0, 0, 1)"> l))
                pygame.display.flip()
            </span><span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)">:
                aaaaaaa </span>= 1<span style="color: rgba(0, 0, 0, 1)">
                c </span>= pygame.Surface((l, l), flags=<span style="color: rgba(0, 0, 0, 1)">pygame.HWSURFACE)
                c.fill(color</span>=<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">white</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">)
                d </span>= pygame.Surface((l, l), flags=<span style="color: rgba(0, 0, 0, 1)">pygame.HWSURFACE)
                d.fill(color</span>=<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">black</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">)
                f </span>= pygame.Surface((l, l), flags=<span style="color: rgba(0, 0, 0, 1)">pygame.HWSURFACE)
                f.fill(color</span>=<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">red</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">)
                </span><span style="color: rgba(0, 0, 255, 1)">for</span> i <span style="color: rgba(0, 0, 255, 1)">in</span> range(2 * a + 1<span style="color: rgba(0, 0, 0, 1)">):
                  </span><span style="color: rgba(0, 0, 255, 1)">for</span> j <span style="color: rgba(0, 0, 255, 1)">in</span> range(2 * b + 1<span style="color: rgba(0, 0, 0, 1)">):
                        </span><span style="color: rgba(0, 0, 255, 1)">if</span> alist ==<span style="color: rgba(0, 0, 0, 1)"> 0:
                            screen.blit(c, (i </span>* l, j *<span style="color: rgba(0, 0, 0, 1)"> l))
                        </span><span style="color: rgba(0, 0, 255, 1)">elif</span> alist == 1<span style="color: rgba(0, 0, 0, 1)">:
                            screen.blit(d, (i </span>* l, j *<span style="color: rgba(0, 0, 0, 1)"> l))
                        </span><span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)">:
                            screen.blit(f, (i </span>* l, j *<span style="color: rgba(0, 0, 0, 1)"> l))
                pygame.display.flip()</span></span></pre>
</div>
<p><span style="font-size: 18px">通过这些改动,显示正确路径的效果就实现了。生成完成以后,窗口上显示的是没有正确路径的迷宫,而点击窗口后,正确的路径就会显示(再次点击隐藏)。</span></p>
<p><span style="font-size: 18px">刚刚那张100×100的迷宫,其正确路径是:</span></p>
<p><img src="https://img2022.cnblogs.com/blog/2855863/202207/2855863-20220708163217049-1828803446.png" alt="" loading="lazy"></p>
<p><span style="font-size: 18px">可以看出,本文中所用的算法生成的迷宫,其正确路径还是非常曲折的(难度很高)。你何不将其发给你的朋友,让其破解一下呢?</span></p>
<p><span style="font-size: 18px">完整的代码:</span></p>
<div class="cnblogs_code">
<pre><span style="font-size: 16px"><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">coding:utf-8</span>
<span style="color: rgba(0, 0, 255, 1)">import</span><span style="color: rgba(0, 0, 0, 1)"> contextlib
with contextlib.redirect_stdout(None):
    </span><span style="color: rgba(0, 0, 255, 1)">import</span><span style="color: rgba(0, 0, 0, 1)"> pygame
</span><span style="color: rgba(0, 0, 255, 1)">import</span><span style="color: rgba(0, 0, 0, 1)"> random
</span><span style="color: rgba(0, 0, 255, 1)">import</span><span style="color: rgba(0, 0, 0, 1)"> sys
</span><span style="color: rgba(0, 0, 255, 1)">import</span><span style="color: rgba(0, 0, 0, 1)"> time
</span><span style="color: rgba(0, 0, 255, 1)">from</span> tkinter.filedialog <span style="color: rgba(0, 0, 255, 1)">import</span> *<span style="color: rgba(0, 0, 0, 1)">
a</span>=int(input(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">列数:</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">))
b</span>=int(input(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">行数:</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">))
l</span>=int(input(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">大小:</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">))
saveit</span>=input(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">是否保存:</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 0, 255, 1)">print</span>(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">生成中...</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">)
e </span>=<span style="color: rgba(0, 0, 0, 1)"> time.time()
alist </span>=<span style="color: rgba(0, 0, 0, 1)"> []
aa</span>=<span style="color: rgba(0, 0, 0, 1)">0
need</span>=<span style="color: rgba(0, 0, 0, 1)">[]
</span><span style="color: rgba(0, 0, 255, 1)">for</span> j <span style="color: rgba(0, 0, 255, 1)">in</span> range(2*a+1<span style="color: rgba(0, 0, 0, 1)">):
    </span><span style="color: rgba(0, 0, 255, 1)">if</span> aa==<span style="color: rgba(0, 0, 0, 1)">0:
      aa </span>= 1<span style="color: rgba(0, 0, 0, 1)">
      alistone </span>=<span style="color: rgba(0, 0, 0, 1)"> []
      </span><span style="color: rgba(0, 0, 255, 1)">for</span> i <span style="color: rgba(0, 0, 255, 1)">in</span> range(2*b+1<span style="color: rgba(0, 0, 0, 1)">):
            alistone.append(</span>1<span style="color: rgba(0, 0, 0, 1)">)
      alist.append(alistone)
    </span><span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)">:
      aa</span>=<span style="color: rgba(0, 0, 0, 1)">0
      alistone </span>=<span style="color: rgba(0, 0, 0, 1)"> []
      bb</span>=<span style="color: rgba(0, 0, 0, 1)">0
      </span><span style="color: rgba(0, 0, 255, 1)">for</span> i <span style="color: rgba(0, 0, 255, 1)">in</span> range(2*b+1<span style="color: rgba(0, 0, 0, 1)">):
            </span><span style="color: rgba(0, 0, 255, 1)">if</span> bb==<span style="color: rgba(0, 0, 0, 1)">0:
                bb</span>=1<span style="color: rgba(0, 0, 0, 1)">
                alistone.append(</span>1<span style="color: rgba(0, 0, 0, 1)">)
            </span><span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)">:
                bb </span>=<span style="color: rgba(0, 0, 0, 1)"> 0
                need.append((j,i))
                alistone.append(0)
      alist.append(alistone)
alist[</span>1]=<span style="color: rgba(0, 0, 0, 1)">0
alist[</span>-1][-2]=<span style="color: rgba(0, 0, 0, 1)">0
x</span>=1<span style="color: rgba(0, 0, 0, 1)">
y</span>=1<span style="color: rgba(0, 0, 0, 1)">
need.remove((</span>1, 1<span style="color: rgba(0, 0, 0, 1)">))
listing</span>=<span style="color: rgba(0, 0, 0, 1)">[]
</span><span style="color: rgba(0, 0, 255, 1)">while</span> len(need)&gt;<span style="color: rgba(0, 0, 0, 1)">0:
    aroundit</span>=<span style="color: rgba(0, 0, 0, 1)">[]
    </span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)">:
      </span><span style="color: rgba(0, 0, 255, 1)">if</span> x-2&lt;<span style="color: rgba(0, 0, 0, 1)">0:
            </span><span style="color: rgba(0, 0, 255, 1)">print</span>(1+<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">1</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">)
      alist=<span style="color: rgba(0, 0, 0, 1)">0
      </span><span style="color: rgba(0, 0, 255, 1)">if</span> (x-2,y) <span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> need:
            aroundit.append(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">alist,x=(0,x-2)</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">)
    </span><span style="color: rgba(0, 0, 255, 1)">except</span><span style="color: rgba(0, 0, 0, 1)">:
      </span><span style="color: rgba(0, 0, 255, 1)">while</span><span style="color: rgba(0, 0, 0, 1)"> False:
            </span><span style="color: rgba(0, 0, 255, 1)">print</span><span style="color: rgba(0, 0, 0, 1)">()
    </span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)">:
      alist=<span style="color: rgba(0, 0, 0, 1)">0
      </span><span style="color: rgba(0, 0, 255, 1)">if</span> (x+2,y) <span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> need:
            aroundit.append(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">alist,x=(0,x+2)</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">)
    </span><span style="color: rgba(0, 0, 255, 1)">except</span><span style="color: rgba(0, 0, 0, 1)">:
      </span><span style="color: rgba(0, 0, 255, 1)">while</span><span style="color: rgba(0, 0, 0, 1)"> False:
            </span><span style="color: rgba(0, 0, 255, 1)">print</span><span style="color: rgba(0, 0, 0, 1)">()
    </span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)">:
      alist=<span style="color: rgba(0, 0, 0, 1)">0
      </span><span style="color: rgba(0, 0, 255, 1)">if</span> (x,y+2) <span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> need:
            aroundit.append(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">alist,y=(0,y+2)</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">)
    </span><span style="color: rgba(0, 0, 255, 1)">except</span><span style="color: rgba(0, 0, 0, 1)">:
      </span><span style="color: rgba(0, 0, 255, 1)">while</span><span style="color: rgba(0, 0, 0, 1)"> False:
            </span><span style="color: rgba(0, 0, 255, 1)">print</span><span style="color: rgba(0, 0, 0, 1)">()
    </span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)">:
      </span><span style="color: rgba(0, 0, 255, 1)">if</span> y-2&lt;<span style="color: rgba(0, 0, 0, 1)">0:
            </span><span style="color: rgba(0, 0, 255, 1)">print</span>(1+<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">1</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">)
      alist=<span style="color: rgba(0, 0, 0, 1)">0
      </span><span style="color: rgba(0, 0, 255, 1)">if</span> (x,y-2) <span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> need:
            aroundit.append(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">alist,y=(0,y-2)</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">)
    </span><span style="color: rgba(0, 0, 255, 1)">except</span><span style="color: rgba(0, 0, 0, 1)">:
      </span><span style="color: rgba(0, 0, 255, 1)">while</span><span style="color: rgba(0, 0, 0, 1)"> False:
            </span><span style="color: rgba(0, 0, 255, 1)">print</span><span style="color: rgba(0, 0, 0, 1)">()
    </span><span style="color: rgba(0, 0, 255, 1)">if</span> len(aroundit)&gt;<span style="color: rgba(0, 0, 0, 1)">0:
      listing.append((x,y))
      </span><span style="color: rgba(0, 0, 255, 1)">exec</span><span style="color: rgba(0, 0, 0, 1)">(random.choice(aroundit))
      need.remove((x, y))
    </span><span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)">:
      x,y</span>=listing[-1<span style="color: rgba(0, 0, 0, 1)">]
      listing.pop()
x2</span>=<span style="color: rgba(0, 0, 0, 1)">0
y2</span>=1<span style="color: rgba(0, 0, 0, 1)">
listing2</span>=<span style="color: rgba(0, 0, 0, 1)">[]
</span><span style="color: rgba(0, 0, 255, 1)">while</span> <span style="color: rgba(0, 0, 255, 1)">not</span>(alist[-1][-2]==2<span style="color: rgba(0, 0, 0, 1)">):
    alist</span>=3<span style="color: rgba(0, 0, 0, 1)">
    around2</span>=<span style="color: rgba(0, 0, 0, 1)">[]
    </span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)">:
      </span><span style="color: rgba(0, 0, 255, 1)">if</span> x2-1&lt;<span style="color: rgba(0, 0, 0, 1)">0:
            </span><span style="color: rgba(0, 0, 255, 1)">print</span>(1+<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">1</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">)

      </span><span style="color: rgba(0, 0, 255, 1)">if</span> alist==<span style="color: rgba(0, 0, 0, 1)">0:
            around2.append(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">x2=x2-1</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">)
    </span><span style="color: rgba(0, 0, 255, 1)">except</span><span style="color: rgba(0, 0, 0, 1)">:
      </span><span style="color: rgba(0, 0, 255, 1)">while</span><span style="color: rgba(0, 0, 0, 1)"> False:
            </span><span style="color: rgba(0, 0, 255, 1)">print</span><span style="color: rgba(0, 0, 0, 1)">()
    </span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)">:

      </span><span style="color: rgba(0, 0, 255, 1)">if</span> alist==<span style="color: rgba(0, 0, 0, 1)">0:
            around2.append(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">x2=x2+1</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">)
    </span><span style="color: rgba(0, 0, 255, 1)">except</span><span style="color: rgba(0, 0, 0, 1)">:
      </span><span style="color: rgba(0, 0, 255, 1)">while</span><span style="color: rgba(0, 0, 0, 1)"> False:
            </span><span style="color: rgba(0, 0, 255, 1)">print</span><span style="color: rgba(0, 0, 0, 1)">()
    </span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)">:

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

            </span><span style="color: rgba(0, 0, 255, 1)">if</span> alist ==<span style="color: rgba(0, 0, 0, 1)"> 0:
                around2.append(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">x2=x2+1</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">)
      </span><span style="color: rgba(0, 0, 255, 1)">except</span><span style="color: rgba(0, 0, 0, 1)">:
            </span><span style="color: rgba(0, 0, 255, 1)">while</span><span style="color: rgba(0, 0, 0, 1)"> False:
                </span><span style="color: rgba(0, 0, 255, 1)">print</span><span style="color: rgba(0, 0, 0, 1)">()
      </span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)">:

            </span><span style="color: rgba(0, 0, 255, 1)">if</span> alist ==<span style="color: rgba(0, 0, 0, 1)"> 0:
                around2.append(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">y2=y2+1</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">)
      </span><span style="color: rgba(0, 0, 255, 1)">except</span><span style="color: rgba(0, 0, 0, 1)">:
            </span><span style="color: rgba(0, 0, 255, 1)">while</span><span style="color: rgba(0, 0, 0, 1)"> False:
                </span><span style="color: rgba(0, 0, 255, 1)">print</span><span style="color: rgba(0, 0, 0, 1)">()
      </span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)">:
            </span><span style="color: rgba(0, 0, 255, 1)">if</span> y2 - 1 &lt;<span style="color: rgba(0, 0, 0, 1)"> 0:
                </span><span style="color: rgba(0, 0, 255, 1)">print</span>(1 + <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">1</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">)
            </span><span style="color: rgba(0, 0, 255, 1)">if</span> alist ==<span style="color: rgba(0, 0, 0, 1)"> 0:
                around2.append(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">y2=y2-1</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">)
      </span><span style="color: rgba(0, 0, 255, 1)">except</span><span style="color: rgba(0, 0, 0, 1)">:
            </span><span style="color: rgba(0, 0, 255, 1)">while</span><span style="color: rgba(0, 0, 0, 1)"> False:
                </span><span style="color: rgba(0, 0, 255, 1)">print</span><span style="color: rgba(0, 0, 0, 1)">()
      </span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)">:
            </span><span style="color: rgba(0, 0, 255, 1)">if</span> x2 - 1 &lt;<span style="color: rgba(0, 0, 0, 1)"> 0:
                </span><span style="color: rgba(0, 0, 255, 1)">print</span>(1 + <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">1</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">)

            </span><span style="color: rgba(0, 0, 255, 1)">if</span> alist ==<span style="color: rgba(0, 0, 0, 1)"> 0:
                around2.append(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">x2=x2-1</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">)
      </span><span style="color: rgba(0, 0, 255, 1)">except</span><span style="color: rgba(0, 0, 0, 1)">:
            </span><span style="color: rgba(0, 0, 255, 1)">while</span><span style="color: rgba(0, 0, 0, 1)"> False:
                </span><span style="color: rgba(0, 0, 255, 1)">print</span><span style="color: rgba(0, 0, 0, 1)">()
      </span><span style="color: rgba(0, 0, 255, 1)">if</span> len(around2) &gt;<span style="color: rgba(0, 0, 0, 1)"> 0:
            listing2.append((x2, y2))
            </span><span style="color: rgba(0, 0, 255, 1)">exec</span><span style="color: rgba(0, 0, 0, 1)">(around2)
      </span><span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)">:
            alist </span>= 2<span style="color: rgba(0, 0, 0, 1)">
            x2, y2 </span>= listing2[-1<span style="color: rgba(0, 0, 0, 1)">]
            listing2.pop()
    alist[</span>-1][-2] = 3
    <span style="color: rgba(0, 0, 255, 1)">for</span> i <span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> range(len(alist)):
      </span><span style="color: rgba(0, 0, 255, 1)">for</span> j <span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> range(len(alist)):
            </span><span style="color: rgba(0, 0, 255, 1)">if</span> alist == 2<span style="color: rgba(0, 0, 0, 1)">:
                alist </span>=<span style="color: rgba(0, 0, 0, 1)"> 0
    </span><span style="color: rgba(0, 0, 255, 1)">print</span>(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">完成!用时{}秒</span><span style="color: rgba(128, 0, 0, 1)">"</span>.format(time.time() -<span style="color: rgba(0, 0, 0, 1)"> e))
    </span><span style="color: rgba(0, 0, 255, 1)">if</span> saveit == <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">1</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">:
      ccc </span>=<span style="color: rgba(0, 0, 0, 1)"> askdirectory()
      h </span>= <span style="color: rgba(128, 0, 0, 1)">""</span><span style="color: rgba(0, 0, 0, 1)">
      bbbbb </span>= 1
      <span style="color: rgba(0, 0, 255, 1)">while</span><span style="color: rgba(0, 0, 0, 1)"> True:
            </span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)">:
                open(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">{}/{}×{}迷宫{}.png</span><span style="color: rgba(128, 0, 0, 1)">"</span>.format(ccc, a, b, h), <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">r</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">)
                open(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">{}/{}×{}迷宫(正确线路){}.png</span><span style="color: rgba(128, 0, 0, 1)">"</span>.format(ccc, a, b, h), <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">r</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">)
                h </span>= <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">({})</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">.format(bbbbb)
            </span><span style="color: rgba(0, 0, 255, 1)">except</span><span style="color: rgba(0, 0, 0, 1)">:
                </span><span style="color: rgba(0, 0, 255, 1)">break</span><span style="color: rgba(0, 0, 0, 1)">
            bbbbb </span>+= 1<span style="color: rgba(0, 0, 0, 1)">
    pygame.init()
    icon </span>= pygame.image.load(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">迷宫.png</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">)
    pygame.display.set_icon(icon)
    screen </span>=<span style="color: rgba(0, 0, 0, 1)"> pygame.display.Info()
    screen </span>= pygame.display.set_mode((l * (2 * a + 1), l * (2 * b + 1<span style="color: rgba(0, 0, 0, 1)">)))
    pygame.display.set_caption(</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">迷宫</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">)
    screen.fill(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">white</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">)
    </span><span style="color: rgba(0, 0, 255, 1)">if</span> saveit == <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">1</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">:
      c </span>= pygame.Surface((l, l), flags=<span style="color: rgba(0, 0, 0, 1)">pygame.HWSURFACE)
      c.fill(color</span>=<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">white</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">)
      d </span>= pygame.Surface((l, l), flags=<span style="color: rgba(0, 0, 0, 1)">pygame.HWSURFACE)
      d.fill(color</span>=<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">black</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">)
      f </span>= pygame.Surface((l, l), flags=<span style="color: rgba(0, 0, 0, 1)">pygame.HWSURFACE)
      f.fill(color</span>=<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">white</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">)
      </span><span style="color: rgba(0, 0, 255, 1)">for</span> i <span style="color: rgba(0, 0, 255, 1)">in</span> range(2 * a + 1<span style="color: rgba(0, 0, 0, 1)">):
            </span><span style="color: rgba(0, 0, 255, 1)">for</span> j <span style="color: rgba(0, 0, 255, 1)">in</span> range(2 * b + 1<span style="color: rgba(0, 0, 0, 1)">):
                </span><span style="color: rgba(0, 0, 255, 1)">if</span> alist ==<span style="color: rgba(0, 0, 0, 1)"> 0:
                  screen.blit(c, (i </span>* l, j *<span style="color: rgba(0, 0, 0, 1)"> l))
                </span><span style="color: rgba(0, 0, 255, 1)">elif</span> alist == 1<span style="color: rgba(0, 0, 0, 1)">:
                  screen.blit(d, (i </span>* l, j *<span style="color: rgba(0, 0, 0, 1)"> l))
                </span><span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)">:
                  screen.blit(f, (i </span>* l, j *<span style="color: rgba(0, 0, 0, 1)"> l))
      pygame.image.save(screen, </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">{}/{}×{}迷宫{}.png</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">.format(ccc, a, b, h))
      c </span>= pygame.Surface((l, l), flags=<span style="color: rgba(0, 0, 0, 1)">pygame.HWSURFACE)
      c.fill(color</span>=<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">white</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">)
      d </span>= pygame.Surface((l, l), flags=<span style="color: rgba(0, 0, 0, 1)">pygame.HWSURFACE)
      d.fill(color</span>=<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">black</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">)
      f </span>= pygame.Surface((l, l), flags=<span style="color: rgba(0, 0, 0, 1)">pygame.HWSURFACE)
      f.fill(color</span>=<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">red</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">)
      </span><span style="color: rgba(0, 0, 255, 1)">for</span> i <span style="color: rgba(0, 0, 255, 1)">in</span> range(2 * a + 1<span style="color: rgba(0, 0, 0, 1)">):
            </span><span style="color: rgba(0, 0, 255, 1)">for</span> j <span style="color: rgba(0, 0, 255, 1)">in</span> range(2 * b + 1<span style="color: rgba(0, 0, 0, 1)">):
                </span><span style="color: rgba(0, 0, 255, 1)">if</span> alist ==<span style="color: rgba(0, 0, 0, 1)"> 0:
                  screen.blit(c, (i </span>* l, j *<span style="color: rgba(0, 0, 0, 1)"> l))
                </span><span style="color: rgba(0, 0, 255, 1)">elif</span> alist == 1<span style="color: rgba(0, 0, 0, 1)">:
                  screen.blit(d, (i </span>* l, j *<span style="color: rgba(0, 0, 0, 1)"> l))
                </span><span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)">:
                  screen.blit(f, (i </span>* l, j *<span style="color: rgba(0, 0, 0, 1)"> l))
      pygame.image.save(screen, </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">{}/{}×{}迷宫(正确线路){}.png</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">.format(ccc, a, b, h))
    c </span>= pygame.Surface((l, l), flags=<span style="color: rgba(0, 0, 0, 1)">pygame.HWSURFACE)
    c.fill(color</span>=<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">white</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">)
    d </span>= pygame.Surface((l, l), flags=<span style="color: rgba(0, 0, 0, 1)">pygame.HWSURFACE)
    d.fill(color</span>=<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">black</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">)
    f </span>= pygame.Surface((l, l), flags=<span style="color: rgba(0, 0, 0, 1)">pygame.HWSURFACE)
    f.fill(color</span>=<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">white</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">)
    </span><span style="color: rgba(0, 0, 255, 1)">for</span> i <span style="color: rgba(0, 0, 255, 1)">in</span> range(2 * a + 1<span style="color: rgba(0, 0, 0, 1)">):
      </span><span style="color: rgba(0, 0, 255, 1)">for</span> j <span style="color: rgba(0, 0, 255, 1)">in</span> range(2 * b + 1<span style="color: rgba(0, 0, 0, 1)">):
            </span><span style="color: rgba(0, 0, 255, 1)">if</span> alist ==<span style="color: rgba(0, 0, 0, 1)"> 0:
                screen.blit(c, (i </span>* l, j *<span style="color: rgba(0, 0, 0, 1)"> l))
            </span><span style="color: rgba(0, 0, 255, 1)">elif</span> alist == 1<span style="color: rgba(0, 0, 0, 1)">:
                screen.blit(d, (i </span>* l, j *<span style="color: rgba(0, 0, 0, 1)"> l))
            </span><span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)">:
                screen.blit(f, (i </span>* l, j *<span style="color: rgba(0, 0, 0, 1)"> l))
    pygame.display.flip()
    aaaaaaa </span>=<span style="color: rgba(0, 0, 0, 1)"> 0
    kkk</span>=<span style="color: rgba(0, 0, 0, 1)">0
    </span><span style="color: rgba(0, 0, 255, 1)">while</span><span style="color: rgba(0, 0, 0, 1)"> True:
      </span><span style="color: rgba(0, 0, 255, 1)">if</span> kkk==1<span style="color: rgba(0, 0, 0, 1)">:
            </span><span style="color: rgba(0, 0, 255, 1)">break</span>
      <span style="color: rgba(0, 0, 255, 1)">for</span> event <span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> pygame.event.get():
            </span><span style="color: rgba(0, 0, 255, 1)">if</span> event.type ==<span style="color: rgba(0, 0, 0, 1)"> pygame.QUIT:
                pygame.quit()
                </span><span style="color: rgba(0, 0, 255, 1)">print</span><span style="color: rgba(0, 0, 0, 1)">()
                kkk</span>=1
            <span style="color: rgba(0, 0, 255, 1)">if</span> event.type ==<span style="color: rgba(0, 0, 0, 1)"> pygame.MOUSEBUTTONDOWN:
                </span><span style="color: rgba(0, 0, 255, 1)">if</span> aaaaaaa == 1<span style="color: rgba(0, 0, 0, 1)">:
                  aaaaaaa </span>=<span style="color: rgba(0, 0, 0, 1)"> 0
                  c </span>= pygame.Surface((l, l), flags=<span style="color: rgba(0, 0, 0, 1)">pygame.HWSURFACE)
                  c.fill(color</span>=<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">white</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">)
                  d </span>= pygame.Surface((l, l), flags=<span style="color: rgba(0, 0, 0, 1)">pygame.HWSURFACE)
                  d.fill(color</span>=<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">black</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">)
                  f </span>= pygame.Surface((l, l), flags=<span style="color: rgba(0, 0, 0, 1)">pygame.HWSURFACE)
                  f.fill(color</span>=<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">white</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">)
                  </span><span style="color: rgba(0, 0, 255, 1)">for</span> i <span style="color: rgba(0, 0, 255, 1)">in</span> range(2 * a + 1<span style="color: rgba(0, 0, 0, 1)">):
                        </span><span style="color: rgba(0, 0, 255, 1)">for</span> j <span style="color: rgba(0, 0, 255, 1)">in</span> range(2 * b + 1<span style="color: rgba(0, 0, 0, 1)">):
                            </span><span style="color: rgba(0, 0, 255, 1)">if</span> alist ==<span style="color: rgba(0, 0, 0, 1)"> 0:
                              screen.blit(c, (i </span>* l, j *<span style="color: rgba(0, 0, 0, 1)"> l))
                            </span><span style="color: rgba(0, 0, 255, 1)">elif</span> alist == 1<span style="color: rgba(0, 0, 0, 1)">:
                              screen.blit(d, (i </span>* l, j *<span style="color: rgba(0, 0, 0, 1)"> l))
                            </span><span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)">:
                              screen.blit(f, (i </span>* l, j *<span style="color: rgba(0, 0, 0, 1)"> l))
                  pygame.display.flip()
                </span><span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)">:
                  aaaaaaa </span>= 1<span style="color: rgba(0, 0, 0, 1)">
                  c </span>= pygame.Surface((l, l), flags=<span style="color: rgba(0, 0, 0, 1)">pygame.HWSURFACE)
                  c.fill(color</span>=<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">white</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">)
                  d </span>= pygame.Surface((l, l), flags=<span style="color: rgba(0, 0, 0, 1)">pygame.HWSURFACE)
                  d.fill(color</span>=<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">black</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">)
                  f </span>= pygame.Surface((l, l), flags=<span style="color: rgba(0, 0, 0, 1)">pygame.HWSURFACE)
                  f.fill(color</span>=<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">red</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">)
                  </span><span style="color: rgba(0, 0, 255, 1)">for</span> i <span style="color: rgba(0, 0, 255, 1)">in</span> range(2 * a + 1<span style="color: rgba(0, 0, 0, 1)">):
                        </span><span style="color: rgba(0, 0, 255, 1)">for</span> j <span style="color: rgba(0, 0, 255, 1)">in</span> range(2 * b + 1<span style="color: rgba(0, 0, 0, 1)">):
                            </span><span style="color: rgba(0, 0, 255, 1)">if</span> alist ==<span style="color: rgba(0, 0, 0, 1)"> 0:
                              screen.blit(c, (i </span>* l, j *<span style="color: rgba(0, 0, 0, 1)"> l))
                            </span><span style="color: rgba(0, 0, 255, 1)">elif</span> alist == 1<span style="color: rgba(0, 0, 0, 1)">:
                              screen.blit(d, (i </span>* l, j *<span style="color: rgba(0, 0, 0, 1)"> l))
                            </span><span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)">:
                              screen.blit(f, (i </span>* l, j *<span style="color: rgba(0, 0, 0, 1)"> l))
                  pygame.display.flip()</span></span></pre>
</div>
<p><span style="font-size: 18px">原本的迷宫生成器每次打开只能生成一个迷宫,而每次打开程序都会有加载时间,效率不高。新修改的生成器,可以在上一个迷宫关闭后回到询问信息的程序,以此实现在以此打开程序后重复生成迷宫(这样的话,其实Sys库便不需要使用了,但在代码中我并未给予删除)。</span></p>
<p><span style="font-size: 18px">另外,原先的寻路算法随机寻路,容易走弯路,速度比较慢。在此同时更新寻路算法,采用优先向右,其次向下,再次向上,最后向左的优先级进行寻路。寻路方向的优先级排列使寻路更具有目标性,便于更快更有效地走到终点。</span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
</div>

</div>
<div id="MySignature" role="contentinfo">
    <p><span style="font-family: 华文新魏;color: black;">代码的结束,对于程序也许仅仅只是开始;学习的暂时告一段落,从不影响生活的继续。生命无止境,贵在一颗永远向上的心。</span></p>
<div align="right"><p><span style="font-family: 华文新魏;color: black;">——“伟大的哲学家”GodForever&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></p></div><br><br>
来源:https://www.cnblogs.com/godforever/p/16458100.html
頁: [1]
查看完整版本: Python迷宫生成器