Народ! Тут такая проблема, тоже связанная с игрой арканоид... Начинаю писать игру, и появилась одна загвоздка. Вот текст
| Код | LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { int wmId, wmEvent; PAINTSTRUCT ps; HDC hdc;
HBRUSH hBrush, hOldBrush; HRGN RoundBall; BOOL Down = false; BOOL Up = false;
POINT point[2] = {{20, 20},{60, 60}}; RECT RoundBallRect = {point[0].x, point[0].y, point[1].x, point[1].y}; RECT RectangleField = {20, 20, 350, 450};
switch (message) { case WM_COMMAND: wmId = LOWORD(wParam); wmEvent = HIWORD(wParam); // Parse the menu selections: switch (wmId) { case IDM_ABOUT: DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About); break; case IDM_EXIT: DestroyWindow(hWnd); break; case IDC_BUTTON1: SetTimer(hWnd, 1, 250, NULL); break; case IDC_BUTTON2: KillTimer(hWnd, 1); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } break; case WM_PAINT: hdc = BeginPaint(hWnd, &ps); hBrush = CreateSolidBrush(RGB(255, 200, 255)); hOldBrush = (HBRUSH)SelectObject(hdc, hBrush);
Rectangle(hdc, 20, 20, 350, 450); SelectObject(hdc,hOldBrush); DeleteObject(hBrush);
hBrush = CreateHatchBrush(HS_DIAGCROSS,RGB(0, 255, 128)); hOldBrush = (HBRUSH)SelectObject(hdc, hBrush);
RoundBall = CreateEllipticRgnIndirect(&RoundBallRect); FillRgn(hdc, RoundBall, hBrush); SelectObject(hdc,hOldBrush); DeleteObject(hBrush); EndPaint(hWnd, &ps); break; case WM_TIMER: if (Down) { Down = true; }
else { while (Down); { if (RoundBallRect.top == 100) { Down = true; Up = false; }
else { RoundBallRect.top+=10; RoundBallRect.bottom+=10; Up = true; } } } if (Up) { Up = true; }
else { while (Up); { if (RoundBallRect.bottom == 20) { Up = true; Down = false; } else { RoundBallRect.top-=10; RoundBallRect.bottom-=10; Down = true; //Up = false; } } } InvalidateRect(hWnd, &RoundBallRect, TRUE); InvalidateRect(hWnd, &RectangleField, TRUE); break;
|
Шарик двигается вниз, доходит до RoundBallRect.top == 100 , потом поднимается вверх на один шаг (RoundBallRect.top == 90) и зацикливается переходом вниз-вверх. Может гдето запорол.. подскажите.
Заранее благодарен. |