2012-12-23 44 views
0

我使用Python 2.7.3和Pyglet 1.1.4和 創建迷宮/ labirynth遊戲我有一個問題和一個問題。迷宮/ labirynth遊戲 - 幾個問題 - Python 2.7.3 Pyglet 1.1.4

我的代碼可以在這裏找到:https://github.com/czarnot/labirynth_py

啓動程序,啓動main.py與蟒蛇。

移動CPU使用「a」按鈕。這是我的主要問題。我想讓CPU在沒有用戶輸入的情況下移動 - 我希望它每0.5或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

我對Pyglet沒有任何經驗,但總的來說,大多數圖形應用程序通過兩個函數update()draw()循環。每幀調用draw()函數,並將模型的表示形式繪製到屏幕上。另一方面調用update()函數來更新模型。因此,您應該在update()功能中進行睡眠,而不要在draw()功能中進行。

而不是等待並凍結整個循環,您應該使用clock模塊pyglet安排每次更新時間的更新:http://www.pyglet.org/doc/api/pyglet.clock-module.html

clock.schedule_interval(move_player, .5)