俄罗斯方块中方块的旋转变形

本文针对用js编写俄罗斯方块的时候,方块的旋转变形算法,以逆时针旋转为例,下图为旋转的说明图

俄罗斯方块中方块的旋转变形_第1张图片

第一次用visio画图,画的很不好,坐标(x,y)绕(x0,y0)逆时针旋转90度后的坐标为(x0+y0-y,y0-x0+x)。如图。假设(x0,y0)点为原点(0,0),(x,y)绕原点旋转90度后的坐标为(-y,x),当绕(x0,y0)旋转时,可以先把(x.y)坐标平移到(x-x0,y-y0)点,等于是基于原点旋转,旋转后坐标为(-(y-y0),(x-x0)),然后再平移回来,即所得坐标(x0+y0-y,y0-x0+x)。

下面是我工程的旋转部分的代码,完整的俄罗斯方块代码可以去我的博客代码片查看https://code.csdn.net/snippets/1675026

//定义旋转
var rotate = function(){
	var canRotate = true;
	for(var i = 0;i=TETRIS_COLS-1||tetris_status[afterRotateY][afterRotateX+1]!=0){
				moveLeft();
				afterRotateX = currentFall[2].x+preY-currentFall[2].y;
			    afterRotateY = currentFall[2].y+currentFall[2].x-preX;
				break;
				}
				
			if(afterRotateX>=TETRIS_COLS-1||tetris_status[afterRotateY][afterRotateX+1]!=0){
				moveLeft();
				break;
				}
			}
		}
		if(canRotate){
			for(var i = 0;i



你可能感兴趣的:(js)