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/

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
俄罗斯方块旋转算法是解决俄罗斯方块形状旋转的核心算法之一。在制作俄罗斯方块游戏时,旋转算法被用来改变方块的形状。根据引用中提到的Unity俄罗斯方块算法,可以实现方块的下落、旋转、移动、加速、填充和销毁等核心功能。如果你对具体的旋转算法感兴趣,可以参考引用中给出的代码。该代码给出了旋转部分的具体实现,你可以通过访问作者的博客代码片段查看完整的俄罗斯方块代码。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [小游戏算法系列一之俄罗斯方块矩阵旋转的一种方法](https://blog.csdn.net/fengsser/article/details/8489261)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [基于Unity俄罗斯方块算法实现](https://download.csdn.net/download/qq_33547099/13454704)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [俄罗斯方块方块旋转变形](https://blog.csdn.net/hanxueyu666/article/details/51338531)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值