我知道有人问过很多,但我想知道如何旋转俄罗斯方块?

我已经做了一个漫长而糟糕的解决方案(约170行代码),但是应该有更简单的方法可以做到这一点.

我的俄罗斯方块碎片由4个块组成,这些块都知道它们在矩阵中的位置(行和列).矩阵本身是char类型的,因此4个块都是字母.例如:

......

..T...

.TTT..

......

我试图通过计数中间的行和列并将其用作origo来将矩阵模拟为坐标系,然后尝试应用这个发现的简单算法:

90度旋转(x,y)=(-y,x)

看来,只有当我的作品在矩阵的中心时,它才起作用.我不知道该怎么办,我整天都在想.这是我的方法:

public void rotatePiece(ArrayList random) {

int distance = 0; // how far is the origo

for (int i=0; i < 4; ++i)

board[random.get(i).getRow()][random.get(i).getColumn()] = '.'; // erases the current location of the piece

for (int i=0; i < 4; ++i) {

distance = Math.abs(random.get(i).getColumn()-middleColumn);

if (random.get(i).getColumn() < middleColumn)

random.get(i).setColumn(random.get(i).getColumn()+(distance*2)); // "throws" the location of the block to the other side of the origo

else

random.get(i).setColumn(random.get(i).getColumn()-(distance*2));

int help = random.get(i).getColumn();

random.get(i).setColumn(random.get(i).getRow()); // (x, y) = (-y, x)

random.get(i).setRow(help);

}

for (int i=0; i < 4; ++i)

board[random.get(i).getRow()][random.get(i).getColumn()] = random.get(0).getStyle(); // saves the new location of the piece in the matrix

java rotateright_Java Tetris旋转相关推荐

  1. java tetris_Java | Tetris

    基于 Java-Swing 实现俄罗斯方块 Preview 普通模式: 加速模式: 设计思路 方块的属性 方块表示: 由四维数组 SHAPE[][][][] 表示7种方块及每种方块的4种翻转状态. 由 ...

  2. java 某点 旋转_java-如何围绕某个点旋转顶点?

    java-如何围绕某个点旋转顶点? 想象一下,您在2d空间中有两个点,您需要将其中一个点旋转X度,另一个点作为中心. float distX = Math.abs( centerX -point2X ...

  3. java swing 图片旋转_Java图片旋转,背景透明化

    import javax.imageio.ImageIO; import javax.swing.*; import java.awt.*; import java.awt.image.Buffere ...

  4. java web图片旋转_修正web项目中图片旋转方向

    # 使用 imagemagick 旋转 查看照片 EXIF 信息,Exif 中的图片旋转信息储存在``Orientation``中. ``` identify -verbose xxx.jpg ``` ...

  5. java生成pdf旋转_基于Java实现PDF文本旋转倾斜

    本文介绍通过Java程序在PDF文档中设置文本旋转.倾斜的方法.设置文本倾斜时,通过定义方法TransformText(page);并设置page.getCanvas().skewTransform( ...

  6. Java苹果手机缩略图旋转_【Java实例】使用Thumbnailator生成缩略图(缩放、旋转、裁剪、水印)...

    正版现货ruby on rails教程水手册 87.9元 包邮 (需用券) 去购买 > 1 需求 表哥需要给儿子报名考试,系统要求上传不超过30KB的图片,而现在的手机随手一拍就是几MB的,怎么 ...

  7. Aspose.PSD使用教程:使用 Java 裁剪或旋转 PSD 图像

    目录 使用 Java 使用 Shift 方法裁剪 PSD 图像 在 Java 中使用矩形坐标裁剪 PSD 图像 使用 Java 以任意角度旋转 PSD 图像 PSD图像文件用于为徽标.横幅.小册子和许 ...

  8. java 文字水印 旋转_【Java实例】使用Thumbnailator生成缩略图(缩放、旋转、裁剪、水印)...

    1 需求 表哥需要给儿子报名考试,系统要求上传不超过30KB的图片,而现在的手机随手一拍就是几MB的,怎么弄一个才30KB的图片呢? 一个简单的办法是在电脑上把图片缩小,然后截屏小图片,但现在的电脑屏 ...

  9. Java苹果手机缩略图旋转_Java实例使用Thumbnailator生成缩略图(缩放、旋转、裁剪、水印)...

    1 需求 表哥需要给儿子报名考试,系统要求上传不超过30KB的图片,而现在的手机随手一拍就是几MB的,怎么弄一个才30KB的图片呢? 一个简单的办法是在电脑上把图片缩小,然后截屏小图片,但现在的电脑屏 ...

最新文章

  1. pythonurllib模块-Python3中核心模块urllib的用法大全
  2. 【收藏】Harbor私有仓库中如何彻底删除镜像释放存储空间:vmware/registry:2.6.2-photon进行垃圾回收
  3. boost::signals2::signal_type相关的测试程序
  4. docker自定义端口挂载目录
  5. cpu system linux,LINUX system BOOT
  6. linux 备份iphone,用linux搭建Mac备份服务器,伪TimeCapsule
  7. Unity3D笔记 愤怒的小鸟四 实现Selelction界面
  8. 面试:C++实现访问者模式
  9. linux多线程如何分配到多核上,Linux多线程编程 多核编程
  10. PSP3000/2000V3用5.03-GEN-C系统安装使用教程
  11. windows服务器重装教程,Win10系统怎么重装?Win10系统重装教程
  12. 51最小系统原理图 PCB
  13. Azkaban学习之路
  14. linux输入法中文输入法,RHEL7配置中文输入法-智能拼音
  15. 戴尔计算机管理界面在哪里,戴尔 win10系统控制面板如何打开?
  16. python中sub的用法_Python Pandas Series.sub()用法及代码示例
  17. [No00005F]读书与心智
  18. ext4解包和重新打包
  19. Jetson TX2内存/显存
  20. 5个APP,4220个数据,回顾Yura的2018年

热门文章

  1. PgMP: Program Management Professional Exam Study Guide
  2. 恒源云GPU登录Linux实例使用记录
  3. 一只程序员的成长与思考
  4. 纯CSS实现对话气泡(MD.5)
  5. 1003【顺序结构】A+B 问题
  6. 基于高光谱成像的苹果虫害检测特征向量的选取
  7. 微信授权登录(微信订阅号使用测试账号)
  8. 职场打拼小妙招,建议你们收藏使用!
  9. 电子产品使用感受之--小米床头灯第二代使用体验分享
  10. ssh_exchange_identification: read: Connection reset by peer