#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개 공이 한꺼번에 움직이는 게 아니라 그냥 공 하나가 지랄하듯이 움직이는데 어떻게 고쳐야 할까요
비전공자라 코드가 엉성합니다 도와주십쇼
댓글 0