📄 拼图游戏源代码.txt
字号:
break;
case 2:
BitBlt(hdc,120,0,120,96,mdc,point[i].x,point[i].y,SRCCOPY);
break;
case 3:
BitBlt(hdc,240,0,120,96,mdc,point[i].x,point[i].y,SRCCOPY);
break;
case 4:
BitBlt(hdc,360,0,120,96,mdc,point[i].x,point[i].y,SRCCOPY);
break;
case 5:
BitBlt(hdc,480,0,120,96,mdc,point[i].x,point[i].y,SRCCOPY);
break;
case 6:
BitBlt(hdc,0,96,120,96,mdc,point[i].x,point[i].y,SRCCOPY);
break;
case 7:
BitBlt(hdc,120,96,120,96,mdc,point[i].x,point[i].y,SRCCOPY);
break;
case 8:
BitBlt(hdc,240,96,120,96,mdc,point[i].x,point[i].y,SRCCOPY);
break;
case 9:
BitBlt(hdc,360,96,120,96,mdc,point[i].x,point[i].y,SRCCOPY);
break;
case 10:
BitBlt(hdc,480,96,120,96,mdc,point[i].x,point[i].y,SRCCOPY);
break;
case 11:
BitBlt(hdc,0,192,120,96,mdc,point[i].x,point[i].y,SRCCOPY);
break;
case 12:
BitBlt(hdc,120,192,120,96,mdc,point[i].x,point[i].y,SRCCOPY);
break;
case 13:
BitBlt(hdc,240,192,120,96,mdc,point[i].x,point[i].y,SRCCOPY);
break;
case 14:
BitBlt(hdc,360,192,120,96,mdc,point[i].x,point[i].y,SRCCOPY);
break;
case 15:
BitBlt(hdc,480,192,120,96,mdc,point[i].x,point[i].y,SRCCOPY);
break;
case 16:
BitBlt(hdc,0,288,120,96,mdc,point[i].x,point[i].y,SRCCOPY);
break;
case 17:
BitBlt(hdc,120,288,120,96,mdc,point[i].x,point[i].y,SRCCOPY);
break;
case 18:
BitBlt(hdc,240,288,120,96,mdc,point[i].x,point[i].y,SRCCOPY);
break;
case 19:
BitBlt(hdc,360,288,120,96,mdc,point[i].x,point[i].y,SRCCOPY);
break;
case 20:
BitBlt(hdc,480,288,120,96,mdc,point[i].x,point[i].y,SRCCOPY);
break;
case 21:
BitBlt(hdc,0,384,120,96,mdc,point[i].x,point[i].y,SRCCOPY);
break;
case 22:
BitBlt(hdc,120,384,120,96,mdc,point[i].x,point[i].y,SRCCOPY);
break;
case 23:
BitBlt(hdc,240,384,120,96,mdc,point[i].x,point[i].y,SRCCOPY);
break;
case 24:
BitBlt(hdc,360,384,120,96,mdc,point[i].x,point[i].y,SRCCOPY);
break;
case 25:
BitBlt(hdc,480,384,120,96,mdc,point[i].x,point[i].y,SRCCOPY);
break;
default:
MessageBox(NULL,"贴图序列号错误!","",NULL);
}
}
for(int j=1;j<=25;j++)
{
if(point[j].num==25)
{
SelectObject(mdc,empty);
switch(j)
{
case 1:
BitBlt(hdc,0,0,120,96,mdc,0,0,SRCCOPY);
break;
case 2:
BitBlt(hdc,120,0,120,96,mdc,0,0,SRCCOPY);
break;
case 3:
BitBlt(hdc,240,0,120,96,mdc,0,0,SRCCOPY);
break;
case 4:
BitBlt(hdc,360,0,120,96,mdc,0,0,SRCCOPY);
break;
case 5:
BitBlt(hdc,480,0,120,96,mdc,0,0,SRCCOPY);
break;
case 6:
BitBlt(hdc,0,96,120,96,mdc,0,0,SRCCOPY);
break;
case 7:
BitBlt(hdc,120,96,120,96,mdc,0,0,SRCCOPY);
break;
case 8:
BitBlt(hdc,240,96,120,96,mdc,0,0,SRCCOPY);
break;
case 9:
BitBlt(hdc,360,96,120,96,mdc,0,0,SRCCOPY);
break;
case 10:
BitBlt(hdc,480,96,120,96,mdc,0,0,SRCCOPY);
break;
case 11:
BitBlt(hdc,0,192,120,96,mdc,0,0,SRCCOPY);
break;
case 12:
BitBlt(hdc,120,192,120,96,mdc,0,0,SRCCOPY);
break;
case 13:
BitBlt(hdc,240,192,120,96,mdc,0,0,SRCCOPY);
break;
case 14:
BitBlt(hdc,360,192,120,96,mdc,0,0,SRCCOPY);
break;
case 15:
BitBlt(hdc,480,192,120,96,mdc,0,0,SRCCOPY);
break;
case 16:
BitBlt(hdc,0,288,120,96,mdc,0,0,SRCCOPY);
break;
case 17:
BitBlt(hdc,120,288,120,96,mdc,0,0,SRCCOPY);
break;
case 18:
BitBlt(hdc,240,288,120,96,mdc,0,0,SRCCOPY);
break;
case 19:
BitBlt(hdc,360,288,120,96,mdc,0,0,SRCCOPY);
break;
case 20:
BitBlt(hdc,480,288,120,96,mdc,0,0,SRCCOPY);
break;
case 21:
BitBlt(hdc,0,384,120,96,mdc,0,0,SRCCOPY);
break;
case 22:
BitBlt(hdc,120,384,120,96,mdc,0,0,SRCCOPY);
break;
case 23:
BitBlt(hdc,240,384,120,96,mdc,0,0,SRCCOPY);
break;
case 24:
BitBlt(hdc,360,384,120,96,mdc,0,0,SRCCOPY);
break;
case 25:
BitBlt(hdc,480,384,120,96,mdc,0,0,SRCCOPY);
break;
default:
;
}break; //遇到成功的就跳出
}
}
int finish=0;
for(int k=1;k<=25;k++)
{
if(point[k].num==k)
finish++;
}
if(finish==25)
{
fin=true;
sndPlaySound("Source\\sound\\FTELEP2电火花.wav",SND_ASYNC | SND_FILENAME);
MessageBox(NULL,"Finish! This is the final map! You Win!","恭喜^_^",NULL);
if(n<high5)
{
Sleep(100);
high5=n;
SelectObject(mdc,empty);
BitBlt(hdc,1007,433,100,30,mdc,250,0,SRCCOPY);
sprintf(str,"%d",high5);
TextOut(hdc,1007,433,str,strlen(str));
sndPlaySound("Source\\sound\\new.wav",SND_ASYNC | SND_FILENAME);
MessageBox(NULL,"THE NEW RECORD!","恭喜^_^",NULL);
Save();
}
}
}
}
void Change_Block(int block1,int block2)
{
int temp=0;
temp=point[block1].x;
point[block1].x=point[block2].x;
point[block2].x=temp;
temp=point[block1].y;
point[block1].y=point[block2].y;
point[block2].y=temp;
temp=point[block1].num;
point[block1].num=point[block2].num;
point[block2].num=temp;
}
void Save()
{
FILE *fp;
if((fp=fopen("Source\\record","wb+"))==NULL)
{
MessageBox(NULL,"不能打开record文件,可能被删除,请在Source中重新建立.","",NULL);
return;
}
if(fwrite(&high3,sizeof(high3),1,fp)!=1)
MessageBox(NULL,"不能写入记录","",NULL);
if(fwrite(&high4,sizeof(high4),1,fp)!=1)
MessageBox(NULL,"不能写入记录","",NULL);
if(fwrite(&high5,sizeof(high5),1,fp)!=1)
MessageBox(NULL,"不能写入记录","",NULL);
fclose(fp);
}
void GetPos()
{
int now_pos;
for(int j=1;j<=25;j++)
{
point[j].num=j;
}
int i;
switch(line)
{
case 3:
now_pos=9;
for(i=1;i<=9;i++) //对各块从原图中哪个位置读图的坐标进行赋值
{
switch(point[i].num)
{
case 1:point[i].x=0; point[i].y=0; break;
case 2:point[i].x=200; point[i].y=0; break;
case 3:point[i].x=400; point[i].y=0; break;
case 4:point[i].x=0; point[i].y=160;break;
case 5:point[i].x=200; point[i].y=160;break;
case 6:point[i].x=400; point[i].y=160;break;
case 7:point[i].x=0; point[i].y=320;break;
case 8:point[i].x=200; point[i].y=320;break;
case 9:point[i].x=400; point[i].y=320;break;
default:MessageBox(NULL,"初始化point[i]坐标错误!","",NULL);
}
}
break;
case 4:
now_pos=16;
for(i=1;i<=16;i++) //对各块从原图中哪个位置读图的坐标进行赋值
{
switch(point[i].num)
{
case 1:point[i].x=0; point[i].y=0; break;
case 2:point[i].x=150; point[i].y=0; break;
case 3:point[i].x=300; point[i].y=0; break;
case 4:point[i].x=450; point[i].y=0; break;
case 5:point[i].x=0; point[i].y=120; break;
case 6:point[i].x=150; point[i].y=120; break;
case 7:point[i].x=300; point[i].y=120; break;
case 8:point[i].x=450; point[i].y=120; break;
case 9:point[i].x=0; point[i].y=240; break;
case 10:point[i].x=150; point[i].y=240; break;
case 11:point[i].x=300; point[i].y=240; break;
case 12:point[i].x=450; point[i].y=240; break;
case 13:point[i].x=0; point[i].y=360; break;
case 14:point[i].x=150; point[i].y=360; break;
case 15:point[i].x=300; point[i].y=360; break;
case 16:point[i].x=450; point[i].y=360; break;
default:MessageBox(NULL,"初始化point[i]坐标错误!","",NULL);
}
}
break;
case 5:
now_pos=25;
for(i=1;i<=25;i++) //对各块从原图中哪个位置读图的坐标进行赋值
{
switch(point[i].num)
{
case 1:point[i].x=0; point[i].y=0; break;
case 2:point[i].x=120; point[i].y=0; break;
case 3:point[i].x=240; point[i].y=0; break;
case 4:point[i].x=360; point[i].y=0; break;
case 5:point[i].x=480; point[i].y=0; break;
case 6:point[i].x=0; point[i].y=96; break;
case 7:point[i].x=120; point[i].y=96; break;
case 8:point[i].x=240; point[i].y=96; break;
case 9:point[i].x=360; point[i].y=96; break;
case 10:point[i].x=480; point[i].y=96; break;
case 11:point[i].x=0; point[i].y=192; break;
case 12:point[i].x=120; point[i].y=192; break;
case 13:point[i].x=240; point[i].y=192; break;
case 14:point[i].x=360; point[i].y=192; break;
case 15:point[i].x=480; point[i].y=192; break;
case 16:point[i].x=0; point[i].y=288; break;
case 17:point[i].x=120; point[i].y=288; break;
case 18:point[i].x=240; point[i].y=288; break;
case 19:point[i].x=360; point[i].y=288; break;
case 20:point[i].x=480; point[i].y=288; break;
case 21:point[i].x=0; point[i].y=384; break;
case 22:point[i].x=120; point[i].y=384; break;
case 23:point[i].x=240; point[i].y=384; break;
case 24:point[i].x=360; point[i].y=384; break;
case 25:point[i].x=480; point[i].y=384; break;
default:MessageBox(NULL,"初始化point[i]坐标错误!","",NULL);
}
}
break;
default:;
}
srand((unsigned)time(NULL));
for(int k=0;k<200;k++)
{
switch(rand()%4)
{
case 0:
if((now_pos+1) % line!=1)
{
Change_Block(now_pos,now_pos+1);
now_pos++;
}
break;
case 1:
if((now_pos-1) % line!=0)
{
Change_Block(now_pos,now_pos-1);
now_pos--;
}
break;
case 2:
if(now_pos+line < line*line)
{
Change_Block(now_pos,now_pos+line);
now_pos+=line;
}
break;
case 3:
if(now_pos-line>0)
{
Change_Block(now_pos,now_pos-line);
now_pos-=line;
}
break;
default:;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -