- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我正在制作俄罗斯方 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/
比如我有一个代码 for (int i = 0; i objects(1000);在循环之前,然后修改 objects[i]在循环内,甚至循环... for (Object& object : ob
在客户端/服务器应用程序中,从服务器请求数据并使用请求 ID 映射传入回复: --> Request data for item i using request_id 1 --> Request da
我就是这样使用Intode()的。并得到一个奇怪的错误
我在 Pandas DataFrame 中有一个列列表,我希望在没有手动输入的情况下创建某些列的列表。 我的问题是我正在学习,但知识还不够。 我曾尝试在互联网上搜索,但没有找到适合我的情况。如果有重复
我几乎完全完成了我的 torrent 服务器。我现在要做的就是找出 .torrent 文件如何填充 info 键的“pieces”键。 我目前在我的 torrent 文件中有此信息,以 utf-8 格
我正在尝试使用 Time::Piece 将日期从 yymmdd 转换为 YYYY-MM-DD模块。输入为 Nov 31, 2000 (20001131),我得到的输出为 2000-12-01。实际上,
如何获取数据表中“pieces”列的总和?假设我有下表。如何计算 article="milk"和 artno="15"的“总”件数? Columns: article artno p
我试验了 Time::Piece 和 Time::Seconds 包并编写了以下脚本来比较两个 Time::Piece 对象。我要做的是确定当前时间是在一天中的特定时间之前还是之后。在这种情况下,我将
是否有代表拼图的 Unicode 符号? Unicode 中有很多很少使用的 dingbats,我有点不记得了 - 但怀疑也有一个。但是,我在 gucharmap 中找不到类似的东西,因为它可能不完整
我正在阅读this book我自己,只是为了好玩,并遇到了以下问题: This code has a security vulnerability ; Can you find and fix it?
我想做一个小书签,从某个网站获取一些信息。 在使用 $('#div').text(); 并避开 div 内的 html 元素后,我得到以下字符串: TOP-GOST
我在我的程序中忘记了一小段代码,是的,它真的很愚蠢:这是一个代码片段。 checkInputNum(){ if [[ $1 = *[^0-9]* ]]; then echo "
在 Roy Eshorove 的“The Art Of Unit Testing”一书中,单元测试定义为: automated piece of code invokes the method or
我经常遇到这种情况。 class A{ public static boolean flag = true; public void method(){ // calls method
所以我正在制作俄罗斯方 block 游戏,我遇到的问题之一是棋子旋转。我知道我可以硬编码,但这不是正确的方法。系统的工作方式是我有一个对象“Tile”的二维数组,“Tile”对象具有 x、y 坐标、
这个问题已经有答案了: How do JavaScript closures work? (86 个回答) 已关闭 9 年前。 我正在为这个概念而挣扎。通过查看下面的内容,当我在控制台上键入“计数器”
我正在使用 fs.unlink 删除一些文件,然后我想运行一些代码。由于 JS 的异步性质,发生的情况是取消链接后的代码在取消链接的回调之前被调用。我怎样才能同步这个? promise 是唯一的方法吗
vector > > myArray(5, vector >(4)); vector testArray(); myArray[0][0].push_back(testArray); 我不明白。我只是
我需要在 Perl 中安装 Time::Piece 模块。由于某种原因它不在那里。当我使用 cpan install Time::Piece 在一些成功的步骤之后,我得到了下面的错误 ..... Ch
我尝试创建一个新的 pieces 页面,有点像撇号 cms 中的博客风格。我有 trainings、trainings-widgets 和 trainings-pages 文件夹。我在app.js中注
我是一名优秀的程序员,十分优秀!