我正在使用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:我之前尝试过使用这个函数,但我一定做错了,现在我尝试了它并且有效:)。
答案 0 :(得分:1)
我没有使用Pyglet
的经验,但一般来说,大多数图形应用程序都在循环使用两个函数update()
和draw()
。每帧调用draw()
函数,并将模型的表示绘制到屏幕上。另一方面调用update()
函数来更新模型。所以你应该在update()
函数内部而不是在draw()
函数内部进行睡眠。
您应该使用clock
的{{1}}模块,而不是等待并冻结整个循环,以便每次增量安排更新:http://www.pyglet.org/doc/api/pyglet.clock-module.html。
pyglet