2016-09-18 69 views
0

我正在寫一張紙牌遊戲,其中有多張卡片,這些卡片將疊放在未播放的套牌上,並且還會放在玩家手上。LibGDX - 彼此之間的演員,避免兩個平局電話

目前,我在開始時將所有100張卡片演員添加到屏幕中以使其更容易,因此我不必在需要時添加它們。他們都開始在對方的頂部,一些被分發給玩家手中,這也是一堆卡。因此,理論上5人遊戲中只有6張牌是可見的,甲板和每位牌手的頂部都是可見的。

我希望有人能告訴我一個聰明的方法,意味着只有6個繪製方法運行在可見的演員上,還是我必須自己管理所有這些?

如果我這樣做,你會建議只在需要時才加入演員,或者將他們添加爲不可見,然後在我需要時將其設置爲可見?

還是別的方法?

+1

我會根據需要將它們設置爲可見/不可見。我認爲這將是最簡單的。 – Tenfour04

+0

那麼提前添加它們?有沒有聰明的方法來解決他們實際上可見或不? –

+0

只有蠻力,這將是更多的工作和更多的CPU密集型。除非你的卡片是完全矩形的(沒有圓角)。然後,您可以將它們排列在前面並在深度測試中繪製它們。這將消除透支。 – Tenfour04

回答

1

爲了節省大量的計算,你可以渲染6次圖像。如果正在處理一張卡片,則會讓第七張卡片在屏幕上移動。這避免了調用大量對象的繪製方法。

+0

是的,這是我最終必須做的。它只是感覺有點笨拙 –

+0

這就是我最終做的。只是清理我的SO歷史,謝謝 –

0

如果每堆只有一張卡片可見,則可以使用堆疊。 堆棧就像一個數組,您可以從一端訪問元素,一次只訪問一個元素。然後,您只能在堆棧頂部的卡上調用繪圖方法(peek)。然後處理頂部卡片並使下一張卡片成爲頂部(彈出)。

一些教程和示例:

tutorialspoint.com

princeton.edu

或者只是谷歌 「Java堆棧」 它使用起來非常簡單。

+0

我正在考慮做這樣的事情(儘管我不知道有一個實際的Stack類,我只是想使用一個ArrayList)。 我認爲這是在我看來是最後的手段,因爲我希望在LibGDX有自動處理透支的東西。 –

+0

我也正在閱讀某處(但現在已經失去了頁面)關於Libgdx自動處理從前到後繪製的東西,並且它只繪製前面的演員,即使其後面有其他人。這是否會自動發生? –

+0

如果您只在堆疊頂部卡片上調用繪圖方法,則不可能透支。 – IronMonkey