2016-09-18 59 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