




已阅读5页,还剩32页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
此文档收集于网络,如有侵权,请联系网站删除/编译环境VC+6.0. 程序和资源一共15M./需要的留个EMAIL.能上传到这里供大家下载吗?谁知道告诉我/自制-拼图游戏作者:高坤转载请标明出处谢谢/代码笨拙高手勿笑欢迎批评指正#include #include #include #include #include resource.hHINSTANCE hInst;HBITMAP pic,empty,compare_pic,pict8,compare_pict8,other; /所有图的变量名HDC hdc,mdc; /DC名int mouse_x,mouse_y,n=0,line=3,high3=100,high4=200,high5=300;/鼠标X Y 移动步数 难度 记录char str10= ;/字符串,显示步数和记录时用bool fin=false,new3=true,new4=false,new5=false;/完成 难度三 四 五 的重绘struct Pointint x;int y; int num;point26;/块ATOM MyRegisterClass(HINSTANCE hInstance);BOOL InitInstance(HINSTANCE, int);LRESULT CALLBACKWndProc(HWND, UINT, WPARAM, LPARAM);void MyPaint();/显示void Change_Block(int block1,int block2);/交换两块的属性void Save();/保存记录void GetPos();/为重绘做的随机排列int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)MSG msg;MyRegisterClass(hInstance);if (!InitInstance (hInstance, nCmdShow) /如果实例化失败,退出return FALSE;while (GetMessage(&msg, NULL, 0, 0)/消息循环,一直获取消息,直到消息返回值为假TranslateMessage(&msg);/翻译消息DispatchMessage(&msg);/将消息发到适当的对象上return msg.wParam;ATOM MyRegisterClass(HINSTANCE hInstance) /注册窗口类,通知你要建的窗口是什么样的.可以有多个,用类名来区分WNDCLASSEX wcex;/类名wcex.cbSize = sizeof(WNDCLASSEX);/类的长度 cb.表示存储空间wcex.style= CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS;/窗口风格水平horizontal.垂直vertical.重画redrawwcex.lpfnWndProc= (WNDPROC)WndProc;/指向函数的一个指针 指向WndProc/LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)wcex.cbClsExtra= 0;/类变量占用的存储 (cb表示存储空间的前缀)wcex.cbWndExtra= 0;/实例变量占用的存储wcex.hInstance= hInstance; /定义该类的应用程序实例的句柄wcex.hIcon= LoadIcon(hInstance,MAKEINTRESOURCE(IDI_ICON1);/图标对象的句柄wcex.hCursor= LoadCursor(NULL, IDC_ARROW); /光标图像的句柄wcex.hbrBackground= (HBRUSH)(COLOR_WINDOW+1); /用于擦掉用户区的刷子的句柄wcex.lpszMenuName= (LPCSTR)IDR_MENU1;/标识选单对象的字符串wcex.lpszClassName= CAN;/该类名字的字符串lpsz长指针,以0结束wcex.hIconSm= NULL;/return RegisterClassEx(&wcex);/定义完类的各个对象后注册BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)HWND hWnd;hInst = hInstance;char filename30= ;hWnd = CreateWindow(CAN, 游戏窗口, WS_OVERLAPPEDWINDOW & WS_MAXIMIZEBOX & WS_THICKFRAME,CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);if (!hWnd) /类名,用于标识创建的窗口属于哪个类.return FALSE;MoveWindow(hWnd,80,100,1087,526,true);ShowWindow(hWnd, nCmdShow);UpdateWindow(hWnd);hdc=GetDC(hWnd);mdc=CreateCompatibleDC(hdc);/创建缓存empty=(HBITMAP)LoadImage(hInstance,Sourcepicempty.bmp,IMAGE_BITMAP,687,526,LR_LOADFROMFILE); for(int m=0;m=7;m+)sprintf(filename,Sourcepicpic%d.bmp,m); /读图,没什么好说的pictm = (HBITMAP)LoadImage(hInstance,filename,IMAGE_BITMAP,600,480,LR_LOADFROMFILE);compare_pictm=(HBITMAP)LoadImage(hInstance,filename,IMAGE_BITMAP,450,360,LR_LOADFROMFILE);pic=pict0;compare_pic=compare_pict0;FILE *fp;/读入record文件中的记录if(fp=fopen(Sourcerecord,ab+)=NULL)MessageBox(NULL,不能打开record文件,可能被删除,请在Source中重新建立.,NULL);return false;else fread(&high3,sizeof(high3),1,fp);fread(&high4,sizeof(high4),1,fp);fread(&high5,sizeof(high5),1,fp);fclose(fp); MyPaint(); return TRUE;LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)PAINTSTRUCT ps;int block_num=0;/用于鼠标所指的块的编号,非NUM号 要区分switch (message) case WM_PAINT:/显示hdc = BeginPaint(hWnd, &ps);hdc=GetDC(hWnd);MyPaint();EndPaint(hWnd, &ps);break;case WM_COMMAND:/菜单命令switch(LOWORD(wParam)case ID_NEWGAME:fin=0;n=0;switch(line)case 3: new3=true;break;/读图后要重排图case 4: new4=true;break;case 5: new5=true;break;default:;MyPaint();break;case ID_PIC0:pic=pict0;/读入大图compare_pic=compare_pict0; /读入参照图 fin=0;n=0;switch(line)case 3: new3=true;break;/读图后要重排图case 4: new4=true;break;case 5: new5=true;break;default:;MyPaint();break;case ID_PIC1:pic=pict1;compare_pic=compare_pict1;fin=0;n=0;switch(line)case 3: new3=true;break;case 4: new4=true;break;case 5: new5=true;break;default:;MyPaint();break;case ID_PIC2:pic=pict2;compare_pic=compare_pict2;fin=0;n=0;switch(line)case 3: new3=true;break;case 4: new4=true;break;case 5: new5=true;break;default:;MyPaint();break;case ID_PIC3:pic=pict3;compare_pic=compare_pict3;fin=0;n=0;switch(line)case 3: new3=true;break;case 4: new4=true;break;case 5: new5=true;break;default:;MyPaint();break;case ID_PIC4:pic=pict4;compare_pic=compare_pict4;fin=0;n=0;switch(line)case 3: new3=true;break;case 4: new4=true;break;case 5: new5=true;break;default:;MyPaint();break;case ID_PIC5:pic=pict5;compare_pic=compare_pict5;fin=0;n=0;switch(line)case 3: new3=true;break;case 4: new4=true;break;case 5: new5=true;break;default:;MyPaint();break;case ID_PIC6:pic=pict6;compare_pic=compare_pict6;fin=0;n=0;switch(line)case 3: new3=true;break;case 4: new4=true;break;case 5: new5=true;break;default:;MyPaint();break;case ID_PIC7:pic=pict7;compare_pic=compare_pict7;fin=0;n=0;switch(line)case 3: new3=true;break;case 4: new4=true;break;case 5: new5=true;break;default:;MyPaint();break;case ID_PIC8:if(LoadImage(NULL,Sourcepicother.bmp,IMAGE_BITMAP,600,480,LR_LOADFROMFILE) /成功载入other.bmppic = (HBITMAP)LoadImage(NULL,Sourcepicother.bmp,IMAGE_BITMAP,600,480,LR_LOADFROMFILE); compare_pic=(HBITMAP)LoadImage(NULL,Sourcepicother.bmp,IMAGE_BITMAP,450,360,LR_LOADFROMFILE);fin=0;n=0;switch(line)case 3: new3=true;break;case 4: new4=true;break;case 5: new5=true;break;default:;MyPaint();else MessageBox(hWnd,pic文件夹中无other.bmp文件.,说明,NULL); /未成功载入other.bmpbreak;case ID_THREE:new3=true;new4=false;new5=false;line=3;fin=0;n=0;/如果选难度三,则要重排图,不许四,五重排.难度设为三,标记未完成,n从0记数.MyPaint();break;case ID_FOUR:new3=false;new4=true;new5=false;line=4;fin=0;n=0;MyPaint();break;case ID_FIVE:new3=false;new4=false;new5=true;line=5;fin=0;n=0;MyPaint();break;case ID_INTRODUCE:MessageBox(hWnd,鼠标点击移动,拼完整即胜利!nn如果想自添加图需要用BMP格式,文件名为other.bmp。并放入pic文件夹中.,说明,NULL);break;case ID_ABOUT:MessageBox(hWnd,如发现BUG或有好的建议。请致信EMAIL:29648634。谢谢!nnt Special Thank 老婆-悦 对我的大力支持!nnttttt作者:高坤,说明,NULL);break;case ID_EXIT:DestroyWindow(hWnd);break;default:MessageBox(hWnd,菜单命令错误!,NULL); break;case WM_LBUTTONDOWN: /鼠标左键控制块的移动mouse_x=LOWORD(lParam);/记录鼠标的位置mouse_y=HIWORD(lParam);block_num=0;switch(line)case 3:if(mouse_x600 & mouse_y0)sndPlaySound(Sourcesoundclick.wav,SND_ASYNC | SND_FILENAME);switch(block_num)case 1:if(point2.num=9)/第一块可以与第二块交换Change_Block(1,2);n+;/移动步数加1else if(point4.num=9)/第一块可以与第四块交换Change_Block(1,4);n+;/移动步数加1break;case 2:if(point1.num=9)/第二块可以与第一块交换Change_Block(2,1);n+; /移动步数加1else if(point5.num=9)/第二块可以与第五块交换Change_Block(2,5);n+; /移动步数加1else if(point3.num=9)/第二块可以与第三块交换Change_Block(2,3);n+; /移动步数加1break;case 3:if(point2.num=9)/第三块可以与第二块交换Change_Block(3,2);n+;/移动步数加1else if(point6.num=9)/第三块可以与第六块交换Change_Block(3,6);n+;/移动步数加1break;case 4:if(point1.num=9)/第四块可以与第一块交换Change_Block(4,1);n+; /移动步数加1else if(point5.num=9)/第四块可以与第五块交换Change_Block(4,5);n+; /移动步数加1else if(point7.num=9)/第四块可以与第七块交换Change_Block(4,7);n+; /移动步数加1break;case 5:if(point2.num=9)/第五块可以与第二块交换Change_Block(5,2);n+; /移动步数加1else if(point4.num=9)/第五块可以与第四块交换Change_Block(5,4);n+; /移动步数加1else if(point6.num=9)/第五块可以与第六块交换Change_Block(5,6);n+; /移动步数加1else if(point8.num=9)/第五块可以与第八块交换Change_Block(5,8);n+; /移动步数加1break;case 6:if(point3.num=9)/第六块可以与第三块交换Change_Block(6,3);n+; /移动步数加1else if(point5.num=9)/第六块可以与第五块交换Change_Block(6,5);n+; /移动步数加1else if(point9.num=9)/第六块可以与第九块交换Change_Block(6,9);n+; /移动步数加1 break;case 7:if(point8.num=9)/第七块可以与第八块交换Change_Block(7,8);n+;/移动步数加1else if(point4.num=9)/第七块可以与第四块交换Change_Block(7,4);n+;/移动步数加1break;case 8:if(point7.num=9)/第八块可以与第七块交换Change_Block(8,7);n+; /移动步数加1else if(point5.num=9)/第八块可以与第五块交换Change_Block(8,5);n+; /移动步数加1else if(point9.num=9)/第八块可以与第九块交换Change_Block(8,9);n+; /移动步数加1 break;case 9:if(point8.num=9)/第九块可以与第八块交换Change_Block(9,8);n+;/移动步数加1else if(point6.num=9)/第九块可以与第六块交换Change_Block(9,6);n+;/移动步数加1break;default:;break;case 4:if(mouse_x600 & mouse_y0)/如果block_num没能从鼠标坐标上获取值则说明点的位置不对。sndPlaySound(Sourcesoundclick.wav,SND_ASYNC | SND_FILENAME);switch(block_num)case 1:if(poin
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 矿山废弃物处置相关人员的职业卫生防护措施
- 新闻传播领域政治问题整改措施
- 素食餐厅餐饮商业计划书范文
- 机场跑道现场施工管理措施
- 文化创意试运行规范管理措施
- 道路工程安全和绿色施工保障措施
- 医疗贷款服务合同范文
- 墓碑制作与销售协议
- 地磅采购安装协议
- 人工智能技术咨询服务协议
- 幕墙吊装方案计算书
- 绿豆芽成长记-A4打印版
- 3D打印技术教程
- 食材配送投标方案(技术方案)
- 佩戴腰围护理规范
- 建设工程质量检测人员考试:建设工程质量检测人员真题模拟汇编(共906题)
- 中国地理(第二版)赵济王静爱
- 【课件】等差数列的概念2说课课件-2022-2023学年高二上学期数学人教A版(2019)选择性必修第二册
- 前交叉韧带损伤PPT
- 水利工程建设单位管理工作报告
- 中药柴胡种植技术
评论
0/150
提交评论