在我正在创建的游戏中,我使用了积木。为了简化我的生活,我创建了一个接受一组块的类,并将它们添加到我的块集中。
积木组(世界级):
Set<Block> blocks = new HashSet<Block>();
块集合类:
public class BlockCollection
{
private World world;
Set<Block> blocks = new HashSet<Block>();
public BlockCollection(World world, Vector2 position, Block[] blocks)
{
this.world = world;
for (Block block : blocks)
this.blocks.add(new Block(new Vector2(block.position.x + position.x, block.position.y + position.y)));
}
public void flip()
{
//Flip the set
}
public void add()
{
world.blocks.addAll(blocks);
}
}
(我使用的库是 libgdx,Vector2 类基本上是一个带有 X 浮点和 Y 浮点的向量)
我添加了一个如下所示的块数组:
Block[] spike = {
new Block(new Vector2(0, 0)),
new Block(new Vector2(1, 0)),
new Block(new Vector2(2, 0)),
new Block(new Vector2(3, 0)),
new Block(new Vector2(1, 1)),
new Block(new Vector2(2, 1)),
new Block(new Vector2(3, 1)),
new Block(new Vector2(1, 2)),
new Block(new Vector2(2, 2)),
new Block(new Vector2(1, 3)),
new Block(new Vector2(2, 3)),
new Block(new Vector2(1, 4)),
};
它可以工作,但现在我正在尝试添加功能来翻转 BlockCollection 类的 flip() 方法中的块集。这将帮助我不需要对我用块制作的每个对象的每个变体进行硬编码。
任何人都可以分享如何做到这一点的任何见解,也许是一个方程式?任何帮助都非常受欢迎。
编辑:通过翻转,我的意思是沿 x 轴翻转形状,类似于翻转图像。例子:
原始与翻转
00100 | 11111
01110 | 01110
11111 | 00100