Collage is a little game that let users to rearrange pictures according to the given order. The main logic is as follows:
void canvasFrame::OnLButtonDown(UINT nFlags, CPoint point) { CClientDC dc(this); xx = yy = -1; //判断鼠标点击的位置 if(point.x > 0 && point.x < 100) { if(point.y > 0 && point.y < 100) { xx = 0; yy = 0; } if(point.y > 100 && point.y < 200) { xx = 1; yy = 0; } if(point.y > 200 && point.y < 300) { xx = 2; yy = 0; } } if(point.x > 100 && point.x < 200) { if(point.y > 0 && point.y < 100) { xx = 0; yy = 1; } if(point.y > 100 && point.y < 200) { xx = 1; yy = 1; } if(point.y > 200 && point.y < 300) { xx = 2; yy = 1; } } if(point.x > 200 && point.x < 300) { if(point.y > 0 && point.y < 100) { xx = 0; yy = 2; } if(point.y > 100 && point.y < 200) { xx = 1; yy = 2; } if(point.y > 200 && point.y < 300) { xx = 2; yy = 2; } } int xxx, yyy; if(xx != -1 && yy != -1) { for(int i = 0; i < 3; ++i) { for(int j = 0; j < 3; ++j) { if(cur[i][j] == 9) { xxx = i; yyy = j; } } } } if(abs(xxx - xx) + abs(yyy - yy) == 1) { //dc.TextOut(400, 400 ,"hello!"); //int t = cur[xxx][yyy]; cur[xxx][yyy] = cur[xx][yy]; cur[xx][yy] = 9; //交换图片位置 mdc->SelectObject(b); dc.BitBlt(a[xx * 3 + yy].x, a[xx * 3 + yy].y, 100, 100, mdc, 0, 0, SRCCOPY); switch(cur[xxx][yyy]) { case 1: mdc->SelectObject(p1);break; case 2: mdc->SelectObject(p2);break; case 3: mdc->SelectObject(p3);break; case 4: mdc->SelectObject(p4);break; case 5: mdc->SelectObject(p5);break; case 6: mdc->SelectObject(p6);break; case 7: mdc->SelectObject(p7);break; case 8: mdc->SelectObject(p8);break; } dc.BitBlt(a[xxx * 3 + yyy].x, a[xxx * 3 + yyy].y, 100, 100, mdc, 0, 0, SRCCOPY); int f = 0; for(int i = 0; i < 3; ++i) { int flag = 0; for(int j = 0; j < 3; ++j) { if(cur[i][j] != 3 * i + j + 1) { flag = 1; break; } } if(flag == 1) { f = 1; break; } } if(f == 0) { strcpy(result,"恭喜你,你赢了!"); dc.TextOut(100 , 350 ,result); } } CFrameWnd::OnLButtonDown(nFlags, point); }
Comments