📄 拼图游戏源代码.txt
字号:
if(point[block_num-1].num==25)
{
Change_Block(block_num,block_num-1);
n++;
}
else if(point[block_num+1].num==25)
{
Change_Block(block_num,block_num+1);
n++;
}
else if(point[block_num-5].num==25)
{
Change_Block(block_num,block_num-5);
n++;
}
break;
default:
if(point[block_num-1].num==25)
{
Change_Block(block_num,block_num-1);
n++;
}
else if(point[block_num+5].num==25)
{
Change_Block(block_num,block_num+5);
n++;
}
else if(point[block_num+1].num==25)
{
Change_Block(block_num,block_num+1);
n++;
}
else if(point[block_num-5].num==25)
{
Change_Block(block_num,block_num-5);
n++;
}
}
}
break;
default:;
}
MyPaint();
break;
case WM_CLOSE:
if(IDYES==MessageBox(hWnd,"真的不玩了?","提示",MB_YESNO))
{
DestroyWindow(hWnd);
}
break;
case WM_DESTROY:
int k;
for(k=0;k<7;k++)
{
DeleteObject(pict[k]);
DeleteObject(compare_pict[k]);
}
DeleteObject(compare_pic);
DeleteObject(pic);
DeleteObject(empty);
ReleaseDC(hWnd,hdc);
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
void MyPaint()
{
SelectObject(mdc,empty); //贴上背景图
BitBlt(hdc,600,0,487,526,mdc,200,0,SRCCOPY);
SelectObject(mdc,compare_pic); //贴上参照图
BitBlt(hdc,617,0,450,360,mdc,0,0,SRCCOPY);
sprintf(str,"%d",n); //显示移动步数
TextOut(hdc,817,433,str,strlen(str));
if(3==line)
{
sprintf(str,"%d",high3); //在其位置显示最高记录
TextOut(hdc,1007,433,str,strlen(str));
if(new3) //如果要重排
{
GetPos(); //重排
new3=false;
}
SelectObject(mdc,pic);
for(int i=1;i<=9;i++)
{
switch(i) //按属性贴图
{
case 1:
BitBlt(hdc,0,0,200,160,mdc,point[i].x,point[i].y,SRCCOPY);
break;
case 2:
BitBlt(hdc,200,0,200,160,mdc,point[i].x,point[i].y,SRCCOPY);
break;
case 3:
BitBlt(hdc,400,0,200,160,mdc,point[i].x,point[i].y,SRCCOPY);
break;
case 4:
BitBlt(hdc,0,160,200,160,mdc,point[i].x,point[i].y,SRCCOPY);
break;
case 5:
BitBlt(hdc,200,160,200,160,mdc,point[i].x,point[i].y,SRCCOPY);
break;
case 6:
BitBlt(hdc,400,160,200,160,mdc,point[i].x,point[i].y,SRCCOPY);
break;
case 7:
BitBlt(hdc,0,320,200,160,mdc,point[i].x,point[i].y,SRCCOPY);
break;
case 8:
BitBlt(hdc,200,320,200,160,mdc,point[i].x,point[i].y,SRCCOPY);
break;
case 9:
BitBlt(hdc,400,320,200,160,mdc,point[i].x,point[i].y,SRCCOPY);
break;
default:
MessageBox(NULL,"贴图序列号错误!","",NULL);
}
}
for(int j=1;j<=9;j++)
{
if(point[j].num==9)
{
SelectObject(mdc,empty);
switch(j) //贴上空白图
{
case 1:
BitBlt(hdc,0,0,200,160,mdc,0,0,SRCCOPY);
break;
case 2:
BitBlt(hdc,200,0,200,160,mdc,0,0,SRCCOPY);
break;
case 3:
BitBlt(hdc,400,0,200,160,mdc,0,0,SRCCOPY);
break;
case 4:
BitBlt(hdc,0,160,200,160,mdc,0,0,SRCCOPY);
break;
case 5:
BitBlt(hdc,200,160,200,160,mdc,0,0,SRCCOPY);
break;
case 6:
BitBlt(hdc,400,160,200,160,mdc,0,0,SRCCOPY);
break;
case 7:
BitBlt(hdc,0,320,200,160,mdc,0,0,SRCCOPY);
break;
case 8:
BitBlt(hdc,200,320,200,160,mdc,0,0,SRCCOPY);
break;
case 9:
BitBlt(hdc,400,320,200,160,mdc,0,0,SRCCOPY);
break;
default:;
}
break;
}
}
int finish=0;
for(int k=1;k<=9;k++)
{
if(point[k].num==k)
finish++; //做完成判断 完成则finish应该为line*line
}
if(finish==9) //完成则执行
{
fin=true;
sndPlaySound("Source\\sound\\FTELEP2电火花.wav",SND_ASYNC | SND_FILENAME);
MessageBox(NULL,"Finish! Change a harder one,try it again!","恭喜^_^",NULL);
if(n<high3) //如果出现新记录...
{
Sleep(100); //睡一下,让记录来的别太突然~
high3=n;
SelectObject(mdc,empty);
BitBlt(hdc,1007,433,100,30,mdc,250,0,SRCCOPY); //贴个背景的绿图,要不如n为44,记录为100,就会出现记录显示为440 再刷新下才能看到是44
sprintf(str,"%d",high3); //显示新记录!
TextOut(hdc,1007,433,str,strlen(str));
sndPlaySound("Source\\sound\\new.wav",SND_ASYNC | SND_FILENAME);
MessageBox(NULL,"THE NEW RECORD!","恭喜^_^",NULL);
Save(); //保存新记录到文件
}
}
}
else if(4==line)
{
sprintf(str,"%d",high4);
TextOut(hdc,1007,433,str,strlen(str));
if(new4)
{
GetPos();
new4=false;
}
SelectObject(mdc,pic);
for(int i=1;i<=16;i++)
{
switch(i)
{
case 1:
BitBlt(hdc,0,0,150,120,mdc,point[i].x,point[i].y,SRCCOPY);
break;
case 2:
BitBlt(hdc,150,0,150,120,mdc,point[i].x,point[i].y,SRCCOPY);
break;
case 3:
BitBlt(hdc,300,0,150,120,mdc,point[i].x,point[i].y,SRCCOPY);
break;
case 4:
BitBlt(hdc,450,0,150,120,mdc,point[i].x,point[i].y,SRCCOPY);
break;
case 5:
BitBlt(hdc,0,120,150,120,mdc,point[i].x,point[i].y,SRCCOPY);
break;
case 6:
BitBlt(hdc,150,120,150,120,mdc,point[i].x,point[i].y,SRCCOPY);
break;
case 7:
BitBlt(hdc,300,120,150,120,mdc,point[i].x,point[i].y,SRCCOPY);
break;
case 8:
BitBlt(hdc,450,120,150,120,mdc,point[i].x,point[i].y,SRCCOPY);
break;
case 9:
BitBlt(hdc,0,240,150,120,mdc,point[i].x,point[i].y,SRCCOPY);
break;
case 10:
BitBlt(hdc,150,240,150,120,mdc,point[i].x,point[i].y,SRCCOPY);
break;
case 11:
BitBlt(hdc,300,240,150,120,mdc,point[i].x,point[i].y,SRCCOPY);
break;
case 12:
BitBlt(hdc,450,240,150,120,mdc,point[i].x,point[i].y,SRCCOPY);
break;
case 13:
BitBlt(hdc,0,360,150,120,mdc,point[i].x,point[i].y,SRCCOPY);
break;
case 14:
BitBlt(hdc,150,360,150,120,mdc,point[i].x,point[i].y,SRCCOPY);
break;
case 15:
BitBlt(hdc,300,360,150,120,mdc,point[i].x,point[i].y,SRCCOPY);
break;
case 16:
BitBlt(hdc,450,360,150,120,mdc,point[i].x,point[i].y,SRCCOPY);
break;
default:
MessageBox(NULL,"贴图序列号错误!","",NULL);
}
}
for(int j=1;j<=16;j++)
{
if(point[j].num==16)
{
SelectObject(mdc,empty);
switch(j)
{
case 1:
BitBlt(hdc,0,0,150,120,mdc,0,0,SRCCOPY);
break;
case 2:
BitBlt(hdc,150,0,150,120,mdc,0,0,SRCCOPY);
break;
case 3:
BitBlt(hdc,300,0,150,120,mdc,0,0,SRCCOPY);
break;
case 4:
BitBlt(hdc,450,0,150,120,mdc,0,0,SRCCOPY);
break;
case 5:
BitBlt(hdc,0,120,150,120,mdc,0,0,SRCCOPY);
break;
case 6:
BitBlt(hdc,150,120,150,120,mdc,0,0,SRCCOPY);
break;
case 7:
BitBlt(hdc,300,120,150,120,mdc,0,0,SRCCOPY);
break;
case 8:
BitBlt(hdc,450,120,150,120,mdc,0,0,SRCCOPY);
break;
case 9:
BitBlt(hdc,0,240,150,120,mdc,0,0,SRCCOPY);
break;
case 10:
BitBlt(hdc,150,240,150,120,mdc,0,0,SRCCOPY);
break;
case 11:
BitBlt(hdc,300,240,150,120,mdc,0,0,SRCCOPY);
break;
case 12:
BitBlt(hdc,450,240,150,120,mdc,0,0,SRCCOPY);
break;
case 13:
BitBlt(hdc,0,360,150,120,mdc,0,0,SRCCOPY);
break;
case 14:
BitBlt(hdc,150,360,150,120,mdc,0,0,SRCCOPY);
break;
case 15:
BitBlt(hdc,300,360,150,120,mdc,0,0,SRCCOPY);
break;
case 16:
BitBlt(hdc,450,360,150,120,mdc,0,0,SRCCOPY);
break;
default:;
}
break;
}
}
int finish=0;
for(int k=1;k<=16;k++)
{
if(point[k].num==k)
finish++;
}
if(finish==16)
{
fin=true;
sndPlaySound("Source\\sound\\FTELEP2电火花.wav",SND_ASYNC | SND_FILENAME);
MessageBox(NULL,"Finish! Change a harder one,try it again!","恭喜^_^",NULL);
if(n<high4)
{
Sleep(100);
high4=n;
SelectObject(mdc,empty);
BitBlt(hdc,1007,433,100,30,mdc,250,0,SRCCOPY);
sprintf(str,"%d",high4);
TextOut(hdc,1007,433,str,strlen(str));
sndPlaySound("Source\\sound\\new.wav",SND_ASYNC | SND_FILENAME);
MessageBox(NULL,"THE NEW RECORD!","恭喜^_^",NULL);
Save();
}
}
}
else if(5==line)
{
sprintf(str,"%d",high5);
TextOut(hdc,1007,433,str,strlen(str));
if(new5) //更新5X5
{
GetPos();
new5=false;
}
SelectObject(mdc,pic);
for(int i=1;i<=25;i++)
{
switch(i)
{
case 1:
BitBlt(hdc,0,0,120,96,mdc,point[i].x,point[i].y,SRCCOPY);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -