R
RDN_ResidentS
Народ! Тут такая проблема, тоже связанная с игрой арканоид...
Начинаю писать игру, и появилась одна загвоздка.
Вот текст
Шарик двигается вниз, доходит до RoundBallRect.top == 100 , потом поднимается вверх на один шаг (RoundBallRect.top == 90) и зацикливается переходом вниз-вверх.
Может гдето запорол.. подскажите.
Заранее благодарен.
Начинаю писать игру, и появилась одна загвоздка.
Вот текст
Код:
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;
Может гдето запорол.. подскажите.
Заранее благодарен.