#include

#include


#define BALL_SIZE 30     // 볼의 크기 상수를 정의

#define MOVE_STEP 5      // 볼의 이동 간격 상수를 정의

#define SIZE 50


int main(void)

{

    int i;

    int x[SIZE];

    int y[SIZE];


    for (i = 0; i

        x[i] = 100 + rand() @0;

        y[i] = 100 + rand() 00;

    }

          

    int dx = +5;    // 시작시 x좌표의 이동 값

    int dy = +5;    // 시작시 y좌표의 이동 값


    HWND    hwnd = GetForegroundWindow(); // 현재 윈도우의  핸들을 구한다. 

    HDC hdc = GetWindowDC(hwnd);          // 윈도우의 디바이스 컨테스트(Device context)의 핸들을 구하여 윈도우에 접근한다. 


     // 배경을 흰색으로 설정

    SelectObject(hdc, CreatePen(PS_SOLID, 1, RGB(255, 255, 255)));

    SelectObject(hdc, CreateSolidBrush(RGB(255, 255, 255)));

    Rectangle(hdc, 0, 0, GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN));


    // 그리는 펜의 테두리 색은 파란색, 채우는 색은 흰색으로 설정

    SelectObject(hdc, CreatePen(PS_SOLID, 3, RGB(0, 0, 255)));

    SelectObject(hdc, CreateSolidBrush(RGB(255, 255, 255)));


    // 파란색 테두리를 갖는 사각형을 그린다. 바탕색은 흰색

    Rectangle(hdc, 30, 40, 500 + BALL_SIZE + MOVE_STEP, 400 + BALL_SIZE + MOVE_STEP);


    TextOut(hdc, 220, 450, L"Ball Simulation", 15); // 화면 아래에 문자열 출력


    while (1)

    {


        for (i = 0; i


            // 그리는 펜의 테두리 색은 파란색, 채우는 색은 빨강색으로 설정

            SelectObject(hdc, CreatePen(PS_SOLID, 3, RGB(0, 0, 255)));

            SelectObject(hdc, CreateSolidBrush(RGB(255, 0, 0)));


            // 원을 그린다. 

            Ellipse(hdc, x[i], y[i], x[i] + BALL_SIZE, y[i] + BALL_SIZE);



            Sleep(40); // 시간 지연

            

            // 그리는 펜의 색은 흰색, 채우는 색은 흰색

            SelectObject(hdc, CreatePen(PS_SOLID, 3, RGB(255, 255, 255)));

            SelectObject(hdc, CreateSolidBrush(RGB(255, 255, 255)));

            // 바탕색(흰색)으로 원을 그려서 원을 지운다. 

            Ellipse(hdc, x[i], y[i], x[i] + BALL_SIZE, y[i] + BALL_SIZE);

        

        

            // 이동하는 위치의 x,y 좌표 값으로 변경하기 위해 좌표 값을 dx,dy만큼 이동

            x[i] += dx;

            y[i] += dy;


            if (x[i] >= 500) dx = -MOVE_STEP;              // x 좌표 값의 우측 경계를 만난 경우 dx는 감소하는 방향으로

            if (x[i] <= 30 + MOVE_STEP) dx = +MOVE_STEP;    // x 좌표 값의 좌측 경계를 만난 경우 dx는 증가하는 방향으로


            if (y[i] >= 400) dy = -MOVE_STEP;              // y 좌표 값이 아래 경계를 만난 경우 dy는 감소하는 방향으로

            if (y[i] <= (40 + MOVE_STEP)) dy = +MOVE_STEP;  // y 좌표 값이 위측 경계를 만난 경우 dy는 증가하는 방향으로

        }


        

        

    } //while


    return 0;

}


공 50개가 정해진 테두리 안에서 움직이는 코드를 짜야하고

테두리에 도달하면 튕겨지듯이 되돌가야합니다

그래서 제가 생각했던게 50개의 공의 좌표를 난수로 생성해서 배열에 집어넣고(배열을 사용하는게 조건)

dx, dy 씩 이동시키고 테두리에 닿으면 좌표가 감소하도록 짠 건데요

이러니까 50개 공이 한꺼번에 움직이는 게 아니라 그냥 공 하나가 지랄하듯이 움직이는데 어떻게 고쳐야 할까요

비전공자라 코드가 엉성합니다 도와주십쇼