#include "cube888flash.h"
#include "publicFormula.h"
#include "mathFormula.h"
#include "shuju.h"
#include "cubeDevice.h"
#include "generalCall.h"
#include "printCharAndBmp.h"
/**
*改函数定义的参数时,一定要将声明处一并修改
**/
void cube888flash_abc_1(unsigned int v)//字母效果
{
zimu(ZM,12,12,1);
}
void cube888flash_abc_2(unsigned int v) //字母上升
{
printerBmp(tab_shandian,20,10);
printerBmp(yc_table,5,v);
}
void cube888flash_abc_3(unsigned int v)//字母冲击,由背面至正面
{
;
}
void cube888flash_abc_4(unsigned int v)//显示类图函数,从下到上浮现:第一个参数是类图数组,第二个参数是类图数量,第三个参数是显示时长
{
leitu(yc_table,5,v);
}
void cube888flash_abc_5(unsigned int v) //心脏跳动
{
//显示几帧动画,参数1:数据源;参数2:几帧;参数3:循环播放多少遍;参数4:速度
donghua(hart_table,2,10,v);
}
void cube888flash_abc_7(unsigned int v) //像打印机扫描仪一样扫描出类图
{
;
}
void cube888flash_abc_6(unsigned int v)
{
;
}
void cube888flash_face_1(unsigned int v)//第一个面屏幕上下闭合,再拉开
{
uchar a[64]={0};//##数组一定赋初值为0,否则每次在调用该函数时,内容并不清零,和上次执行函数结束时一样##
char i;
for(i=0;i<4;i++)//闭合
{
a[i*8+7]=0xff;
a[(7-i)*8+7]=0xff;
zhen(a,v);
}
zhen(a,30); //铺满一面后延时一会
for(i=3;i>=0;i--)//拉开,是闭合的逆过程
{
a[i*8+7]=0;
a[(7-i)*8+7]=0;
zhen(a,v);
}
}
void cube888flash_face_2(unsigned int v) //动画24 一面从上至下扫描
{
uchar i,a[64]={0};
for(i=0;i<8;i++)
a[7*8+i]=0xff;
for(i=0;i<8;i++)
{
zhen(a,v);
move(a,2,0,1); //矩阵移动变化,kind=0 x轴,1 y轴,2 z轴;direction=0,负向,1正向,length:步数,不能为8
}
}
void cube888flash_face_3(unsigned int v)// 由上面至下面降落
{
char i;
for(i=0;i<4;i++)//显示4张图
{
print(tab_print+i*8,0); //tab_print为平面图数组
}
}
void cube888flash_face_4(unsigned int num,unsigned int v)//从一面到多面,从下至上,视觉效果好;参数1为循环次数,参数2为速度
{
uchar a[64]={0};
char i,j;
while(num--)
{
for(i=1;i<8;i++)
a[i]=0xff;
zhen(a,v);
for(i=1;i<8;i++)
{
move(a,2,1,1);//Z轴正向移一步
for(j=0;j<8;j++)//最下一层重新点亮
a[j]=0xff;
zhen(a,v);
}
for(i=0;i<8;i++)
{
if(num==0&&i==7)
continue;//最后一次不执行,跳出循环
move(a,2,1,1);//Z轴接着正向移,底层不补亮,实现飞出去效果
zhen(a,v);
}
}
for(i=0;i<7;i++)//最顶一面降落
{
move(a,2,0,1);
zhen(a,v+5);
}
}
void cube888flash_cube_1(unsigned int v)//条状升降 视觉效果好
{
char i,j,k;
uchar a[64]={0};
for(i=7;i>=0;i--)
{
a[i]=0x01<<i;
zhen(a,v);
}
for(i=0;i<7;i++)
{
for(j=0;j<8;j++)
a[j]=flash0__tab[i*8+j];
zhen(a,v);
}
for(i=0;i<7;i++)
{
move(a,2,1,1);
zhen(a,v);
}
for(i=0;i<64;i++)
{
if(i>55)
a[i]=0xff;
else
a[i]=0;
}
zhen(a,v);
for(i=7;i>=0;i--)//1 1条1条的落下
{
for(j=6;j>=0;j--)
{
a[i+j*8]=0xff;
a[i+(j+1)*8]=0;
zhen(a,v);
}
}
zhen(a,27);
for(i=7;i>=0;i--)//2 1条1条的上升
{
for(j=1;j<8;j++)
{
a[i+j*8]=0xff;
a[i+(j-1)*8]=0;
zhen(a,v);
}
}
zhen(a,27);
for(i=7;i>=0;i--)//3 ???
{
for(k=6;k>=0;k--)
{
for(j=0;j<8;j++)
{
if(k==0)
a[j+k*8]|=(0x80>>(7-i));
else
a[j+k*8]=(0x80>>(7-i));
a[j+(k+1)*8]^=(0x80>>(7-i));
}
}
zhen(a,v);
}
zhen(a,27);
for(i=7;i>=0;i--)//4
{
for(k=1;k<8;k++)
{
for(j=0;j<8;j++)
{
if(k==7)
a[j+k*8]|=(0x80>>(7-i));
else
a[j+k*8]=(0x80>>(7-i));
a[j+(k-1)*8]^=(0x80>>(7-i));
}
zhen(a,v);
}
}
zhen(a,27);
}
void cube888flash_cube_2(unsigned int v) //下雨
{
rain(1,10,v);//参数1为0,向上;为1,向下
rain(0,10,v);
}
void cube888flash_cube_3(unsigned int v)//一个点一个点的亮满,再一个点一个点的熄灭
{
uchar a[64];
char i,j,k;
for(k=0;k<8;k++) //X轴
for(i=0;i<8;i++) //Z轴
for(j=0;j<8;j++) //Y轴:点亮同一Z轴(共64个点)中的8个点
{
//## 新点亮一个点。面即Z坐标,线即Y坐标,点即X坐标
a[tab_mian[i]*8+tab_xian[j]]|=(0x01<<tab_dian[(i+j)*8+k]);
zhen(a,v);
}
zhen(a,90);//256个灯都亮了
for(k=0;k<8;k++)
for(i=0;i<8;i++)
for(j=0;j<8;j++)
{
//## 熄灭一个灯
a[tab_mian[i]*8+tab_xian[j]]^=(0x01<<tab_dian[(i+j)*8+k]);
zhen(a,v);
}
}
void cube888flash_cube_4(unsigned int v)//一滴水,两滴水,三滴水
{
water1(1,2,v);water1(2,4,v);
water1(4,3,v);water1(7,1,v);
water1(5,6,v);
water2(0,2,7,1,v);
water2(2,4,7,7,v);
water2(4,7,7,1,v);
water2(3,6,7,7,v);
water2(4,1,6,6,v);
water2(7,3,1,2,v);
water3(0,4,7,4,5,1,v);
water3(7,7,0,0,0,7,v);
water3(0,6,6,6,5,1,v);
water3(6,7,0,0,2,2,v);
water3(3,3,6,6,2,2,v);
}
void cube888flash_cube_5(unsigned int v)// 四壁旋转,先延XZ,再延XZ
{
uchar i;
uchar xzTimes=3;
uchar yzTimes=3;
uchar _display[8][8]={0};
// roll_apeak_xy(_display,3,v);
// roll_apeak_xy(_display,0,v);
// roll_apeak_xy(_display,1,v);
roll_apeak_xz(xzTimes,v);//先延XZ转 参数1是跑几周,参数2是速度
while(yzTimes--)
for(i=0;i<4;i++)//再延XZ转
{
roll_apeak_yz(_display,i,v);
}
}
void cube888flash_cube_6(unsigned int v)// 对角线旋转
{
link(9); //从左边开始进入连接选择条的开端
xuanzhuantiao(1,8,v);//实心旋转显示选择一个面
xuanzhuantiao(0,8,v);//空心旋转显示选择一个面
}
void cube888flash_cube_7(unsigned int v)//以边为轴一面旋转
{
xuanzhuantiao2(3,v);
}
void cube888flash_cube_8(unsigned int v)//小正方体旋转 视觉效果极佳
{
;
}
void cube888flash_cube_9(unsigned int v) //小正方体组合成大正方体
{
link00();
}
void cube888flash_cube_10(unsigned int v) //一面伸缩至一体
{
shensuo(5);
}
void cube888flash_cube_11(unsigned int v) //小正方体变大,先实芯再空芯,视觉效果极佳
{
char i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
cube(0,j,6);
for(i=0;i<3;i++)
for(j=0;j<3;j++)
cube(1,j,6);
}
void cube888flash_cube_12(unsigned int v)// 曲面单向旋转,视频效果极好
{
qumianxuanzhuan(1,10,4);
qumianxuanzhuan(0,10,4);
}
void cube888flash_cube_13(unsigned int v)// 曲面来回旋转,视频效果极好
{
qumianxuanzhuan2(13,4);
}
void cube888flash_cube_14(unsigned int v)
{
char i,j,k;
uchar a[64]={0};uchar b[64]={0};
a[0]=0x0F;a[7]=0xFF;a[8]=0xFF;a[16]=0xFF;a[24]=0xFF;
zhen(a,v);
b[0]=0xf0;
b[63]=0xFF;
zhen(b,v);
// for(i=0;i<=7;i++)
// {
// a[i]=0x01;
// a[i]<<=i;
// zhen(a,v);
// }
// for(i=0;i<7;i++)
// {
// move(a,2,1,1);
// zhen(a,v);
// }
// for(i=0;i<7;i++)
// {
// move(a,2,0,1);
// zhen(a,v);
// }
// for(i=0;i<3;i++)
// {
// move(a,0,1,2);
// zhen(a,v);
// }
// for(i=0;i<3;i++)
// {
// move(a,0,0,2);
// zhen(a,v);
// }
}
/**
*@brief ##二维数组参数传递的方式,列数必须指定
**/
void test2(uchar array[][8])
{
array[0][0]=0x11;
array[0][1]=0x12;
}
/**
*@brief
**/
void flash_1(unsigned int v)
{
uchar i;
uchar _display[8][8]={0};
for(i=4;i>0;i--)
{
type(_display,i,0);
zhen(_display,v);
}
}
void flash_2(unsigned int v)//沙漏状,盘旋上升
{
uchar _display[8][8]={0};
uchar i;
for (i=129;i>0;i--)
{
cirp(_display,i-2,0,1);
zhen(_display,v);
cirp(_display,i-1,0,0);
}
zhen(_display,v);
for (i=0;i<136;i++)
{
cirp(_display,i,1,1);
zhen(_display,v);
cirp(_display,i-8,1,0);
}
zhen(_display,v);
for (i=129;i>0;i--)
{
cirp(_display,i-2,0,1);
zhen(_display,v);
}
for (i=16;i>0;i--)
{
zhen(_display,v);
}
for (i=0;i<128;i++)
{
cirp(_display,i-8,1,0);
zhen(_display,v);
}
zhen(_display,v);
}
void test(uchar *_display)
{
//line(_display,1,1,1,6,6,4,1);
box_apeak_xy(_display,1,1,3,6,6,6,0,1);
zhen(_display,3);
}
/**
*@brief 垂直面闪烁来回
**/
void flash_3(unsigned i