我目前正在重新制作游戏 2048,但我不知道如何旋转图块。现在我决定看看 GitHub,看看其他人是如何解决这个问题的。
我正在查看的 git 项目:https ://github.com/michaelzherdev/2048/blob/master/src/com/mzherdev/Game.java
我不明白的方法:
private Cell[] rotate(int angle) {
Cell[] tiles = new Cell[4 * 4];
int offsetX = 3;
int offsetY = 3;
if(angle == 90) {
offsetY = 0;
} else if(angle == 270) {
offsetX = 0;
}
double rad = Math.toRadians(angle);
int cos = (int) Math.cos(rad);
int sin = (int) Math.sin(rad);
for(int x = 0; x < 4; x++) {
for(int y = 0; y < 4; y++) {
int newX = (x*cos) - (y*sin) + offsetX;
int newY = (x*sin) + (y*cos) + offsetY;
tiles[(newX) + (newY) * 4] = cellAt(x, y);
}
}
return tiles;
}
我想知道是否有人可以帮助我弄清楚他的思维过程以及他为什么使用弧度。
换句话说,有人可以解释他对 offsetX 和 y 的含义吗?我不是以英语为母语的人。
提前致谢!每个答案都非常感谢!
真诚的,一个有抱负的开发者