还剩37页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
//编译环境VC++
6.
0.程序和资源一共15M.//需要的留个E__IL.... 能上传到这里供大家下载吗 谁知道告诉我//自制-拼图游戏 __:高坤 转载请标明出处 谢谢//代码笨拙 高手勿笑 欢迎批评指正#includewindows.h#includestdio.h#includetime.h#includemmsystem.h#includeresour__.hHINSTAN__hInst;HBIT__Ppicemptycompare_picpict
[8]compare_pict
[8]other; //所有图的变量名HDChdcmdc; //DC名intmouse_xmouse_yn=0line=3high3=100high4=200high5=300; //鼠标XY__步数难度记录charstr
[10]=; //字符串显示步数和记录时用boolfin=falsenew3=truenew4=falsenew5=false; //完成难度三四五的重绘structPoint{ intx; inty; intnum;}point
[26]; //块ATOMMyRegisterClassHINSTAN__hInstan__;BOOLInitInstan__HINSTAN__int;LRESULTCALLBACK WndProcHWNDUINTWPARAMLPARAM;voidMyPaint; //显示voidChange_Blockintblock1intblock2; //交换两块的属性voidS__e; //保存记录voidGetPos; //为重绘做的随机排列intAPIENTRYWin__inHINSTAN__hInstan__HINSTAN__hPrevInstan__LPSTRlpCmdLineintnCmdShow{ MSGmsg; MyRegisterClasshInstan__; if!InitInstan__hInstan__nCmdShow //如果实例化失败退出 { returnFALSE; } whileGetMessagemsgNULL00 //消息循环一直获取消息直到消息返回值为假 { TranslateMessagemsg; //翻译消息 DispatchMessagemsg; //将消息发到适当的对象上 } returnmsg.wParam;}ATOMMyRegisterClassHINSTAN__hInstan__ //注册窗口类通知你要建的窗口是什么样的.可以有多个用类名来区分{ WNDCLAS___w__x; //类名 w__x.cbSize=sizeofWNDCLAS___; //类的长度 cb...表示存储空间 w__x.style =CS_HREDRAW|CS_VREDRAW|CS_DBLCLKS; //窗口风格 水平horizontal.垂直vertical.重画redraw w__x.lpfnWndProc =WNDPROCWndProc; //指向函数的一个指针指向WndProc //LRESULTCALLBACKWndProcHWNDhWndUINTmessageWPARAMwParamLPARAMlParam w__x.cbCl___tra =0; //类变量占用的存储cb表示存储空间的前缀 w__x.cbWndExtra =0; //实例变量占用的存储 w__x.hInstan__ =hInstan__; //定义该类的应用程序实例的句柄 w__x.hIcon =LoadIconhInstan____KEINTRESOUR__IDI_ICON1; //图标对象的句柄 w__x.hCursor =LoadCursorNULLIDC_ARROW; //光标图像的句柄 w__x.hbrBackground =HBRUSHCOLOR_WINDOW+1; //用于擦掉用户区的刷子的句柄 w__x.lpszMenuName =LPCSTRIDR_MENU1; //标识选单对象的字符串 w__x.lpszClassName =CAN; //该类名字的字符串 lpsz长指针以\0结束 w__x.hIcon__ =NULL; // returnRegisterClas___w__x; //定义完类的各个对象后注册}BOOLInitInstan__HINSTAN__hInstan__intnCmdShow{ HWNDhWnd; hInst=hInstan__; charfilename
[30]=; hWnd=CreateWindowCAN游戏窗口WS_OVERLAPPEDWINDOW~WS___XIMIZEBOX~WS_THICKFRAME___USEDEFAULT0___USEDEFAULT0NULLNULLhInstan__NULL; if!hWnd //类名用于标识创建的窗口属于哪个类. { returnFALSE; } MoveWindowhWnd801001087526true; ShowWindowhWndnCmdShow; UpdateWindowhWnd; hdc=GetDChWnd; mdc=CreateCompatibleDChdc; //创建缓存 empty=HBIT__PLoadI__gehInstan__Sour__\\pic\\empty.bmpI__GE_BIT__P687526LR_LOADFROMFILE; forintm=0;m=7;m++ { sprintffilenameSour__\\pic\\pic%d.bmpm; //读图没什么好说的 pict[m]=HBIT__PLoadI__gehInstan__filenameI__GE_BIT__P600480LR_LOADFROMFILE; compare_pict[m]=HBIT__PLoadI__gehInstan__filenameI__GE_BIT__P450360LR_LOADFROMFILE; } pic=pict
[0]; compare_pic=compare_pict
[0]; FILE*fp; //读入record文件中的记录 iffp=fopenSour__\\recordab+==NULL { MessageBoxNULL不能打开record文件可能被删除请在Sour__中重新建立.NULL; returnfalse; } else { freadhigh3sizeofhigh31fp; freadhigh4sizeofhigh41fp; freadhigh5sizeofhigh51fp; fclosefp; } MyPaint; returnTRUE;}LRESULTCALLBACKWndProcHWNDhWndUINTmessageWPARAMwParamLPARAMlParam{ PAINTSTRUCTps; intblock_num=0; //用于鼠标所指的块的编号非NUM号要区分 switchmessage { caseWM_PAINT: //显示 hdc=BeginPainthWndps; hdc=GetDChWnd; MyPaint; EndPainthWndps; break; caseWM_COM__ND: //菜单命令 switchLOWORDwParam { caseID_NEWGAME: fin=0;n=0; switchline { case3:new3=true;break; //读图后要重排图 case4:new4=true;break; case5:new5=true;break; default:; } MyPaint; break; caseID_PIC0: pic=pict
[0]; //读入大图 compare_pic=compare_pict
[0]; //读入参照图 fin=0;n=0; switchline { case3:new3=true;break; //读图后要重排图 case4:new4=true;break; case5:new5=true;break; default:; } MyPaint; break; caseID_PIC1: pic=pict
[1]; compare_pic=compare_pict
[1]; fin=0;n=0; switchline { case3:new3=true;break; case4:new4=true;break; case5:new5=true;break; default:; } MyPaint; break; caseID_PIC2: pic=pict
[2]; compare_pic=compare_pict
[2]; fin=0;n=0; switchline { case3:new3=true;break; case4:new4=true;break; case5:new5=true;break; default:; } MyPaint; break; caseID_PIC3: pic=pict
[3]; compare_pic=compare_pict
[3]; fin=0;n=0; switchline { case3:new3=true;break; case4:new4=true;break; case5:new5=true;break; default:; } MyPaint; break; caseID_PIC4: pic=pict
[4]; compare_pic=compare_pict
[4]; fin=0;n=0; switchline { case3:new3=true;break; case4:new4=true;break; case5:new5=true;break; default:; } MyPaint; break; caseID_PIC5: pic=pict
[5]; compare_pic=compare_pict
[5]; fin=0;n=0; switchline { case3:new3=true;break; case4:new4=true;break; case5:new5=true;break; default:; } MyPaint; break; caseID_PIC6: pic=pict
[6]; compare_pic=compare_pict
[6]; fin=0;n=0; switchline { case3:new3=true;break; case4:new4=true;break; case5:new5=true;break; default:; } MyPaint; break; caseID_PIC7: pic=pict
[7]; compare_pic=compare_pict
[7]; fin=0;n=0; switchline { case3:new3=true;break; case4:new4=true;break; case5:new5=true;break; default:; } MyPaint; break; caseID_PIC8: ifLoadI__geNULLSour__\\pic\\other.bmpI__GE_BIT__P600480LR_LOADFROMFILE //成功载入other.bmp { pic=HBIT__PLoadI__geNULLSour__\\pic\\other.bmpI__GE_BIT__P600480LR_LOADFROMFILE; compare_pic=HBIT__PLoadI__geNULLSour__\\pic\\other.bmpI__GE_BIT__P450360LR_LOADFROMFILE; fin=0;n=0; switchline { case3:new3=true;break; case4:new4=true;break; case5:new5=true;break; default:; } MyPaint; } elseMessageBoxhWndpic文件夹中无other.bmp文件.说明NULL; //未成功载入other.bmp break; caseID_THREE: new3=true;new4=false;new5=false;line=3;fin=0;n=0; //如果选难度三则要重排图不许四五重排.难度设为三标记未完成n从0记数. MyPaint; break; caseID_FOUR: new3=false;new4=true;new5=false;line=4;fin=0;n=0; MyPaint; break; caseID_FIVE: new3=false;new4=false;new5=true;line=5;fin=0;n=0; MyPaint; break; caseID_INTRODU__: MessageBoxhWnd鼠标____拼完整即胜利!\n\n如果想自添加图需要用BMP格式,文件名为other.bmp并放入pic文件夹中.说明NULL; break; caseID_ABOUT: MessageBoxhWnd如发现BUG或有好的建议请致信E__IL296___34@__.com谢谢!\n\n\t SpecialThank老婆--悦对我的大力支持!\n\n\t\t\t\t\t__高坤说明NULL; break; caseID_EXIT: DestroyWindowhWnd; break; default: MessageBoxhWnd菜单命令错误!NULL; } break; caseWM_LBUTTONDOWN: //鼠标左键控制块的__ mouse_x=LOWORDlParam; //记录鼠标的位置 mouse_y=HIWORDlParam; block_num=0; switchline { case3: ifmouse_x600mouse_y480 //鼠标在允许__的大图上才赋块值 block_num=mouse_x/200+1+mouse_y/160*3; if!finblock_num0 { sndPlaySoundSour__\\sound\\click.w__SND_ASYNC|SND_FILENAME; switchblock_num { case1: ifpoint
[2].num==9 //第一块可以与第二块交换 { Change_Block12; n++; //__步数加1 } elseifpoint
[4].num==9 //第一块可以与第四块交换 { Change_Block14; n++; //__步数加1 } break; case2: ifpoint
[1].num==9 //第二块可以与第一块交换 { Change_Block21; n++; //__步数加1 } elseifpoint
[5].num==9 //第二块可以与第五块交换 { Change_Block25; n++; //__步数加1 } elseifpoint
[3].num==9 //第二块可以与第三块交换 { Change_Block23; n++; //__步数加1 } break; case3: ifpoint
[2].num==9 //第三块可以与第二块交换 { Change_Block32; n++; //__步数加1 } elseifpoint
[6].num==9 //第三块可以与第六块交换 { Change_Block36; n++; //__步数加1 } break; case4: ifpoint
[1].num==9 //第四块可以与第一块交换 { Change_Block41; n++; //__步数加1 } elseifpoint
[5].num==9 //第四块可以与第五块交换 { Change_Block45; n++; //__步数加1 } elseifpoint
[7].num==9 //第四块可以与第七块交换 { Change_Block47; n++; //__步数加1 } break; case5: ifpoint
[2].num==9 //第五块可以与第二块交换 { Change_Block52; n++; //__步数加1 } elseifpoint
[4].num==9 //第五块可以与第四块交换 { Change_Block54; n++; //__步数加1 } elseifpoint
[6].num==9 //第五块可以与第六块交换 { Change_Block56; n++; //__步数加1 } elseifpoint
[8].num==9 //第五块可以与第八块交换 { Change_Block58; n++; //__步数加1 } break; case6: ifpoint
[3].num==9 //第六块可以与第三块交换 { Change_Block63; n++; //__步数加1 } elseifpoint
[5].num==9 //第六块可以与第五块交换 { Change_Block65; n++; //__步数加1 } elseifpoint
[9].num==9 //第六块可以与第九块交换 { Change_Block69; n++; //__步数加1 } break; case7: ifpoint
[8].num==9 //第七块可以与第八块交换 { Change_Block78; n++; //__步数加1 } elseifpoint
[4].num==9 //第七块可以与第四块交换 { Change_Block74; n++; //__步数加1 } break; case8: ifpoint
[7].num==9 //第八块可以与第七块交换 { Change_Block87; n++; //__步数加1 } elseifpoint
[5].num==9 //第八块可以与第五块交换 { Change_Block85; n++; //__步数加1 } elseifpoint
[9].num==9 //第八块可以与第九块交换 { Change_Block89; n++; //__步数加1 } break; case9: ifpoint
[8].num==9 //第九块可以与第八块交换 { Change_Block98; n++; //__步数加1 } elseifpoint
[6].num==9 //第九块可以与第六块交换 { Change_Block96; n++; //__步数加1 } break; default:; } } break; case4: ifmouse_x600mouse_y480 block_num=mouse_x/150+1+mouse_y/120*4; if!finblock_num0 //如果block_num没能从鼠标坐标上获取值则说明点的位置不对 { sndPlaySoundSour__\\sound\\click.w__SND_ASYNC|SND_FILENAME; switchblock_num { case1: ifpoint[block_num+1].num==16 { Change_Blockblock_numblock_num+1; n++; } elseifpoint[block_num+4].num==16 { Change_Blockblock_numblock_num+4; n++; } break; case4: ifpoint[block_num-1].num==16 { Change_Blockblock_numblock_num-1; n++; } elseifpoint[block_num+4].num==16 { Change_Blockblock_numblock_num+4; n++; } break; case13: ifpoint[block_num-4].num==16 { Change_Blockblock_numblock_num-4; n++; } elseifpoint[block_num+1].num==16 { Change_Blockblock_numblock_num+1; n++; } break; case16: ifpoint[block_num-1].num==16 { Change_Blockblock_numblock_num-1; n++; } elseifpoint[block_num-4].num==16 { Change_Blockblock_numblock_num-4; n++; } break; case2: case3: ifpoint[block_num-1].num==16 { Change_Blockblock_numblock_num-1; n++; } elseifpoint[block_num+4].num==16 { Change_Blockblock_numblock_num+4; n++; } elseifpoint[block_num+1].num==16 { Change_Blockblock_numblock_num+1; n++; } break; case5: case9: ifpoint[block_num+4].num==16 { Change_Blockblock_numblock_num+4; n++; } elseifpoint[block_num+1].num==16 { Change_Blockblock_numblock_num+1; n++; } elseifpoint[block_num-4].num==16 { Change_Blockblock_numblock_num-4; n++; } break; case8: case12: ifpoint[block_num-1].num==16 { Change_Blockblock_numblock_num-1; n++; } elseifpoint[block_num+4].num==16 { Change_Blockblock_numblock_num+4; n++; } elseifpoint[block_num-4].num==16 { Change_Blockblock_numblock_num-4; n++; } break; case14: case15: ifpoint[block_num-1].num==16 { Change_Blockblock_numblock_num-1; n++; } elseifpoint[block_num+1].num==16 { Change_Blockblock_numblock_num+1; n++; } elseifpoint[block_num-4].num==16 { Change_Blockblock_numblock_num-4; n++; } break; default: ifpoint[block_num-1].num==16 { Change_Blockblock_numblock_num-1; n++; } elseifpoint[block_num+4].num==16 { Change_Blockblock_numblock_num+4; n++; } elseifpoint[block_num+1].num==16 { Change_Blockblock_numblock_num+1; n++; } elseifpoint[block_num-4].num==16 { Change_Blockblock_numblock_num-4; n++; } } } break; case5: ifmouse_x600mouse_y480 block_num=mouse_x/120+1+mouse_y/96*5; if!finblock_num0 //如果block_num没能从鼠标坐标上获取值则说明点的位置不对 { sndPlaySoundSour__\\sound\\click.w__SND_ASYNC|SND_FILENAME; switchblock_num //__两块 { case1: ifpoint[block_num+1].num==25 { Change_Blockblock_numblock_num+1; n++; } elseifpoint[block_num+5].num==25 { Change_Blockblock_numblock_num+5; n++; } break; case5: ifpoint[block_num-1].num==25 { Change_Blockblock_numblock_num-1; n++; } elseifpoint[block_num+5].num==25 { Change_Blockblock_numblock_num+5; n++; } break; case21: ifpoint[block_num-5].num==25 { Change_Blockblock_numblock_num-5; n++; } elseifpoint[block_num+1].num==25 { Change_Blockblock_numblock_num+1; n++; } break; case25: ifpoint[block_num-1].num==25 { Change_Blockblock_numblock_num-1; n++; } elseifpoint[block_num-5].num==25 { Change_Blockblock_numblock_num-5; n++; } break; case2: case3: case4: ifpoint[block_num-1].num==25 { Change_Blockblock_numblock_num-1; n++; } elseifpoint[block_num+5].num==25 { Change_Blockblock_numblock_num+5; n++; } elseifpoint[block_num+1].num==25 { Change_Blockblock_numblock_num+1; n++; } break; case6: case11: case16: ifpoint[block_num+5].num==25 { Change_Blockblock_numblock_num+5; n++; } elseifpoint[block_num+1].num==25 { Change_Blockblock_numblock_num+1; n++; } elseifpoint[block_num-5].num==25 { Change_Blockblock_numblock_num-5; n++; } break; case10: case15: case20: ifpoint[block_num-1].num==25 { Change_Blockblock_numblock_num-1; n++; } elseifpoint[block_num+5].num==25 { Change_Blockblock_numblock_num+5; n++; } elseifpoint[block_num-5].num==25 { Change_Blockblock_numblock_num-5; n++; } break; case22: case23: case24: ifpoint[block_num-1].num==25 { Change_Blockblock_numblock_num-1; n++; } elseifpoint[block_num+1].num==25 { Change_Blockblock_numblock_num+1; n++; } elseifpoint[block_num-5].num==25 { Change_Blockblock_numblock_num-5; n++; } break; default: ifpoint[block_num-1].num==25 { Change_Blockblock_numblock_num-1; n++; } elseifpoint[block_num+5].num==25 { Change_Blockblock_numblock_num+5; n++; } elseifpoint[block_num+1].num==25 { Change_Blockblock_numblock_num+1; n++; } elseifpoint[block_num-5].num==25 { Change_Blockblock_numblock_num-5; n++; } } } break; default:; } MyPaint; break; caseWM_CLOSE: ifIDYES==MessageBoxhWnd真的不玩了?提示MB_YESNO { DestroyWindowhWnd; } break; caseWM_DESTROY: intk; fork=0;k7;k++ { DeleteO__ectpict[k]; DeleteO__ectcompare_pict[k]; } DeleteO__ectcompare_pic; DeleteO__ectpic; DeleteO__ectempty; ReleaseDChWndhdc; PostQuitMessage0; break; default: returnDefWindowProchWndmessagewParamlParam; } return0;}voidMyPaint{ SelectO__ectmdcempty; //贴上背景图 BitBlthdc6000487526mdc2000SRCCOPY; SelectO__ectmdccompare_pic; //贴上参照图 BitBlthdc6170450360mdc00SRCCOPY; sprintfstr%dn; //显示__步数 TextOuthdc817433strstrlenstr; if3==line { sprintfstr%dhigh3; //在其位置显示最高记录 TextOuthdc1007433strstrlenstr; ifnew3 //如果要重排 { GetPos; //重排 new3=false; } SelectO__ectmdcpic; forinti=1;i=9;i++ { switchi //按属性贴图 { case1: BitBlthdc00200160mdcpoint[i].xpoint[i].ySRCCOPY; break; case2: BitBlthdc2000200160mdcpoint[i].xpoint[i].ySRCCOPY; break; case3: BitBlthdc4000200160mdcpoint[i].xpoint[i].ySRCCOPY; break; case4: BitBlthdc0160200160mdcpoint[i].xpoint[i].ySRCCOPY; break; case5: BitBlthdc200160200160mdcpoint[i].xpoint[i].ySRCCOPY; break; case6: BitBlthdc400160200160mdcpoint[i].xpoint[i].ySRCCOPY; break; case7: BitBlthdc0320200160mdcpoint[i].xpoint[i].ySRCCOPY; break; case8: BitBlthdc200320200160mdcpoint[i].xpoint[i].ySRCCOPY; break; case9: BitBlthdc400320200160mdcpoint[i].xpoint[i].ySRCCOPY; break; default: MessageBoxNULL贴图序列号错误!NULL; } } forintj=1;j=9;j++ { ifpoint[j].num==9 { SelectO__ectmdcempty; switchj //贴上空白图 { case1: BitBlthdc00200160mdc00SRCCOPY; break; case2: BitBlthdc2000200160mdc00SRCCOPY; break; case3: BitBlthdc4000200160mdc00SRCCOPY; break; case4: BitBlthdc0160200160mdc00SRCCOPY; break; case5: BitBlthdc200160200160mdc00SRCCOPY; break; case6: BitBlthdc400160200160mdc00SRCCOPY; break; case7: BitBlthdc0320200160mdc00SRCCOPY; break; case8: BitBlthdc200320200160mdc00SRCCOPY; break; case9: BitBlthdc400320200160mdc00SRCCOPY; break; default:; } break; } } intfinish=0; forintk=1;k=9;k++ { ifpoint[k].num==k finish++; //做完成判断完成则finish应该为line*line } iffinish==9 //完成则执行 { fin=true; sndPlaySoundSour__\\sound\\FTELEP2电火花.w__SND_ASYNC|SND_FILENAME; MessageBoxNULLFinish!Changeaharderonetryitagain!恭喜^_^NULL; ifnhigh3 //如果出现新记录... { Sleep100; //睡一下让记录来的别太突然~ high3=n; SelectO__ectmdcempty; BitBlthdc100743310030mdc2500SRCCOPY; //贴个背景的绿图要不如n为44记录为100就会出现记录显示为440再刷新下才能看到是44 sprintfstr%dhigh3; //显示新记录! TextOuthdc1007433strstrlenstr; sndPlaySoundSour__\\sound\\new.w__SND_ASYNC|SND_FILENAME; MessageBoxNULLTHENEWRECORD!恭喜^_^NULL; S__e; //保存新记录到文件 } } } elseif4==line { sprintfstr%dhigh4; TextOuthdc1007433strstrlenstr; ifnew4 { GetPos; new4=false; } SelectO__ectmdcpic; forinti=1;i=16;i++ { switchi { case1: BitBlthdc00150120mdcpoint[i].xpoint[i].ySRCCOPY; break; case2: BitBlthdc1500150120mdcpoint[i].xpoint[i].ySRCCOPY; break; case3: BitBlthdc3000150120mdcpoint[i].xpoint[i].ySRCCOPY; break; case4: BitBlthdc4500150120mdcpoint[i].xpoint[i].ySRCCOPY; break; case5: BitBlthdc0120150120mdcpoint[i].xpoint[i].ySRCCOPY; break; case6: BitBlthdc150120150120mdcpoint[i].xpoint[i].ySRCCOPY; break; case7: BitBlthdc300120150120mdcpoint[i].xpoint[i].ySRCCOPY; break; case8: BitBlthdc450120150120mdcpoint[i].xpoint[i].ySRCCOPY; break; case9: BitBlthdc0240150120mdcpoint[i].xpoint[i].ySRCCOPY; break; case10: BitBlthdc150240150120mdcpoint[i].xpoint[i].ySRCCOPY; break; case11: BitBlthdc300240150120mdcpoint[i].xpoint[i].ySRCCOPY; break; case12: BitBlthdc450240150120mdcpoint[i].xpoint[i].ySRCCOPY; break; case13: BitBlthdc0360150120mdcpoint[i].xpoint[i].ySRCCOPY; break; case14: BitBlthdc150360150120mdcpoint[i].xpoint[i].ySRCCOPY; break; case15: BitBlthdc300360150120mdcpoint[i].xpoint[i].ySRCCOPY; break; case16: BitBlthdc450360150120mdcpoint[i].xpoint[i].ySRCCOPY; break; default: MessageBoxNULL贴图序列号错误!NULL; } } forintj=1;j=16;j++ { ifpoint[j].num==16 { SelectO__ectmdcempty; switchj { case1: BitBlthdc00150120mdc00SRCCOPY; break; case2: BitBlthdc1500150120mdc00SRCCOPY; break; case3: BitBlthdc3000150120mdc00SRCCOPY; break; case4: BitBlthdc4500150120mdc00SRCCOPY; break; case5: BitBlthdc0120150120mdc00SRCCOPY; break; case6: BitBlthdc150120150120mdc00SRCCOPY; break; case7: BitBlthdc300120150120mdc00SRCCOPY; break; case8: BitBlthdc450120150120mdc00SRCCOPY; break; case9: BitBlthdc0240150120mdc00SRCCOPY; break; case10: BitBlthdc150240150120mdc00SRCCOPY; break; case11: BitBlthdc300240150120mdc00SRCCOPY; break; case12: BitBlthdc450240150120mdc00SRCCOPY; break; case13: BitBlthdc0360150120mdc00SRCCOPY; break; case14: BitBlthdc150360150120mdc00SRCCOPY; break; case15: BitBlthdc300360150120mdc00SRCCOPY; break; case16: BitBlthdc450360150120mdc00SRCCOPY; break; default:; } break; } } intfinish=0; forintk=1;k=16;k++ { ifpoint[k].num==k finish++; } iffinish==16 { fin=true; sndPlaySoundSour__\\sound\\FTELEP2电火花.w__SND_ASYNC|SND_FILENAME; MessageBoxNULLFinish!Changeaharderonetryitagain!恭喜^_^NULL; ifnhigh4 { Sleep100; high4=n; SelectO__ectmdcempty; BitBlthdc100743310030mdc2500SRCCOPY; sprintfstr%dhigh4; TextOuthdc1007433strstrlenstr; sndPlaySoundSour__\\sound\\new.w__SND_ASYNC|SND_FILENAME; MessageBoxNULLTHENEWRECORD!恭喜^_^NULL; S__e; } } } elseif5==line { sprintfstr%dhigh5; TextOuthdc1007433strstrlenstr; ifnew5 //更新5X5 { GetPos; new5=false; } SelectO__ectmdcpic; forinti=1;i=25;i++ { switchi { case1: BitBlthdc0012096mdcpoint[i].xpoint[i].ySRCCOPY; break; case2: BitBlthdc120012096mdcpoint[i].xpoint[i].ySRCCOPY; break; case3: BitBlthdc240012096mdcpoint[i].xpoint[i].ySRCCOPY; break; case4: BitBlthdc360012096mdcpoint[i].xpoint[i].ySRCCOPY; break; case5: BitBlthdc480012096mdcpoint[i].xpoint[i].ySRCCOPY; break; case6: BitBlthdc09612096mdcpoint[i].xpoint[i].ySRCCOPY; break; case7: BitBlthdc1209612096mdcpoint[i].xpoint[i].ySRCCOPY; break; case8: BitBlthdc2409612096mdcpoint[i].xpoint[i].ySRCCOPY; break; case9: BitBlthdc3609612096mdcpoint[i].xpoint[i].ySRCCOPY; break; case10: BitBlthdc4809612096mdcpoint[i].xpoint[i].ySRCCOPY; break; case11: BitBlthdc019212096mdcpoint[i].xpoint[i].ySRCCOPY; break; case12: BitBlthdc12019212096mdcpoint[i].xpoint[i].ySRCCOPY; break; case13: BitBlthdc24019212096mdcpoint[i].xpoint[i].ySRCCOPY; break; case14: BitBlthdc36019212096mdcpoint[i].xpoint[i].ySRCCOPY; break; case15: BitBlthdc48019212096mdcpoint[i].xpoint[i].ySRCCOPY; break; case16: BitBlthdc028812096mdcpoint[i].xpoint[i].ySRCCOPY; break; case17: BitBlthdc12028812096mdcpoint[i].xpoint[i].ySRCCOPY; break; case18: BitBlthdc24028812096mdcpoint[i].xpoint[i].ySRCCOPY; break; case19: BitBlthdc36028812096mdcpoint[i].xpoint[i].ySRCCOPY; break; case20: BitBlthdc48028812096mdcpoint[i].xpoint[i].ySRCCOPY; break; case21: BitBlthdc038412096mdcpoint[i].xpoint[i].ySRCCOPY; break; case22: BitBlthdc12038412096mdcpoint[i].xpoint[i].ySRCCOPY; break; case23: BitBlthdc24038412096mdcpoint[i].xpoint[i].ySRCCOPY; break; case24: BitBlthdc36038412096mdcpoint[i].xpoint[i].ySRCCOPY; break; case25: BitBlthdc48038412096mdcpoint[i].xpoint[i].ySRCCOPY; break; default: MessageBoxNULL贴图序列号错误!NULL; } } forintj=1;j=25;j++ { ifpoint[j].num==25 { SelectO__ectmdcempty; switchj { case1: BitBlthdc0012096mdc00SRCCOPY; break; case2: BitBlthdc120012096mdc00SRCCOPY; break; case3: BitBlthdc240012096mdc00SRCCOPY; break; case4: BitBlthdc360012096mdc00SRCCOPY; break; case5: BitBlthdc480012096mdc00SRCCOPY; break; case6: BitBlthdc09612096mdc00SRCCOPY; break; case7: BitBlthdc1209612096mdc00SRCCOPY; break; case8: BitBlthdc2409612096mdc00SRCCOPY; break; case9: BitBlthdc3609612096mdc00SRCCOPY; break; case10: BitBlthdc4809612096mdc00SRCCOPY; break; case11: BitBlthdc019212096mdc00SRCCOPY; break; case12: BitBlthdc12019212096mdc00SRCCOPY; break; case13: BitBlthdc24019212096mdc00SRCCOPY; break; case14: BitBlthdc36019212096mdc00SRCCOPY; break; case15: BitBlthdc48019212096mdc00SRCCOPY; break; case16: BitBlthdc028812096mdc00SRCCOPY; break; case17: BitBlthdc12028812096mdc00SRCCOPY; break; case18: BitBlthdc24028812096mdc00SRCCOPY; break; case19: BitBlthdc36028812096mdc00SRCCOPY; break; case20: BitBlthdc48028812096mdc00SRCCOPY; break; case21: BitBlthdc038412096mdc00SRCCOPY; break; case22: BitBlthdc12038412096mdc00SRCCOPY; break; case23: BitBlthdc24038412096mdc00SRCCOPY; break; case24: BitBlthdc36038412096mdc00SRCCOPY; break; case25: BitBlthdc48038412096mdc00SRCCOPY; break; default: ; }break; //遇到成功的就跳出 } } intfinish=0; forintk=1;k=25;k++ { ifpoint[k].num==k finish++; } iffinish==25 { fin=true; sndPlaySoundSour__\\sound\\FTELEP2电火花.w__SND_ASYNC|SND_FILENAME; MessageBoxNULLFinish!Thisisthefinal__p!YouWin!恭喜^_^NULL; ifnhigh5 { Sleep100; high5=n; SelectO__ectmdcempty; BitBlthdc100743310030mdc2500SRCCOPY; sprintfstr%dhigh5; TextOuthdc1007433strstrlenstr; sndPlaySoundSour__\\sound\\new.w__SND_ASYNC|SND_FILENAME; MessageBoxNULLTHENEWRECORD!恭喜^_^NULL; S__e; } } }}voidChange_Blockintblock1intblock2{ inttemp=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;}voidS__e{ FILE*fp; iffp=fopenSour__\\recordwb+==NULL { MessageBoxNULL不能打开record文件可能被删除请在Sour__中重新建立.NULL; return; } iffwritehigh3sizeofhigh31fp!=1 MessageBoxNULL不能写入记录NULL; iffwritehigh4sizeofhigh41fp!=1 MessageBoxNULL不能写入记录NULL; iffwritehigh5sizeofhigh51fp!=1 MessageBoxNULL不能写入记录NULL; fclosefp;}voidGetPos{ intnow_pos; forintj=1;j=25;j++ { point[j].num=j; } inti; switchline { case3: now_pos=9; fori=1;i=9;i++ //对各块从原图中哪个位置读图的坐标进行赋值 { switchpoint[i].num { case1:point[i].x=0; point[i].y=0; break; case2:point[i].x=200; point[i].y=0; break; case3:point[i].x=400; point[i].y=0; break; case4:point[i].x=0; point[i].y=160;break; case5:point[i].x=200; point[i].y=160;break; case6:point[i].x=400; point[i].y=160;break; case7:point[i].x=0; point[i].y=320;break; case8:point[i].x=200; point[i].y=320;break; case9:point[i].x=400; point[i].y=320;break; default:MessageBoxNULL初始化point[i]坐标错误!NULL; } } break; case4: now_pos=16; fori=1;i=16;i++ //对各块从原图中哪个位置读图的坐标进行赋值 { switchpoint[i].num { case1:point[i].x=0; point[i].y=0; break; case2:point[i].x=150; point[i].y=0; break; case3:point[i].x=300; point[i].y=0; break; case4:point[i].x=450; point[i].y=0; break; case5:point[i].x=0; point[i].y=120; break; case6:point[i].x=150; point[i].y=120; break; case7:point[i].x=300; point[i].y=120; break; case8:point[i].x=450; point[i].y=120; break; case9:point[i].x=0; point[i].y=240; break; case10:point[i].x=150;point[i].y=240; break; case11:point[i].x=300;point[i].y=240; break; case12:point[i].x=450;point[i].y=240; break; case13:point[i].x=0; point[i].y=360; break; case14:point[i].x=150;point[i].y=360; break; case15:point[i].x=300;point[i].y=360; break; case16:point[i].x=450;point[i].y=360; break; default:MessageBoxNULL初始化point[i]坐标错误!NULL; } } break; case5: now_pos=25; fori=1;i=25;i++ //对各块从原图中哪个位置读图的坐标进行赋值 { switchpoint[i].num { case1:point[i].x=0; point[i].y=0; break; case2:point[i].x=120; point[i].y=0; break; case3:point[i].x=240; point[i].y=0; break; case4:point[i].x=360; point[i].y=0; break; case5:point[i].x=480; point[i].y=0; break; case6:point[i].x=0; point[i].y=96; break; case7:point[i].x=120; point[i].y=96; break; case8:point[i].x=240; point[i].y=96; break; case9:point[i].x=360; point[i].y=96; break; case10:point[i].x=480;point[i].y=96; break; case11:point[i].x=0; point[i].y=192; break; case12:point[i].x=120;point[i].y=192; break; case13:point[i].x=240;point[i].y=192; break; case14:point[i].x=360;point[i].y=192; break; case15:point[i].x=480;point[i].y=192; break; case16:point[i].x=0; point[i].y=288; break; case17:point[i].x=120;point[i].y=288; break; case18:point[i].x=240;point[i].y=288; break; case19:point[i].x=360;point[i].y=288; break; case20:point[i].x=480;point[i].y=288; break; case21:point[i].x=0; point[i].y=384; break; case22:point[i].x=120;point[i].y=384; break; case23:point[i].x=240;point[i].y=384; break; case24:point[i].x=360;point[i].y=384; break; case25:point[i].x=480;point[i].y=384; break; default:MessageBoxNULL初始化point[i]坐标错误!NULL; } } break; default:; } srandunsignedtimeNULL; forintk=0;k200;k++ { switchrand%4 { case0: ifnow_pos+1%line!=1 { Change_Blocknow_posnow_pos+1; now_pos++; } break; case1: ifnow_pos-1%line!=0 { Change_Blocknow_posnow_pos-1; now_pos--; } break; case2: ifnow_pos+lineline*line { Change_Blocknow_posnow_pos+line; now_pos+=line; } break; case3: ifnow_pos-line0 { Change_Blocknow_posnow_pos-line; now_pos-=line; } break; default:; } }} 。