2D_game_Factory - 8BitsCoding/RobotMentor GitHub Wiki
๊ธฐ์กด์๋ ๋งค๋ฒ ํด๋์ค๋ฅผ ์ถ๊ฐํ ๋๋ง๋ค #include๋ฅผ ํด์ค์ผ ํ๋ค
#include "Triangel.h"
#include "Circle.h"
#include "bluebox.h"
namespace jm
{
class Example : public Game2D
{
public:
Example()
: Game2D()
{}
void update() override
{
Triangel my_tri;
my_tri.draw();
Circle my_cir;
my_cir.draw();
bluebox my_bb;
my_bb.draw();
#include "GeometricObject.h"
namespace jm
{
class Example : public Game2D
{
public:
std::vector<GeometricObject*> my_objs;
Example()
: Game2D()
{
my_objs.push_back(GeometricObject::makeTriangle(Colors::gold, vec2{ -0.5f, 0.2f }, 0.25f));
my_objs.push_back(GeometricObject::makeCircle(Colors::olive, vec2{ 0.1f, 0.1f }, 0.2f));
my_objs.push_back(GeometricObject::makeBox(Colors::blue, vec2{ 0.0f, 0.5f }, 0.15f, 0.25f));
my_objs.push_back(GeometricObject::makeStar(Colors::gold, vec2{ 0.0f, -0.5f }, 0.25f, 0.15f));
/*my_objs.push_back(new Triangle(Colors::gold, vec2{ -0.5f, 0.2f }, 0.25f));
my_objs.push_back(new Circle(Colors::olive, vec2{ 0.1f, 0.1f }, 0.2f));
my_objs.push_back(new Box(Colors::black, vec2{ 0.0f, 0.5f }, 0.15f, 0.25f));*/
}
~Example()
{
for (const auto & obj : my_objs)
delete obj;
}
void update() override
{
for (const auto & obj : my_objs)
obj->draw();
}
};
}
// GeometricObject.h
#pragma once
#include "Game2D.h"
#include <memory>
namespace jm
{
class GeometricObject
{
public:
vec2 pos;
RGB color;
virtual ~GeometricObject()
{}
void init(const RGB & _color, const vec2 & _pos)
{
color = _color;
pos = _pos;
}
virtual void drawGeometry() const = 0;
void draw()
{
beginTransformation();
{
translate(pos);
drawGeometry();
}
endTransformation();
}
static GeometricObject * makeTriangle(const RGB & _color, const vec2 & _pos, const float & _size);
static GeometricObject * makeCircle(const RGB & _color, const vec2 & _pos, const float & _size);
static GeometricObject * makeBox(const RGB & _color, const vec2 & _pos, const float & _width, const float &_height);
static GeometricObject * makeStar(const RGB & _color, const vec2 & _pos, const float & _os, const float & _is);
};
}
// GeometricObject.cpp
#include "GeometricObject.h"
#include "Triangle.h"
#include "Circle.h"
#include "Box.h"
#include "Star.h"
namespace jm
{
GeometricObject * GeometricObject::makeTriangle(const RGB & _color, const vec2 & _pos, const float & _size)
{
return new Triangle(_color, _pos, _size);
}
GeometricObject * GeometricObject::makeCircle(const RGB & _color, const vec2 & _pos, const float & _size)
{
return new Circle(_color, _pos, _size);
}
GeometricObject * GeometricObject::makeBox(const RGB & _color, const vec2 & _pos, const float & _width, const float & _height)
{
return new Box(_color, _pos, _width, _height);
}
GeometricObject * GeometricObject::makeStar(const RGB & _color, const vec2 & _pos, const float & _os, const float & _is)
{
return new Star(_color, _pos, _os, _is);
}
}