java俄罗斯方块旋转算法,求解

关于JAVA写俄罗斯方块中旋转的算法,我的现在写完后,中心点找的有些问题,旋转时会向左移动,BUG,希望各位提供下思路,其中数组act[i]是构成基本方块的四个小方格,中... 关于JAVA写俄罗斯方块中旋转的算法,我的现在写完后,中心点找的有些问题,旋转时会向左移动,BUG,希望各位提供下思路,其中数组act[i]是构成基本方块的四个小方格,中心点还能怎么找,我这个问题出在了int的向0取整上 展开
 我来答
truthreleaser
2018-10-24 · 超过36用户采纳过TA的回答
知道答主
回答量:67
采纳率:90%
帮助的人:26.3万
展开全部

可以给每一个小方块设置为一个坐标,变为一个三阶行列式,3*3矩阵,转变为二元数组旋转。观察一下左旋:

11 12 13                       31 21 11

21 22 23           →→      32  22  12

31 32 33                        33  23  13

坐标变换如下:(1,1)变为(1,3),(1,2)变为(2,3),(1,3)变为(3,3)

(2,1)变为(1,2),(2,2)变为(2,2),(2,3)变为(3,2)

(3,1)变为(1,1),(3,2)变为(2,1),(3,3)变为(3,1)

规律就是(i,j)变为(j,3-i+1):

如果是2*2的方格,就可以变为二阶行列式,也就是2*2的二元数组,这里给出3*3九宫格改变的示意,我的代码如下:


import java.util.Random;

public class T{

public static void main(String[] args){

int[][] a=new int[3][3];
System.out.println("now begin to form a new integer array");
Random r=new Random();
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
a[i][j]=r.nextInt(10);
}
}
System.out.println("the array is shown as follows:");
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
System.out.print(a[i][j]+" ");
}
System.out.println();
}
System.out.println("左转九十度");
for(int i=0;i<a.length;i++){
for(int j=0;j<a[i].length;j++){
System.out.print(a[a[i].length-1-j][i]+" ");
}
System.out.println();
}
}
}

AiPPT
2024-09-19 广告
随着AI技术的飞速发展,如今市面上涌现了许多实用易操作的AI生成工具1、简介:AiPPT: 这款AI工具智能理解用户输入的主题,提供“AI智能生成”和“导入本地大纲”的选项,生成的PPT内容丰富多样,可自由编辑和添加元素,图表类型包括柱状图... 点击进入详情页
本回答由AiPPT提供
cainiaokan
2012-12-12 · TA获得超过2917个赞
知道小有建树答主
回答量:651
采纳率:66%
帮助的人:625万
展开全部
这个问题我也遇到过。
我曾经写过一个俄罗斯方块程序。
也是去找中心点。然后旋转的方式去实现。
现在想想这种思路不好。
应该是用矩阵变换的思路。

1 1
0 1
0 1

顺时针应该变成

0 0 1
1 1 1
追问
怎么实现!
追答
刚才写错了。

一个二维矩阵X[x1][y1]
顺时针旋转90°
变成的二维矩阵定义肯定是 Y[y1][x1]
对于Y中的每一个元素
Y[n][m] = X[m][x1-n]

要应用到你的代码里的话。
我需要知道你代码里。现有的一些数据。
现在光看代码本身,我不知道你定义的这些变量里面到底存着什么。你又需要什么。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小懒会快乐
2012-12-19
知道答主
回答量:39
采纳率:0%
帮助的人:23.4万
展开全部
我这里有成功的,是你的数组问题,你要么?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式