( ** 인프런에서 들은 강의 '홍정모의 게임 만들기 연습 문제 패키지'를 통해서 공부한 내용과 연습 문제 풀이입니다. **)
namespace jm
{
class House
{
private:
RGB roof_color;
RGB wall_color;
RGB window_color;
vec2 pos;
float angle = 0.0f;
public:
House()
: roof_color(Colors::red), wall_color(Colors::yellow), window_color(Colors::skyblue), pos(0.0f,0.0f), angle(0.0f)
{ }
void setPos(const vec2& _pos)
{
pos = _pos;
}
void setAngle(const float& _angle)
{
angle = _angle;
}
void setRoof_C(const RGB& _roof_color)
{
roof_color = _roof_color;
}
void setWall_C(const RGB& _wall_color)
{
wall_color = _wall_color;
}
void setWindow_C(const RGB& _window_color)
{
window_color = _window_color;
}
void draw()
{
// draw a house
beginTransformation();
{
translate(pos);
rotate(angle);
// wall
drawFilledBox(wall_color, 0.2f, 0.2f);
// roof
drawFilledTriangle(roof_color, { -0.13f, 0.1f }, { 0.13f, 0.1f }, { 0.0f, 0.2f });
drawWiredTriangle(Colors::red, { -0.13f, 0.1f }, { 0.13f, 0.1f }, { 0.0f, 0.2f });
// window
drawFilledBox(window_color, 0.1f, 0.1f);
drawWiredBox(Colors::gray, 0.1f, 0.1f);
drawLine(Colors::gray, { 0.0f, -0.05f }, Colors::gray, { 0.0f, 0.05f });
drawLine(Colors::gray, { -0.05f, 0.0f }, Colors::gray, { 0.05f, 0.0f });
}
endTransformation();
}
};
class MyExample5 : public Game2D
{
public:
House houses[100];
MyExample5()
: Game2D()
{
RandomNumberGenerator rnd;
for (int i = 0; i < 100; ++i)
{
// set pos & angle
houses[i].setPos(vec2{ rnd.getFloat(-1.0f,1.0f) , rnd.getFloat(-1.0f,1.0f) });
houses[i].setAngle(rnd.getFloat(-10.0f, 10.0f));
// set colors
houses[i].setRoof_C({ rnd.getInt(0, 255.0), rnd.getInt(0, 255.0), rnd.getInt(0, 255.0) });
houses[i].setWall_C({ rnd.getInt(0, 255.0), rnd.getInt(0, 255.0), rnd.getInt(0, 255.0) });
houses[i].setWindow_C({ rnd.getInt(0, 255.0), rnd.getInt(0, 255.0), rnd.getInt(0, 255.0) });
}
}
void update() override
{
for (int i = 0; i < 100; ++i)
{
houses[i].draw();
}
//House left_house, center_house, right_house;
//left_house.setPos(vec2(-0.5f, 0.0f));
//center_house.setPos(vec2(0.0f, 0.0f));
//center_house.setAngle(10.0f);
//right_house.setPos(vec2(10.5f, 0.0f));
//
//left_house.draw();
//center_house.draw();
//right_house.draw();
//drawHouse(Colors::red, { -0.5f, 0.0f }); // left House
//drawHouse(Colors::blue, { 0.0f, 0.0f }, 10.0f); // center House
//drawHouse(Colors::olive, { 0.5f, 0.0f }); // right House
}
};
}
**** 키워드 : 랜덤 함수 응용 ****
'스터디 > OpenGL' 카테고리의 다른 글
[ OpenGL ] 공 두개를 충돌시켜보자 (0) | 2019.10.31 |
---|---|
[ OpenGL ] 공 튀기기 시뮬레이션 (0) | 2019.10.31 |
[ OpenGL ] 사람 클래스 구현 ( 이동과 점프 애니메이션 ) (0) | 2019.10.31 |
[ OpenGL ] 탱크 이동 및 발포 구현 ( 메모리 누수 관리와 총알 중첩 생성 ) (0) | 2019.10.31 |
[ OpenGL ] 도형 익히기 (0) | 2019.10.31 |