嘿 - 我正在嘗試使用Python的Pygame庫來設計我的第一款遊戲,我想知道一般情況下關卡設計的最佳做法。我很想聽聽你們認爲什麼是面向管理層的好的面向對象的設計模式。另外,我對Python相當陌生 - 謝謝!Pygame中的關卡設計
回答
有了這種類型的遊戲,你的地圖是根據瓦片(我假設你的水平是指個人水平,而不是管理你的所有水平)。每個瓦片具有
- 相關聯的圖像(它是什麼樣子的顯示器上)
- 一個類型(即,牆壁,地面,陷阱等)
當我創建在pygame的基於區塊的遊戲,我通常有一個Map
類,它包含了當前地圖:
- 的地圖
pygame.Surface
(什麼,你會被塊傳輸到顯示器) - 列表(即矩陣)列表,其中每個項目是一個Tile對象(我也做過遊戲,你只有一個字符串,告訴你它是什麼類型的瓷磚,然後你不需要分離式磁磚類)
的地圖應該是相對靜態的 - 你可以有一個陷阱成爲你踩到它們後(這是很容易的正常磚 - 當你做碰撞檢測,這是一個打擊,只是改變瓷磚到一個不同的Tile對象(大概是一個空的tile)),但是如果可以幫助的話,你不需要地圖中的字符或可移動塊。由於可移動塊對於如何移動它們有其自己的規則,因此它不像改變塊一樣簡單 - 您將擁有一整套邏輯,並且至少需要更改兩個貼圖(以及如果您可以將這些塊移到陷阱上 - 然後你必須分別記住它下面的東西 - bleh)。在我看來,爲每個移動物體和物品準備一堂課會更容易。
總之,你有:
Tile
Map
Block
- 其他可移動的物體/精靈
而這基本上是你的整體水平。對於多個級別,如果各個級別總是相同,則可以擁有一個Map
對象的列表,每個級別對應一個對象。
謝謝 - 這就是我一直在尋找的! – mportiz08 2009-12-10 01:06:20
如果這是您的第一個Pygame應用程序,不要花時間擔心「用於管理級別的面向對象的設計模式」。你現在需要做的是弄清楚如何讓Pygame做你想做的事情。
- 你能顯示你想要的一切嗎?
- 您的顯示屏是否無閃爍?
- 你能正確讀取用戶輸入控件嗎?管理水平
- 等
面向對象的方式來以後,要晚得多。
一般來說,一個簡單的方法是使用矩陣(或多維數組 - 它們在這裏以相同的方式工作)。
基本上,每個映射都是一個數組,每個數組中的每一項都是網格上的一個正方形。 例如一3×3網格將如下所示:
(僞碼)
變種地圖= [[1,2,3] [1,2,3] [1,2,3]] ;
代替數字,您可以將函數的字符串解析並根據單元格的值進行繪製或採取行動。
- 1. 使用Cocos2d和Box2d設計關卡
- 2. 卡住設計
- 3. 在pyGame中的遊戲關卡之間切換
- 4. WPF卡片設計
- 5. MaterialiseCSS卡片設計
- 6. mysql中的設計關係
- 7. pygame計數
- 8. Pygame不關閉
- 9. 關閉Pygame alpha
- 10. 在pygame中計算時間
- 11. 關於分佈式系統設計的問題 - 斯卡拉
- 12. Pygame sprites計時器
- 13. Android Studio中的設計選項卡和預覽選項卡
- 14. 設計Actionbarsherlock選項卡
- 15. 如何設計Id卡ASP.NET
- 16. pygame的倒計時器
- 17. Android Studio中缺少設計選項卡
- 18. pygame遊戲中的計時器
- 19. Python獲取關卡設置
- 20. 計數器設計卡桑德拉
- 21. DDMS中Occasionaly關閉設備選項卡
- 22. 哪個應用程序用於iPhone遊戲/關卡設計
- 23. 在pygame和倒計時中顯示已用時間。 Tabata計時器與pygame
- 24. Redis關鍵設計
- 25. Rails關聯設計
- 26. 關係類設計
- 27. 關於設計的問題
- 28. 關於設計的問題
- 29. 關聯ID的MySQL設計
- 30. MySql設計器中的關係問題
什麼樣的遊戲? RPG?平臺遊戲?另一種類型? – Mongoose 2009-12-09 05:05:52
我實際上試圖重新創建齧齒動物的復仇樂趣(http://en.wikipedia.org/wiki/Rodent%27s_Revenge) – mportiz08 2009-12-09 05:13:16