C 自制拼图游戏Word文档下载推荐.docx
《C 自制拼图游戏Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C 自制拼图游戏Word文档下载推荐.docx(30页珍藏版)》请在冰豆网上搜索。
intmouse_x,mouse_y,n=0,line=3,high3=100,high4=200,high5=300;
//鼠标XY移动步数难度记录
charstr[10]="
"
;
//字符串,显示步数和记录时用
boolfin=false,new3=true,new4=false,new5=false;
//完成难度三四五的重绘
structPoint
{
intx;
inty;
intnum;
}point[26];
//块
ATOMMyRegisterClass(HINSTANCEhInstance);
BOOLInitInstance(HINSTANCE,int);
LRESULTCALLBACK
WndProc(HWND,UINT,WPARAM,LPARAM);
voidMyPaint();
//显示
voidChange_Block(intblock1,intblock2);
//交换两块的属性
voidSave();
//保存记录
voidGetPos();
//为重绘做的随机排列
intAPIENTRYWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPSTRlpCmdLine,intnCmdShow)
MSGmsg;
MyRegisterClass(hInstance);
if(!
InitInstance(hInstance,nCmdShow))
//如果实例化失败,退出
returnFALSE;
}
while(GetMessage(&
msg,NULL,0,0))
//消息循环,一直获取消息,直到消息返回值为假
TranslateMessage(&
msg);
//翻译消息
DispatchMessage(&
//将消息发到适当的对象上
returnmsg.wParam;
ATOMMyRegisterClass(HINSTANCEhInstance)
//注册窗口类,通知你要建的窗口是什么样的.可以有多个,用类名来区分
WNDCLASSEXwcex;
//类名
wcex.cbSize=sizeof(WNDCLASSEX);
//类的长度
cb...表示存储空间
wcex.style
=CS_HREDRAW|CS_VREDRAW|CS_DBLCLKS;
//窗口风格
水平horizontal.垂直vertical.重画redraw
wcex.lpfnWndProc
=(WNDPROC)WndProc;
//指向函数的一个指针指向WndProc
//LRESULTCALLBACKWndProc(HWNDhWnd,UINTmessage,WPARAMwParam,LPARAMlParam)
wcex.cbClsExtra
=0;
//类变量占用的存储(cb表示存储空间的前缀)
wcex.cbWndExtra
//实例变量占用的存储
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;
//
returnRegisterClassEx(&
wcex);
//定义完类的各个对象后注册
BOOLInitInstance(HINSTANCEhInstance,intnCmdShow)
HWNDhWnd;
hInst=hInstance;
charfilename[30]="
hWnd=CreateWindow("
"
游戏窗口"
WS_OVERLAPPEDWINDOW&
~WS_MAXIMIZEBOX&
~WS_THICKFRAME,CW_USEDEFAULT,0,CW_USEDEFAULT,0,NULL,NULL,hInstance,NULL);
hWnd)
//类名,用于标识创建的窗口属于哪个类.
MoveWindow(hWnd,80,100,1087,526,true);
ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd);
hdc=GetDC(hWnd);
mdc=CreateCompatibleDC(hdc);
//创建缓存
empty=(HBITMAP)LoadImage(hInstance,"
Source\\pic\\empty.bmp"
IMAGE_BITMAP,687,526,LR_LOADFROMFILE);
for(intm=0;
m<
=7;
m++)
sprintf(filename,"
Source\\pic\\pic%d.bmp"
m);
//读图,没什么好说的
pict[m]=(HBITMAP)LoadImage(hInstance,filename,IMAGE_BITMAP,600,480,LR_LOADFROMFILE);
compare_pict[m]=(HBITMAP)LoadImage(hInstance,filename,IMAGE_BITMAP,450,360,LR_LOADFROMFILE);
pic=pict[0];
compare_pic=compare_pict[0];
FILE*fp;
//读入record文件中的记录
if((fp=fopen("
Source\\record"
"
ab+"
))==NULL)
MessageBox(NULL,"
不能打开record文件,可能被删除,请在Source中重新建立."
"
NULL);
returnfalse;
else
fread(&
high3,sizeof(high3),1,fp);
high4,sizeof(high4),1,fp);
high5,sizeof(high5),1,fp);
fclose(fp);
MyPaint();
returnTRUE;
LRESULTCALLBACKWndProc(HWNDhWnd,UINTmessage,WPARAMwParam,LPARAMlParam)
PAINTSTRUCTps;
intblock_num=0;
//用于鼠标所指的块的编号,非NUM号要区分
switch(message)
caseWM_PAINT:
hdc=BeginPaint(hWnd,&
ps);
MyPaint();
EndPaint(hWnd,&
break;
caseWM_COMMAND:
//菜单命令
switch(LOWORD(wParam))
caseID_NEWGAME:
fin=0;
n=0;
switch(line)
case3:
new3=true;
//读图后要重排图
case4:
new4=true;
case5:
new5=true;
default:
caseID_PIC0:
//读入大图
//读入参照图
caseID_PIC1:
pic=pict[1];
compare_pic=compare_pict[1];
caseID_PIC2:
pic=pict[2];
compare_pic=compare_pict[2];
caseID_PIC3:
pic=pict[3];
compare_pic=compare_pict[3];
caseID_PIC4:
pic=pict[4];
compare_pic=compare_pict[4];
caseID_PIC5:
pic=pict[5];
compare_pic=compare_pict[5];
caseID_PIC6:
pic=pict[6];
compare_pic=compare_pict[6];
caseID_PIC7:
pic=pict[7];
compare_pic=compare_pict[7];
caseID_PIC8:
if(LoadImage(NULL,"
Source\\pic\\other.bmp"
IMAGE_BITMAP,600,480,LR_LOADFROMFILE))
//成功载入other.bmp
pic=(HBITMAP)LoadImage(NULL,"
IMAGE_BITMAP,600,480,LR_LOADFROMFILE);
compare_pic=(HBITMAP)LoadImage(NULL,"
IMAGE_BITMAP,450,360,LR_LOADFROMFILE);
elseMessageBox(hWnd,"
pic文件夹中无other.bmp文件."
说明"
//未成功载入other.bmp
caseID_THREE:
new3=true;
new4=false;
new5=false;
line=3;
//如果选难度三,则要重排图,不许四,五重排.难度设为三,标记未完成,n从0记数.
caseID_FOUR:
new3=false;
new4=true;
line=4;
caseID_FIVE:
new5=true;
line=5;
caseID_INTRODUCE:
MessageBox(hWnd,"
鼠标点击移动,拼完整即胜利!
\n\n如果想自添加图需要用BMP格式,文件名为other.bmp。
并放入pic文件夹中."
caseID_ABOUT:
如发现BUG或有好的建议。
请致信EMAIL:
29648634@。
谢谢!
\n\n\t
SpecialThank老婆--悦对我的大力支持!
\n\n\t\t\t\t\t作者:
高坤"
caseID_EXIT:
DestroyWindow(hWnd);