return key+1; //需要移动 if(key-1>=0 && key-1<size) if(Cur_Table[key-1]==size-1) return key-1; // 需要移动 if(key+PT_Size<size && key+PT_Size>=0) if(Cur_Table[key+PT_Size]==size-1) return key+PT_Size; //不需要移动 if(key-PT_Size>=0 && key-PT_Size<size) if(Cur_Table[key-PT_Size]==size-1) return key-PT_Size;// 不需要移动 return 0xff; }
void Move_Pic(u8 sour,u8 dest) //拼图移动 { FileInfoStruct PicPart;//部分图片的临时存放空间 u8 pic_real_addr; u8 tempx,tempy; //当前格子的坐标 pic_real_addr=Cur_Table[dest];//得到图片的编号地址 PicPart.F_StartCluster=Pic_Addr[pic_real_addr]; PicPart.F_Type=T_BMP;//指定为BMP图片 //清空sour区的图片,就是把空格移到这个区 Get_Ps_Addr(sour,&tempx,&tempy);//得到源坐标 AI_LoadPicFile(&PicPart,tempx,tempy,tempx+Xscal,tempy+Yscal); pic_real_addr=Cur_Table[sour];//得到图片的编号地址 PicPart.F_StartCluster=Pic_Addr[pic_real_addr]; PicPart.F_Type=T_BMP;//指定为BMP图片 Get_Ps_Addr(dest,&tempx,&tempy);//得到目标坐标 AI_LoadPicFile(&PicPart,tempx,tempy,tempx+Xscal,tempy+Yscal); Cur_Table[dest]=Cur_Table[sour];//把sour区的图片编号赋给dest区 Cur_Table[sour]=PT_Size*PT_Size-1;//空格在sour区了,调换完成 }
void Win_Msg(void) // 最高纪录判定及方框显示 { u8 BEST=0; u16 timex,stepx; u16 minx=0; u8 tkey; //开始判断是不是创纪录了