【py小游戏系列】生成迷宫,儿时的回忆|Python 主题月

1,051 阅读2分钟

本文正在参加「Python主题月」,详情查看 活动链接

hello大家好,今天我又发现了个有趣的小玩意。我是专写有趣小玩意的老诗。

相信大家对于迷宫游戏都并不陌生。现在也能找到各种各样的迷宫游戏玩。那么你们自己是否会编写呢?接下来老诗用python教你们编写迷宫小游戏。

老规矩,先上效果图

1.gif

生成迷宫的核心代码是下面这一段:

def draw():
    "Draw maze."
    color('black')
    width(5)

    for x in range(-200, 200, 40):
        for y in range(-200, 200, 40):
            if random() > 0.5:
                line(x, y, x + 40, y + 40)
            else:
                line(x, y + 40, x + 40, y)

迷宫的宽度是40。然后在-200到200这个范围内随机生成迷宫。

划线的动作响应

def tap(x, y):
    "Draw line and dot for screen tap."
    if abs(x) > 198 or abs(y) > 198:
        up()
    else:
        down()

    width(2)
    color('red')
    goto(x, y)
    dot(4)

tap是鼠标单击响应事件。在有效范围内点击。那就把线条画出来。线条规定是红色,粗细为2。

当然现在这个迷宫并非是完整的迷宫游戏,因为他不是有唯一的入口和出口。这个需要我们堵上其他的入口出口让它们变得唯一。如何我还需要确定入口和出口的唯一连通性。

如果我们觉得难度不够大,我们还可以自己定义迷宫的大小,只需要把迷宫生成范围和触碰范围自行改大就行了。

for x in range(-200, 200, 40):
        for y in range(-200, 200, 40):
if abs(x) > 198 or abs(y) > 198:

当然同学们也可以把项目做得更难一些。我们可以试着用算法把自己生成的迷宫走一边。用最短的路径把迷宫走完。这个部分就要涉及到A* 寻路。更具体的A* 寻路算法,可以自行去查阅资料:传送门

整体而言,游戏并不是太难,也很容易就可以学会。上面的思想还是说的比较清楚的。有需要拿完整源码的话,请移步到公众号:诗一样的代码。既然进来了,原创不易。小伙伴点个赞再走呗