html xmlns:v body script language="javascript" for (l = 0; (l += l - 135 ? l - 23 ? 1 : 9 : 41) - 201;) { document.write(l + 'v:rect style="width:50px; height:50px; behavior:URL(#default#VML);" coordsize="21600, 21600" fillcolor="#' + (Math.random() * 4096).toString(16) + '" O:SpT=' + l + ' onclick="fill.on=0" /'); } /script /body /html
成都创新互联公司长期为上千余家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为施秉企业提供专业的成都网站建设、网站建设,施秉网站改版等技术服务。拥有十多年丰富建站经验和众多成功案例,为您定制开发。
首先要明确,在JavaScript里面没有二维数组的概念,只能用普通数组来模拟出二维数组的效果。
其次,对二维数组进行分析,可以得出循环的次数的规律,即偶数/2或者奇数对2取整后加1。
再次,可以看出方阵是从右下角开始,逆时针逐渐增加得来。
那么,可以写出以下函数:
function
printAll(number
,start){
//number为N阶矩阵,start为开始的数字,默认值分别是5和1。
number
=
number
||
5;
start
=
start
||
1;
//
c为求出的循环次数
var
c
=
number%2
==
?
number/2
:
Math.ceil(number/2);
//
定义一个一维数组,方便生成二维数组
var
arr
=
[];
//
生成二维数组并初始化,值为0
for(
var
i
=
0;
i
number;
i++){
arr[i]
=
[];
for(var
j
=
;
j
number;
j++){
arr[i].push(0);
}
}
//
循环一次的函数
function
circle(c){
//
从下往上赋值
for(
i
=
number
-
c
-
1;
i
=
c;
i--){
arr[i][number
-
c
-
1]
=
start++;
}
//
从右往左赋值
for(i
=
number
-
c
-
2;
i
=
c;
i--){
arr[c][i]
=
start++;
}
//
从上往下赋值
for(
i
=
c
+
1;
i
number
-
c;
i++){
arr[i][c]
=
start++;
}
//
从左往右赋值
for(i
=
c
+
1;
i
number
-c
-
1;
i++){
arr[number
-
c
-
1][i]
=
start++;
}
}
//
循环给数组赋值
for(j
=
0;
j
c;
j++){
circle(j);
}
//
在控制台查看生成的数组信息,可注释掉
for(
i
=
0;
i
number;
i++){
console.log(arr[i]);
}
}
希望可以帮到你,思路和函数全给你了
用canvas,画矩形的方法是rect,四个参数就是输入的四个坐标,当然也可以用画线段的方式画出来。旋转的话canvas也支持rotate方法,参数是45deg就可以了,跟CSS3差不多的使用方法。
设矩形的左上顶点是(x, y), 宽w, 高h, 那么只要存在以下情况一定不相交, 否则是相交的
(x1 + w1) x2 || (x2 + w2) x1 || (y1 + h1) y2 || (y2 + h2) y1