java俄罗斯方块旋转,俄罗斯方块旋转算法研究
發(fā)表于 2012-12-05 06:36:24 by 月小升
最近在閱讀俄羅斯方塊的
A1 A2 A3 A4
B1 B2 B3 B4
C1 C2 C3 C4
D1 D2 D3 D4
旋轉(zhuǎn)以B2 B3 C2 C3 中間的點(diǎn)為旋轉(zhuǎn)軸。
旋轉(zhuǎn)以后矩陣變?yōu)?/p>
D1?C1?B1?A1
D2?C2?B2?A2?
D3?C3?B3?A3
D4?C4?B4 A4
1,1數(shù)據(jù)變成了 1,4
問題:旋轉(zhuǎn)以后方塊的位置發(fā)生重大移動(dòng)。
原因。這個(gè)方塊的重心其實(shí)是B2.
那么一根長(zhǎng)條的重心在哪里
A1 A2 A3 A4
B1 B2 B3 B4
C1 C2 C3 C4
D1 D2 D3 D4
以矩陣為重心,順時(shí)針旋轉(zhuǎn)的話,長(zhǎng)條會(huì)直接跑到右側(cè)了。
長(zhǎng)條我們希望旋轉(zhuǎn)以后變成
A1 A2 A3 A4
B1 B2 B3 B4
C1C2 C3 C4
D1 D2 D3 D4
可以得出長(zhǎng)條的重心也在B2.這是一次旋轉(zhuǎn),如果再次順時(shí)針旋轉(zhuǎn)。以B2為重心就會(huì)發(fā)生問題。沒有位置存放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
結(jié)論:
一個(gè)節(jié)省時(shí)間,提高程序效率的而且比較簡(jiǎn)單的辦法就是把所有希望變化以后的矩陣,都寫在一個(gè)數(shù)組里。
即總體數(shù)據(jù)為三維數(shù)據(jù)。每一個(gè)矩陣的形態(tài)也存在其中。而非人為旋轉(zhuǎn)。
俄羅斯方塊的旋轉(zhuǎn)特性,盡量不要用算法控制,因?yàn)榻?jīng)過幾次旋轉(zhuǎn)就會(huì)發(fā)生位置偏移。如果每次記錄偏移量,也是可以的。直接代碼太過復(fù)雜,而且容易出錯(cuò)。所以建議寫死在數(shù)組里。然后旋轉(zhuǎn)就是更換數(shù)組的一個(gè)維度(旋轉(zhuǎn)維度)
This entry was posted in JAVA, 日常隨筆 and tagged 游戲編程, 算法. Bookmark the permalink.
月小升QQ 2651044202, 技術(shù)交流QQ群 178491360
首發(fā)地址:月小升博客 – https://java-er.com/blog/eluosi-xuanzhuan/
無特殊說明,文章均為月小升原創(chuàng),歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)注明本文地址,謝謝
總結(jié)
以上是生活随笔為你收集整理的java俄罗斯方块旋转,俄罗斯方块旋转算法研究的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中国国歌下载mp3国歌(中国国歌下载mp
- 下一篇: Cloud一分钟 | 云厂商Zoho域名