java俄罗斯方块旋转,俄罗斯方块旋转算法研究

发表于 2012-12-05 06:36:24 by 月小升

最近在阅读俄罗斯方块的

A1 A2 A3 A4

B1 B2 B3 B4

C1 C2 C3 C4

D1 D2 D3 D4

旋转以B2 B3 C2 C3 中间的点为旋转轴。

旋转以后矩阵变为

D1?C1?B1?A1

D2?C2?B2?A2?

D3?C3?B3?A3

D4?C4?B4 A4

1,1数据变成了 1,4

问题:旋转以后方块的位置发生重大移动。

原因。这个方块的重心其实是B2.

那么一根长条的重心在哪里

A1 A2 A3 A4

B1 B2 B3 B4

C1 C2 C3 C4

D1 D2 D3 D4

以矩阵为重心,顺时针旋转的话,长条会直接跑到右侧了。

长条我们希望旋转以后变成

A1 A2 A3 A4

B1 B2 B3 B4

C1C2 C3 C4

D1 D2 D3 D4

可以得出长条的重心也在B2.这是一次旋转,如果再次顺时针旋转。以B2为重心就会发生问题。没有位置存放D2.

A1?A2?A3 A4

B1 B2 ?B3 B4

C1 C2 C3 C4

D1 D2 D3 D4

A1 A2 A3 A4

B1 B2 B3 B4

C1 C2 C3 C4

D1 D2 D3 D4

结论:

一个节省时间,提高程序效率的而且比较简单的办法就是把所有希望变化以后的矩阵,都写在一个数组里。

即总体数据为三维数据。每一个矩阵的形态也存在其中。而非人为旋转。

俄罗斯方块的旋转特性,尽量不要用算法控制,因为经过几次旋转就会发生位置偏移。如果每次记录偏移量,也是可以的。直接代码太过复杂,而且容易出错。所以建议写死在数组里。然后旋转就是更换数组的一个维度(旋转维度)

This entry was posted in JAVA, 日常随笔 and tagged 游戏编程, 算法. Bookmark the permalink.

月小升QQ 2651044202, 技术交流QQ群 178491360

首发地址:月小升博客 – https://java-er.com/blog/eluosi-xuanzhuan/

无特殊说明,文章均为月小升原创,欢迎转载,转载请注明本文地址,谢谢

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/511565.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

消息队列 RocketMQ 遇上可观测:业务核心链路可视化

简介:本篇文章主要介绍 RocketMQ 的可观测性工具在线上生产环境的最佳实践。RocketMQ的可观测性能力领先业界同类产品,RocketMQ 的 Dashboard 和消息轨迹等功能为业务核心链路保驾护航,有效应对线上大规模生产使用过程中遇到的容量规划、消息…

SolarWinds发布2022 IT趋势报告:混合IT增加网络复杂性,技术人表示缺乏信心

《SolarWinds 2022 IT 趋势报告 - 扭转 IT 局势:管理混合 IT 复杂性》研究了在混合 IT 加速发展的背景下,负责管理日益复杂的 IT 环境的专业技术人员的现状以及存在机遇的领域 向混合 IT 的持续转变,使 IT 管理更加复杂,专业技术…

ajax异步同步加载PHP代码,jquery中的ajax同步和异步详解

jquery ajax同步的意思是当JS代码加载到当前ajax的时候会把页面里所有的代码停止加载,页面出现了假死状态,当这个ajax执行完毕后才会继续运行其他的代码假死状态解除。而异步的意思是这个ajax代码运行中的时候其他代码一样可以运行。本文给大家详解&…

30人的产研团队如何高效协同?

简介:工具选型及使用建议对于中小企业,基本都不会自己搭建服务器和机房进行部署,而是选择各大云平台,选择一款SaaS项目管理工具可以极大的降低运维成本。 作者介绍:以诺行CTO 刘自强 团队使用云效3年 团队协作需求 …

从 Flink Forward Asia 2021,看Flink未来开启新篇章

简介:本文将对FFA Keynote议题作一些简单的归纳总结,感兴趣的小伙伴们可以在FFA官网[2]找到相关主题视频观看直播回放。 作者 | 梅源(Yuan Mei) 来源 | 阿里技术公众号 律回春晖渐,万象始更新,这句诗用来形…

从需求到开源,如何做到刮目相看?

作者 | 👽来源 | 前端Sharing一、一切根源都从无厘头需求开始最近在开发业务项目的时候,产品小姐姐突然来到我身边,然后就对着电脑一顿操作,具体场景大致是这样的。场景一:如上图所示,当在数万级别的数据中…

sha-256算法进行加密java,Java SHA-256加密的两种实现方法详解

这篇文章主要介绍了Java SHA-256加密的两种实现方法,结合实例形式分析了java实现SHA-256加密的实现代码与相关注意事项,需要的朋友可以参考下本文实例讲述了Java SHA-256加密的两种实现方法。分享给大家供大家参考,具体如下:最近在做的项目中涉及到了数据…

如何高效完成ECS多环境部署?

