C/C++

Создание класса точка в С++

Как можно создать класс точка имеющая поля координаты и цвет. А затем создать массив из 100 таких точек? Если с координатами понятно, то как задать цвет точки, а затем этим цветом вывести его на экран, а так же вопрос как создать массив классов
#include <iostream>
#include <random>
#include <vector>
#include <Windows.h>
using namespace std;
class Random {
public:
Random() {
random_device device;
random_generator.seed(device());
}
int next(int first, int last) {
uniform_int_distribution<int> range(first, last);
return range(random_generator);
}
private:
mt19937 random_generator;
};
struct Pixel {
int x;
int y;
COLORREF color;
Pixel() : x(0), y(0), color(RGB(255, 255, 255)) {}
};
class Box {
public:
Box() : size_(0) {}
Box(size_t size) : size_(size) {}
void generate(int lx, int rx, int ly, int ry) {
Random rand;
for (auto i = 0U; i < size_; ++i) {
Pixel px;
px.x = rand.next(lx, rx);
px.y = rand.next(ly, ry);
auto red = rand.next(127, 255);
auto green = rand.next(127, 255);
auto blue = rand.next(127, 255);
px.color = RGB(red, green, blue);
box_.push_back(px);
}
}
void draw()const {
auto console = GetConsoleWindow();
auto draw = GetDC(console);
for (const auto& px : box_) {
SetPixel(draw, px.x, px.y, px.color);
}
cin.ignore();
}
private:
size_t size_;
vector<Pixel> box_;
};
int main() {
Box box(100000);
box.generate(20, 1000, 20, 500);
box.draw();
system("pause > nul");
}
Andrei Papev4Ak
Andrei Papev4Ak
55 663
Лучший ответ
>то как задать цвет точки, а затем этим цветом вывести его на экран
Это сильно зависит от того, какую систему графики ты там используешь. Если в ней есть какой-то специальный тип для цвета, используй его, если нет - используй целое число.

>а так же вопрос как создать массив классов
Так же, как и любой другой, никакой разницы.
Цвет обычно кодируется как три числа - RGB https://ru.wikipedia.org/wiki/RGB
> Как вывести на экран
Есть много вариантов. Зависит от используемой графической библиотеки. В стандартной библиотеке C++ нет поддержки графики. Возможно, в данной задаче надо выводить точку в текстовом виде.
Массив как массив. Такой же как любой другой.