gpt4 book ai didi

java - 俄罗斯方 block : Turning the pieces?

转载 作者:行者123 更新时间:2023-11-29 05:33:29 25 4
gpt4 key购买 nike

所以我正在制作俄罗斯方 block 游戏,我遇到的问题之一是棋子旋转。我知道我可以硬编码,但这不是正确的方法。系统的工作方式是我有一个对象“Tile”的二维数组,“Tile”对象具有 x、y 坐标、 boolean 值 isActive 和颜色。 boolean 值 isActive 基本上告诉计算机实际使用了哪些图 block (因为俄罗斯方 block 形状不是完美的四边形)。

以下是我如何在我的系统中制作形状:

public static Tile[][] shapeJ() {
Tile[][] tile = new Tile[3][2];

for (int x = 0; x < 3; x++) {
for (int y = 0; y < 2; y++) {
tile[x][y] = new Tile(false, Color.blue);
}
}

tile[0][0].setActive(true);
tile[0][0].setX(0);
tile[0][0].setY(0);

tile[1][0].setActive(true);
tile[1][0].setX(50);
tile[1][0].setY(0);

tile[2][0].setActive(true);
tile[2][0].setX(100);
tile[2][0].setY(0);

tile[2][1].setActive(true);
tile[2][1].setX(100);
tile[2][1].setY(50);

return tile;
}

现在我需要旋转这个对象,如果不对位置进行硬编码,我不知道该怎么做。必须有一个算法。谁能提供一些帮助?

最佳答案

我在编写俄罗斯方 block 克隆时使用的一个好方法是使用旋转矩阵:

http://en.wikipedia.org/wiki/Rotation_matrix

So the coordinates (x',y') of the point (x,y) after rotation are:

x' = x*cos(theta) - y*sin(theta);

y' = x*sin(theta) + y*cos(theta);

其中 theta 是旋转角度(对于我所知道的 java 函数,+-90 度或 +-PI/2 弧度)在这种情况下, block 围绕原点 (0, 0) 旋转,因此您要么必须将 block 的坐标置于特殊的“ block 空间”中,然后将其转置到“场空间”中,要么去除 block 的偏移量以便每次迭代都以原点为中心。

希望对您有所帮助,我很乐意回答评论中的具体问题。

关于java - 俄罗斯方 block : Turning the pieces?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20307055/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com