恩 ,原理是那样的。上午又想到了一个办法,可以把八M弄成0.5M。你开辟一个0.5M的空START[4000000]间,全部初始化为1,进行前面描述的循环,每填充一个点,便在START数组中相应位子置0。完成一次循环后检查最小地址的1,转换成二维地址,把相应点作为起始点,开始下一次循环,直到START数组中全为0为止。这个办法是利用二维数组和一维数组的一一对应关系作为基础进行的。
我本想写个程序测试下性能和可行性, 由于现在要考研实在没时间和精力,就靠ROCKCARRY大哥去弄了。你要是弄出来的话把测试的结果和代码给我一份hjj1123@sina.com或者放在论坛让大家都 看看这个算法到底怎么样。
下面我给一个我以前写俄罗斯方块是旋转图形的程序,也是采用数组操作的。由于这个程序我以后还有有点小用途,暂时还不能把代码全部贴出来,请大家见谅。这个程序不一定有用,ROCKCARRY看看吧。
/****************************************************************************/
/*功能:方块旋转的处理 */
/*入口参数:i,j */
/*出口参数: 无 */
/*下层函数:TC系统函数,myputimage,mygetimage,drawall,checkmove */
/*converting,inexistence */
/*上层函数:main */
/*补充:无 */
/****************************************************************************/
void move()
{ unsigned int r,s;
unsigned int e[8];
unsigned int h=0;
if(xz>3||xz<0) xz=0;
for(r=0;r<4;r++)
for(s=0;s<4;s++)
if(b[r][s]==1)
{ if(xz%2==0)
{ e[h]=r;
c[h++]=s;
c[h]=r;
e[h++]=s;
}
else{ c[h]=3-s;
e[h++]=r;
c[h]=3-r;
e[h++]=s;
}
b[r][s]=0;
}
minize();
myputimage(i,j,"picture.dat");
if(checkmove())
{
b[c[0]][c[1]]=1;
b[c[2]][c[3]]=1;
b[c[4]][c[5]]=1;
b[c[6]][c[7]]=1;
drawall(i,j,INDEX-1,COLOR,b);
mygetimage(i,j,"picture.dat");
}
else { b[e[0]][e[1]]=1;
b[e[2]][e[3]]=1;
b[e[4]][e[5]]=1;
b[e[6]][e[7]]=1;
myputimage(i,j,"picture.dat");
}
xz++;
}
我本想写个程序测试下性能和可行性, 由于现在要考研实在没时间和精力,就靠ROCKCARRY大哥去弄了。你要是弄出来的话把测试的结果和代码给我一份hjj1123@sina.com或者放在论坛让大家都 看看这个算法到底怎么样。
下面我给一个我以前写俄罗斯方块是旋转图形的程序,也是采用数组操作的。由于这个程序我以后还有有点小用途,暂时还不能把代码全部贴出来,请大家见谅。这个程序不一定有用,ROCKCARRY看看吧。
/****************************************************************************/
/*功能:方块旋转的处理 */
/*入口参数:i,j */
/*出口参数: 无 */
/*下层函数:TC系统函数,myputimage,mygetimage,drawall,checkmove */
/*converting,inexistence */
/*上层函数:main */
/*补充:无 */
/****************************************************************************/
void move()
{ unsigned int r,s;
unsigned int e[8];
unsigned int h=0;
if(xz>3||xz<0) xz=0;
for(r=0;r<4;r++)
for(s=0;s<4;s++)
if(b[r][s]==1)
{ if(xz%2==0)
{ e[h]=r;
c[h++]=s;
c[h]=r;
e[h++]=s;
}
else{ c[h]=3-s;
e[h++]=r;
c[h]=3-r;
e[h++]=s;
}
b[r][s]=0;
}
minize();
myputimage(i,j,"picture.dat");
if(checkmove())
{
b[c[0]][c[1]]=1;
b[c[2]][c[3]]=1;
b[c[4]][c[5]]=1;
b[c[6]][c[7]]=1;
drawall(i,j,INDEX-1,COLOR,b);
mygetimage(i,j,"picture.dat");
}
else { b[e[0]][e[1]]=1;
b[e[2]][e[3]]=1;
b[e[4]][e[5]]=1;
b[e[6]][e[7]]=1;
myputimage(i,j,"picture.dat");
}
xz++;
}
qq:674940174