简介:通过本文,你可以了解到,如何通过云效流水线有效拉通开发与运维,打破二者之间的壁垒墙,让开发与运维高效联动。在软件开发和部署过程中,我们的软件往往需要在不同的运行环境中运行,例如&…

技术探秘: 360数科夺得ICDAR OCR竞赛世界第一

ICDAR(国际文档分析与识别会议)是OCR识别领域最权威的会议之一。近期,360数科在ICDAR2019-SROIE(Results - ICDAR 2019 Robust Reading Challenge on Scanned Receipts OCR and Information Extraction - Robust Reading Competition) 榜单上…

云原生时代,软件交付有何不同 | 研发效能提升36计

简介:从今天起,我们将开启一个新的专栏:《研发效能提升36计_持续交付篇》。专栏将通过10-20篇文章,系统分享云原生时代,企业如何落地持续交付。 编者按:从今天起,我们将开启一个新的专栏&#…

php 获取字符串完整拼音,PHP 获取中文字符串的首字符拼音字母

class"php"><?php header(Content-Type: text/html; charsetutf-8);$str"阅谁问君诵&#xff0c;水落清香浮";echo getFirstCharCode($str);function getFirstCharCode($str){$str iconv("UTF-8","gb2312", $str);$targetChar*…

IT人的年夜饭,也太香了吧

简介&#xff1a; 平时的IT人&#xff0c;奋战在修复bug前线&#xff0c;起早与贪黑齐飞&#xff0c;调休共假期待定。到了新春佳节&#xff0c;对于IT人来说&#xff0c;没有什么是比一顿年夜饭更让人熨贴肺腑的了。为了让废寝忘食编程序、闻机起早保运维的IT人过一个安稳的好…

通过将工作负载从虚拟机迁移到容器的数据保护转变,Veeam和Kasten K10 by Veeam推动Zenseact加速自动驾驶创新

2022年6月22日&#xff1a;VeeamSoftware&#xff08;卫盟软件&#xff09;&#xff0c;提供现代数据保护的备份、恢复和数据管理解决方案的领导者&#xff0c;今天宣布Zenseact正在使用Veeam Availability Suite™和Kasten K10 by Veeam提供可靠的数据备份、保护和灾难恢复解决…

小红书消息中间件的运维实践与治理之路

简介&#xff1a;近年来&#xff0c;消息领域的全面云原生化逐渐走向深入&#xff0c;比如 RocketMQ 5.0 版本的存算分离设计和 raft 模式&#xff0c;再比如 Kafka3.0 引入了分层设计的方式&#xff08;tiered storage&#xff09;和 raft 模式&#xff0c;以及近年来新崛起的…

oracle list 分区详解,oracle的List分区及分区索引

最近在做的一个项目&#xff0c;由于涉及到数据量会在半年内破千万条&#xff0c;考虑到数据量比较大&#xff0c;日后查询起来会比较费时&#xff0c;所以考虑使用oracle的分区特性。oracle10g产品中的分区表分为List&#xff0c;hash&#xff0c;range三个。经过分析&#xf…

爆测一周,22年必看最细致代码托管工具测评

简介&#xff1a;网上代码托管选型的文章不少&#xff0c;不过大多内容有点久远&#xff0c;很多最新的平台没有包括进来&#xff0c;个人花了大概一个星期的时间&#xff0c;把目前市面上比较火的代码托管平台&#xff08;开源托管平台&#xff1a;Github、Gitee&#xff1b;企…

read 文件一个字节实际会发生多大的磁盘IO?

作者 | 张彦飞allen来源 | 开发内功修炼在日常开发中一些看似司空见惯的问题上&#xff0c;我觉得可能大多数人其实并没有真正理解&#xff0c;或者理解的不够透彻。不信我们来看以下一段简单的读取文件的代码&#xff1a;上图中的代码仅仅只是对某个文件读取了一个字节&#x…

【指标需求思考】如何做好指标类需求建设

简介&#xff1a;大家一直所说的【需求】究竟有哪些&#xff1f;用户需求、业务需求、系统需求...... 但是今天我要给大家介绍一种我自认为一种别出心裁的需求&#xff01;【指标类需求】在庞大的需求体系里&#xff0c;一个完整的系统设计流程是非常必要的&#xff0c;好则效率…

oracle 12c 低版本,oracle高版本迁移数据到低版本(12c至11g)方法

1.12c版本信息&#xff1a;2.11g版本信息&#xff1a;3.查看12c的字符集编码&#xff1a;select userenv(language) from dual;要迁移的两个数据库字符集编码要保持一致。如果不一致请手工修改&#xff0c;修改方法另行百度。4.查看11g数据库字符集编码&#xff1a;5.查看12c数…

构建信创产业生态,移动云立足全栈自主创新连放大招

信创&#xff0c;即信息技术应用创新&#xff0c;它是数据安全、网络安全的基础&#xff0c;也是“新基建”的重要内容。在国际信息安全形势严峻、国家安全需要和数智时代新要求三重因素作用下&#xff0c;信创生态应运而生。进入2022年&#xff0c;云计算将成为信创主要落地方…