티스토리 뷰
* 인프런에 있는 "홍정모의 게임 만들기 연습 문제 패키지" 강의를 바탕으로 작성된 글입니다.
1. 랜덤넘버를 활용해서 다양한 물체를 그리기
#include "Game2D.h"
#include "RandomNumberGenerator.h"
#include "GeometricObject.h"
#include <vector>
#include <memory>
namespace shyplants
{
class Example : public Game2D
{
public:
RandomNumberGenerator rnd;
RGB random_color;
vec2 random_pos;
float random_size[2];
std::vector<GeometricObject*> my_objs;
Example() : Game2D()
{
for (int i = 0; i < 3; ++i) {
random_color = RGB(rnd.getFloat(0.0f, 1.0f), rnd.getFloat(0.0f, 1.0f), rnd.getFloat(0.0f, 1.0f));
random_pos = vec2{ rnd.getFloat(-1.0f, 1.0f), rnd.getFloat(-1.0f, 1.0f) };
random_size[0] = rnd.getFloat(0.2f, 0.5f);
my_objs.push_back(GeometricObject::makeTriangle(random_color, random_pos, random_size[0]));
random_color = RGB(rnd.getFloat(0.0f, 1.0f), rnd.getFloat(0.0f, 1.0f), rnd.getFloat(0.0f, 1.0f));
random_pos = vec2{ rnd.getFloat(-1.0f, 1.0f), rnd.getFloat(-1.0f, 1.0f) };
random_size[0] = rnd.getFloat(0.05f, 0.3f);
my_objs.push_back(GeometricObject::makeCircle(random_color, random_pos, random_size[0]));
random_color = RGB(rnd.getFloat(0.0f, 1.0f), rnd.getFloat(0.0f, 1.0f), rnd.getFloat(0.0f, 1.0f));
random_pos = vec2{ rnd.getFloat(-1.0f, 1.0f), rnd.getFloat(-1.0f, 1.0f) };
random_size[0] = rnd.getFloat(0.2f, 0.5f);
random_size[1] = rnd.getFloat(0.2f, 0.5f);
my_objs.push_back(GeometricObject::makeBox(random_color, random_pos, random_size[0], random_size[1]));
random_color = RGB(rnd.getFloat(0.0f, 1.0f), rnd.getFloat(0.0f, 1.0f), rnd.getFloat(0.0f, 1.0f));
random_pos = vec2{ rnd.getFloat(-1.0f, 1.0f), rnd.getFloat(-1.0f, 1.0f) };
random_size[0] = rnd.getFloat(0.2f, 0.4f);
random_size[1] = rnd.getFloat(0.1f, 0.3f);
if (random_size[0] < random_size[1]) {
float temp = random_size[0];
random_size[0] = random_size[1];
random_size[1] = temp;
}
my_objs.push_back(GeometricObject::makeStar(random_color, random_pos, random_size[0], random_size[1]));
random_color = RGB(rnd.getFloat(0.0f, 1.0f), rnd.getFloat(0.0f, 1.0f), rnd.getFloat(0.0f, 1.0f));
random_pos = vec2{ rnd.getFloat(-1.0f, 1.0f), rnd.getFloat(-1.0f, 1.0f) };
random_size[0] = rnd.getFloat(0.05f, 0.2f);
my_objs.push_back(GeometricObject::makePentagon(random_color, random_pos, random_size[0]));
}
}
~Example()
{
for (const auto& obj : my_objs) {
delete obj;
}
}
void update() override
{
for(const auto& obj : my_objs) {
obj->draw();
}
}
};
}
2. 모든 물체들이 회전하게 만들어보기(부모 클래스 활용)
#include "Game2D.h"
#include "RandomNumberGenerator.h"
#include "GeometricObject.h"
#include <vector>
#include <memory>
namespace shyplants
{
class Example : public Game2D
{
public:
RandomNumberGenerator rnd;
RGB random_color;
vec2 random_pos;
float random_size[2];
std::vector<GeometricObject*> my_objs;
Example() : Game2D()
{
for (int i = 0; i < 3; ++i) {
random_color = RGB(rnd.getFloat(0.0f, 1.0f), rnd.getFloat(0.0f, 1.0f), rnd.getFloat(0.0f, 1.0f));
random_pos = vec2{ rnd.getFloat(-1.0f, 1.0f), rnd.getFloat(-1.0f, 1.0f) };
random_size[0] = rnd.getFloat(0.2f, 0.5f);
my_objs.push_back(GeometricObject::makeTriangle(random_color, random_pos, random_size[0]));
random_color = RGB(rnd.getFloat(0.0f, 1.0f), rnd.getFloat(0.0f, 1.0f), rnd.getFloat(0.0f, 1.0f));
random_pos = vec2{ rnd.getFloat(-1.0f, 1.0f), rnd.getFloat(-1.0f, 1.0f) };
random_size[0] = rnd.getFloat(0.05f, 0.3f);
my_objs.push_back(GeometricObject::makeCircle(random_color, random_pos, random_size[0]));
random_color = RGB(rnd.getFloat(0.0f, 1.0f), rnd.getFloat(0.0f, 1.0f), rnd.getFloat(0.0f, 1.0f));
random_pos = vec2{ rnd.getFloat(-1.0f, 1.0f), rnd.getFloat(-1.0f, 1.0f) };
random_size[0] = rnd.getFloat(0.2f, 0.5f);
random_size[1] = rnd.getFloat(0.2f, 0.5f);
my_objs.push_back(GeometricObject::makeBox(random_color, random_pos, random_size[0], random_size[1]));
random_color = RGB(rnd.getFloat(0.0f, 1.0f), rnd.getFloat(0.0f, 1.0f), rnd.getFloat(0.0f, 1.0f));
random_pos = vec2{ rnd.getFloat(-1.0f, 1.0f), rnd.getFloat(-1.0f, 1.0f) };
random_size[0] = rnd.getFloat(0.2f, 0.4f);
random_size[1] = rnd.getFloat(0.1f, 0.3f);
if (random_size[0] < random_size[1]) {
float temp = random_size[0];
random_size[0] = random_size[1];
random_size[1] = temp;
}
my_objs.push_back(GeometricObject::makeStar(random_color, random_pos, random_size[0], random_size[1]));
random_color = RGB(rnd.getFloat(0.0f, 1.0f), rnd.getFloat(0.0f, 1.0f), rnd.getFloat(0.0f, 1.0f));
random_pos = vec2{ rnd.getFloat(-1.0f, 1.0f), rnd.getFloat(-1.0f, 1.0f) };
random_size[0] = rnd.getFloat(0.05f, 0.2f);
my_objs.push_back(GeometricObject::makePentagon(random_color, random_pos, random_size[0]));
}
}
~Example()
{
for (const auto& obj : my_objs) {
delete obj;
}
}
void update() override
{
for(const auto& obj : my_objs) {
obj->draw();
}
for (const auto& obj : my_objs) {
obj->update(this->getTimeStep());
}
}
};
}
'개발 > 게임개발' 카테고리의 다른 글
c++ 게임만들기 연습문제 2.4 (0) | 2023.03.01 |
---|---|
c++ 게임만들기 연습문제 2.3 (0) | 2023.02.28 |
c++ 게임만들기 연습문제 2.1 (0) | 2023.02.27 |
c++ 게임만들기 연습문제 1.5 (1) | 2023.02.01 |
c++ 게임만들기 연습문제 1.4 (0) | 2023.01.31 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 언리얼 프로젝트 재생성
- 언리얼 자동화
- tetris
- 백준
- DP
- 정보올림피아드
- 백준 27469
- Unreal Engine
- C++게임
- pygame
- 언리얼 프로젝트 재생성 자동화
- Python
- C++게임개발
- 퀸 움직이기
- BOJ 27469
- 백준 2365
- unreal enigne
- 초등부
- BOJ 2365
- ndisplay
- 코드포스
- ICPC 후기
- UE5.3
- Codeforces
- 테트리스
- opengl
- 홍정모의 게임 만들기 연습 문제 패키지
- 숫자판 만들기
- 브레젠험 알고리즘
- OpenVDB
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
글 보관함