2009-12-09 15 views
3

嘿 - 我正在嘗試使用Python的Pygame庫來設計我的第一款遊戲,我想知道一般情況下關卡設計的最佳做法。我很想聽聽你們認爲什麼是面向管理層的好的面向對象的設計模式。另外,我對Python相當陌生 - 謝謝!Pygame中的關卡設計

+0

什麼樣的遊戲? RPG?平臺遊戲?另一種類型? – Mongoose 2009-12-09 05:05:52

+0

我實際上試圖重新創建齧齒動物的復仇樂趣(http://en.wikipedia.org/wiki/Rodent%27s_Revenge) – mportiz08 2009-12-09 05:13:16

回答

8

有了這種類型的遊戲,你的地圖是根據瓦片(我假設你的水平是指個人水平,而不是管理你的所有水平)。每個瓦片具有

  • 相關聯的圖像(它是什麼樣子的顯示器上)
  • 一個類型(即,牆壁,地面,陷阱等)

當我創建在pygame的基於區塊的遊戲,我通常有一個Map類,它包含了當前地圖:

  • 的地圖pygame.Surface(什麼,你會被塊傳輸到顯示器)
  • 列表(即矩陣)列表,其中每個項目是一個Tile對象(我也做過遊戲,你只有一個字符串,告訴你它是什麼類型的瓷磚,然後你不需要分離式磁磚類)

的地圖應該是相對靜態的 - 你可以有一個陷阱成爲你踩到它們後(這是很容易的正常磚 - 當你做碰撞檢測,這是一個打擊,只是改變瓷磚到一個不同的Tile對象(大概是一個空的tile)),但是如果可以幫助的話,你不需要地圖中的字符或可移動塊。由於可移動塊對於如何移動它們有其自己的規則,因此它不像改變塊一樣簡單 - 您將擁有一整套邏輯,並且至少需要更改兩個貼圖(以及如果您可以將這些塊移到陷阱上 - 然後你必須分別記住它下面的東西 - bleh)。在我看來,爲每個移動物體和物品準備一堂課會更容易。

總之,你有:

  • Tile
  • Map
  • Block
  • 其他可移動的物體/精靈

而這基本上是你的整體水平。對於多個級別,如果各個級別總是相同,則可以擁有一個Map對象的列表,每個級別對應一個對象。

+0

謝謝 - 這就是我一直在尋找的! – mportiz08 2009-12-10 01:06:20

6

如果這是您的第一個Pygame應用程序,不要花時間擔心「用於管理級別的面向對象的設計模式」。你現在需要做的是弄清楚如何讓Pygame做你想做的事情。

  • 你能顯示你想要的一切嗎?
  • 您的顯示屏是否無閃爍?
  • 你能正確讀取用戶輸入控件嗎?管理水平

面向對象的方式來以後,要晚得多。

+0

幾乎任何新手的好主意! – RCIX 2009-12-09 05:14:20

+0

謝謝,但我認爲我對基本圖形和用戶輸入內容有相當好的理解,現在我需要關於如何去實現關卡的一些建議。 – mportiz08 2009-12-09 05:16:42

+0

那就夠公平了。你的帖子中提到「第一場比賽」和「Python新手」,這讓我得出結論,也許你之前沒有使用過Pygame來寫遊戲。 – 2009-12-09 05:20:35

1

一般來說,一個簡單的方法是使用矩陣(或多維數組 - 它們在這裏以相同的方式工作)。

基本上,每個映射都是一個數組,每個數組中的每一項都是網格上的一個正方形。 例如一3×3網格將如下所示:

(僞碼)

變種地圖= [[1,2,3] [1,2,3] [1,2,3]] ;

代替數字,您可以將函數的字符串解析並根據單元格的值進行繪製或採取行動。