Как вывести символы попиксельно в ряд?
Изучаю кресты и хочу написать программу, которая черпает откуда-то строку и выводил её в консоль, но уже большими символами, состоящих из других
Я попробовал создать двумерный массив, состоящий из пяти строк(в моём случае размер символа по игрику) и восьми столбцов, в каждой по одному символу. Код:
#include <iostream>
#include <string>
#define ll long long
using namespace std;
string GetInfoFromBD() {//Черпает информацию
string str = "abcdefgh";
//cin >> str;
return str;
}
int StringSize(const string str) {//Я сделал эту функцию, потому что sizeof() как-то некоректно работает со стрингом и всегда возвращает 28
int size = 0;
while (str[size] != '\0') {
size++;
}
return size;
}
void ShowInfo(string(*foo)()) {
string text = foo();
const int SIZE = StringSize(text);
string symbols[5][8] = {" @@ ","@@@ "," @@@","@@@ ","@@@@","@@@@"," @@@","@ @",
"@ @","@ @","@ ","@ @","@ ","@ ","@ ","@ @",
"@@@@","@@@@","@ ","@ @","@@@@","@@@@","@ @@","@@@@",
"@ @","@ @","@ ","@ @","@ ","@ ","@ @","@ @",
"@ @","@@@ "," @@@","@@@ ","@@@@","@ "," @@ ","@ @"};
for (int i = 0; i < 5; i++) {
for (int j = 0; j < SIZE; j++) {
if (text[j] > 90) {
text[j] = text[j] - 32;//если символ нижнего регистра, то делаю его верхним
}
cout << symbols[i][text[j]-65] <<" ";
}
cout << endl;
}
}
int main() {
ShowInfo(GetInfoFromBD);
return 0;
}
Собственно всё работает. Остаётся только дописать "словарь" символов. Хотел бы узнать где найти уже готовые символы, состоящие из других символов(все ровно на размер), почему присвоение константе SIZE значение sizeof(text) выдаёт хрень и как бы можно было оптимизировать мою программу? Может я делаю что-то не так и мой способ не самый лучший? Уже видел, что кто-то предлагал наделать пнг-эшик, которая каждая означала бы один символ, но тогда каждый символ будет иметь одинаковый размер, либо нужно было бы создать массив размеров каждого символа, поэтому этот способ(по моему) не на много лучше моего.
Так вот. Имеет ли мой способ право на жизнь? Заранее спасибо за ответ