개발/게임개발
c++ 게임만들기 연습문제 2.4
소심야채
2023. 3. 1. 17:10
* 인프런에 있는 "홍정모의 게임 만들기 연습 문제 패키지" 강의를 바탕으로 작성된 글입니다.
1. 콘솔창으로부터 입력을 받아서 화면에 물체를 생성해보기.
더보기
// script.txt
3
Circle 0.1 0.2 0.1
Box 0.3 -0.1 0.1 0.15
Triangle -0.3 0.2 0.2
#include "Game2D.h"
#include "RandomNumberGenerator.h"
#include "GeometricObject.h"
#include <vector>
#include <memory>
#include <fstream>
#include <string>
#include <map>
namespace shyplants
{
class Example : public Game2D
{
public:
RandomNumberGenerator rnd;
RGB random_color;
vec2 pos;
float size[2];
std::vector<GeometricObject*> my_objs;
Example() : Game2D()
{
FILE *script_file = nullptr;
script_file = fopen("script.txt", "r");
int num_bindings = 0;
fscanf(script_file, "%d", &num_bindings);
char object_buffer[255];
for (int i = 0; i < num_bindings; ++i) {
fscanf(script_file, "%s", object_buffer);
random_color = RGB(rnd.getFloat(0.0f, 1.0f), rnd.getFloat(0.0f, 1.0f), rnd.getFloat(0.0f, 1.0f));
if (!strcmp(object_buffer, "Circle")) {
fscanf(script_file, "%f %f %f", &pos.x, &pos.y, &size[0]);
my_objs.push_back(GeometricObject::makeCircle(random_color, pos, size[0]));
}
else if (!strcmp(object_buffer, "Triangle")) {
fscanf(script_file, "%f %f %f", &pos.x, &pos.y, &size[0]);
my_objs.push_back(GeometricObject::makeTriangle(random_color, pos, size[0]));
}
else if (!strcmp(object_buffer, "Box")) {
fscanf(script_file, "%f %f %f %f", &pos.x, &pos.y, &size[0], &size[1]);
my_objs.push_back(GeometricObject::makeBox(random_color, pos, size[0], size[1]));
}
}
}
~Example()
{
for (const auto& obj : my_objs) {
delete obj;
}
}
void update() override
{
for(const auto& obj : my_objs) {
obj->draw();
}
}
};
}