九宫格拼图游戏的总结

回调函数:
WM_CREATE:
CreateGame(hwnd)
载入位图
BeginGame(hwnd, lParam, wParam)
获取位图宽、高->
获取每个小块的宽、高->setwindow(hwnd):设置窗口大小和位置(获取程序窗口大小->获取客户区大小->获取非客户区的宽和高->图片显示位置->MoveWindow改变指定窗口的位置和大小)->
InitGame():初始化游戏(数组赋值,进度条的计算,打乱拼图)->
计数器的设置
WM_COMMAND:
WMCommand(hwnd, lParam, wParam):选择图片和难度,再次调用BeginGame,InvalidateRect(该函数向指定的窗体更新区域添加一个矩形,然后窗口客户区域的这一部分将被重新绘制,所以每次选择后图片都会覆盖在上面)
WM_LBUTTONDOWN:
WMLbuttonDown(hwnd, lParam, wParam):玩家已经获胜,则不响应消息->获取鼠标点击的块的行、列->获取鼠标点中块的序号->按条件移动(交换)->用InvalidateRect重绘->时间、剩余次数控制->检查是否获胜
WM_KEYDOWN:
WMKeyDown(hwnd, lParam, wParam):接受键盘消息,其余同上
WM_TIMER:
OnTimer(hwnd):处理剩余时间,重绘时间进度条
WM_PAINT:画图
GamePaint(hwnd)
(用bitblt)
第一部分:绘制左边的图片,一块一块循环绘制
第二部分:绘制右边的参考图片
第三部分:绘制分割的直线(movetoex和lineto)
第四部分:绘制剩余时间和剩余移动数目进度条(fillrect)
第五部分:绘制字体
最后删除dc
WM_DESTROY:结束时间和消息循环

猜你喜欢

转载自blog.csdn.net/sinat_42424364/article/details/82853559