2016-06-08 54 views
-3

我想編碼類似於交易卡遊戲的結構,例如Yugioh或萬智牌。策略卡片遊戲的編碼設計?

我有我的遊戲設置的基本基礎設施,但我無法弄清楚的一件事是'效果'或'事件'。一張牌可能會說「抽3張牌」。另一個人可能會說,「當這個僕從死亡時,摧毀場上所有的牌」。另一個人可以說:「在這張卡被抽出後第四回合治療50個生命」。

從編碼的角度來看,你會怎麼做?我知道我需要類似事件(玩家抽牌時的事件,檢查是否有任何效果正在偵聽該事件)以及堆棧數據結構,因爲效果有時可能會重疊。

什麼是從這裏開始的好地方?我應該爲每一張卡都有一個Java類文件,因爲它們的效果差別很大嗎?我應該在遊戲中擁有所有1000張牌的方法,每種方法都會影響遊戲嗎?我不知道。

感謝您的幫助。

+0

我建議你所有的卡片都從父對象繼承,並且有事件的getter和setter方法...另外,不應該爲每張卡片都有一個java類文件,那可能是糟糕的設計至少。 – Theyna

+0

是的,我現在有一個卡類,擴展卡的生物,擴展卡的法術等等。但是,'事件'背後真正的細節對我而言是複雜的。假設有一張牌有文字「每當這張牌被打,你的對手丟棄一張牌」。那行代碼在哪裏?當一張特定的牌可能會產生一個效果,即其他牌沒有類似於 – Hatefiend

+0

的定製事件時,很難進行OOP ......請參考下面的Morgans答案並開始做一些研究 – Theyna

回答

1

我從來沒有在卡片遊戲編碼之前 - 可能是一個有趣的項目,但我猜測每卡一個自定義子類應該是足夠的。卡片作爲對象本身可以監聽事件,卡片作爲類定義行爲。

我不認爲你會需要任何非常奇特的基礎設施,因爲只要發生任何事情就可以迭代甲板上的每張卡。在一次回合制遊戲中,可能有十幾個實體同時參與,但我懷疑遊戲邏輯需要多少優化。

我不會擔心過早地處理代碼混亂的問題 - 先搞一打卡片類型,然後看看你是否能找到任何重構機會。祝你好運!