求俄罗斯方块的方块旋转算法

uyficuyfi 2012-07-14 02:42:06
如题。要求不要用表存偖各种状态的方法。
希望能给出代码,而且简单、速度快。
...全文
1560 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
elemusic 2012-07-19
  • 打赏
  • 举报
回复
90度顺时针旋转的话
可以建一个n*n的方阵,0代表空,1代表实,组成方块形状,顺时针转相当于从底向顶行从左到右读,然后按从左到右列写出

逆时针相反
  • 打赏
  • 举报
回复
如果要求速度快,那显然是查表法。因为形状和状态就那么几十种。

另外,不知道楼主怎么存储下落的方块,是存一个相对位置+偏移量呢,还是绝对位置。
juanjuanyaya 2012-07-17
  • 打赏
  • 举报
回复
建个表,把图形存起来,把当前图形擦掉(xor),再换个图形(and)看看有没有重点,如果没有(or)画上去,就这么简单。
hz张三 2012-07-16
  • 打赏
  • 举报
回复
不需要算法,直接保存所有形状的点阵,转旋既是遍历。
本人10年前的代码:
http://read.pudn.com/downloads101/sourcecode/game/414930/CSDemo/DiamondShape.cpp__.htm
胡匪幺二二 2012-07-16
  • 打赏
  • 举报
回复
表存储什么意思?你可以设定一个中心点,然后按90度旋转~~
DeDeWo 2012-07-14
  • 打赏
  • 举报
回复 1
这不是初中数学点的旋转问题么
//设原点(x,y),中心点(x0,y0) ,原点绕中心点旋转90度后为(x1,y1);
//则(x-x0)(x1-x0)+(y-y0)(y1-y0)=0
//所以 x1-x0=y-y0 且 y1-y0= -(x-x0) ;
//解得一通解为 x1=y-y0+x0,y1=x0-x+y0 ,这就是旋转90度的坐标变换公式

33,027

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