迷宫/迷宫游戏 - 几个问题 - Python 2.7.3 Pyglet 1.1.4

时间:2012-12-23 12:09:19

标签: python python-2.7 pyglet maze

我正在使用Python 2.7.3和Pyglet 1.1.4创建一个迷宫/ labirynth游戏 我有一个问题和一个问题。

我的代码可以在这里找到:https://github.com/czarnot/labirynth_py

要启动该程序,请使用python启动main.py。

要移动CPU使用“a”按钮。这是我的主要问题。我想让CPU在没有用户输入的情况下移动 - 我希望它每0.5或1秒移动1步。

我尝试在cpu步骤之间使用time.sleep(),它只是睡觉所有步骤,然后传送到最后。我认为它与Pyglet有关 - 可能具有绘图功能,因为睡眠效果很好(当打印件存在时,它会在睡眠后打印)。

以下是使用“A”按钮(main.py)进行处理的代码部分:

    elif symbol == key.A:
        if win == 0:
            #for item in cpu:
                item = cpu[x]
                window.clear()
                player.draw()
                if item == 'North':
                    player.y += fieldlength
                elif item == 'South':
                    player.y -= fieldlength
                elif item == 'East':
                    player.x += fieldlength
                elif item == 'West':
                    player.x -= fieldlength
                x += 1

我尝试的代码(我也试过其他几种组合......):

    elif symbol == key.A:
        if win == 0:
            for item in cpu:
                window.clear()
                player.draw()
                if item == 'North':
                    player.y += fieldlength
                elif item == 'South':
                    player.y -= fieldlength
                elif item == 'East':
                    player.x += fieldlength
                elif item == 'West':
                    player.x -= fieldlength
                time.sleep(1)

另一个问题:

我的地图生成算法非常简单 - 它选择随机单元格,然后选择该单元格的随机邻居,从他们的邻居列表中删除这些单元格,并将墙壁放入WallList。

我想制作更好的地图生成算法 - 比如维基百科:http://en.wikipedia.org/wiki/Maze_generation_algorithm#Depth-first_search

我不确定我的墙绘图方法是否有效 - 为每个墙组合存储12个图像并在MyMap值中存储“WallNumber”值不是更好吗? 以下是WallNumber值的示例:http://imgur.com/DDfL1

我也要求这个,因为我觉得我现在使用的方法,为此编写更好的地图生成算法将会非常混乱和棘手。

@@ EDIT @zenpoy:我之前尝试过使用这个函数,但我一定做错了,现在我尝试了它并且有效:)。

1 个答案:

答案 0 :(得分:1)

我没有使用Pyglet的经验,但一般来说,大多数图形应用程序都在循环使用两个函数update()draw()。每帧调用draw()函数,并将模型的表示绘制到屏幕上。另一方面调用update()函数来更新模型。所以你应该在update()函数内部而不是在draw()函数内部进行睡眠。

您应该使用clock的{​​{1}}模块,而不是等待并冻结整个循环,以便每次增量安排更新:http://www.pyglet.org/doc/api/pyglet.clock-module.html

pyglet