Last active
June 25, 2017 22:37
-
-
Save Alynva/aaddbe2e0f345cfbe7f8abf4b9ee77fc to your computer and use it in GitHub Desktop.
Um programa louco feito em alguma madrugada qualquer
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream> | |
#include <map> | |
#include <windows.h> | |
#include <vector> | |
#include <string> | |
#include <sstream> | |
using namespace std; | |
// Move o ponteiro de escrita | |
bool go(COORD pos) { | |
return pos.X >= 0 && pos.Y >= 0 ? SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos) : false; | |
} | |
// Obtém a posição do ponteiro de escrita | |
COORD get(bool resp = true) { | |
POINT mousePos; | |
GetCursorPos(&mousePos); | |
return {(short int) mousePos.x, (short int) mousePos.y}; | |
} | |
// Verifica se determinada região do console "existe" | |
int windowCols() { | |
CONSOLE_SCREEN_BUFFER_INFO csbi; | |
GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &csbi); | |
return csbi.srWindow.Right - csbi.srWindow.Left + 1; | |
} | |
bool visible(int col, int size) { | |
if(col + size < 0) return false; | |
return col + size < windowCols(); | |
} | |
// Imprime um "pixel" (módulo) do tipo: /\\\ | |
// \/// | |
bool out(COORD pos) { | |
bool mostra_algo = false; | |
if (visible(pos.X, 4)) { | |
if (go(pos)) | |
cout << "/\\\\\\"; | |
mostra_algo = true; | |
if (go({pos.X, pos.Y+1})) { | |
cout << "\\///"; | |
mostra_algo = true; | |
} | |
} | |
return mostra_algo; | |
} | |
typedef bool (*pfunc)(int*); | |
// Mapa das funções | |
map<char, pfunc> charMap; | |
// Constantes apenas para simplificar o fato de cada "pÃxel" ser de 3 caracteres de largura (utilize sua habilidade para visualizar o pÃxel em 3D) | |
const int b1 = 3; | |
const int b2 = b1 * 2; | |
const int b3 = b1 * 3; | |
const int b4 = b1 * 4; | |
const int b5 = b1 * 5; | |
const int b6 = b1 * 6; | |
const int b7 = b1 * 7; | |
const int b8 = b1 * 8; | |
const int b9 = b1 * 9; | |
// Constante para espaço | |
const int w1 = b4; | |
// Variável que guarda em qual posição a próxima letra deverá ser impressa | |
COORD pos_atual = {0, 3}; | |
// Imprime um pixel | |
bool pix(int n, int b) { | |
return out({n+pos_atual.X+b, pos_atual.Y+n}); | |
} | |
// Pixels de cada letra... TODO: fazer um map de array bidimencional para guardar as posições dos pixels | |
bool A(int* s = nullptr) { | |
int size = b5; | |
if (s != nullptr) { | |
*s = size; | |
return false; | |
} | |
bool mostra_algo = false; | |
mostra_algo = pix(0, b2) || mostra_algo; | |
mostra_algo = pix(0, b1) || mostra_algo; | |
mostra_algo = pix(1, b3) || mostra_algo; | |
mostra_algo = pix(1, 0) || mostra_algo; | |
mostra_algo = pix(2, b3) || mostra_algo; | |
mostra_algo = pix(2, 0) || mostra_algo; | |
mostra_algo = pix(3, b3) || mostra_algo; | |
mostra_algo = pix(3, b2) || mostra_algo; | |
mostra_algo = pix(3, b1) || mostra_algo; | |
mostra_algo = pix(3, 0) || mostra_algo; | |
mostra_algo = pix(4, b3) || mostra_algo; | |
mostra_algo = pix(4, 0) || mostra_algo; | |
mostra_algo = pix(5, b3) || mostra_algo; | |
mostra_algo = pix(5, 0) || mostra_algo; | |
pos_atual.X += size; | |
return mostra_algo; | |
} | |
bool B(int* s = nullptr) { | |
int size = b5; | |
if (s != nullptr) { | |
*s = size; | |
return false; | |
} | |
bool mostra_algo = false; | |
mostra_algo = pix(0, b2) || mostra_algo; | |
mostra_algo = pix(0, b1) || mostra_algo; | |
mostra_algo = pix(0, 0) || mostra_algo; | |
mostra_algo = pix(1, b3) || mostra_algo; | |
mostra_algo = pix(1, 0) || mostra_algo; | |
mostra_algo = pix(2, b2) || mostra_algo; | |
mostra_algo = pix(2, b1) || mostra_algo; | |
mostra_algo = pix(2, 0) || mostra_algo; | |
mostra_algo = pix(3, b3) || mostra_algo; | |
mostra_algo = pix(3, 0) || mostra_algo; | |
mostra_algo = pix(4, b3) || mostra_algo; | |
mostra_algo = pix(4, 0) || mostra_algo; | |
mostra_algo = pix(5, b2) || mostra_algo; | |
mostra_algo = pix(5, b1) || mostra_algo; | |
mostra_algo = pix(5, 0) || mostra_algo; | |
pos_atual.X += size; | |
return mostra_algo; | |
} | |
bool C(int* s = nullptr) { | |
int size = b5; | |
if (s != nullptr) { | |
*s = size; | |
return false; | |
} | |
bool mostra_algo = false; | |
mostra_algo = pix(0, b2) || mostra_algo; | |
mostra_algo = pix(0, b1) || mostra_algo; | |
mostra_algo = pix(1, b3) || mostra_algo; | |
mostra_algo = pix(1, 0) || mostra_algo; | |
mostra_algo = pix(2, 0) || mostra_algo; | |
mostra_algo = pix(3, 0) || mostra_algo; | |
mostra_algo = pix(4, b3) || mostra_algo; | |
mostra_algo = pix(4, 0) || mostra_algo; | |
mostra_algo = pix(5, b2) || mostra_algo; | |
mostra_algo = pix(5, b1) || mostra_algo; | |
pos_atual.X += size; | |
return mostra_algo; | |
} | |
bool D(int* s = nullptr) { | |
int size = b5; | |
if (s != nullptr) { | |
*s = size; | |
return false; | |
} | |
bool mostra_algo = false; | |
mostra_algo = pix(0, b2) || mostra_algo; | |
mostra_algo = pix(0, b1) || mostra_algo; | |
mostra_algo = pix(0, 0) || mostra_algo; | |
mostra_algo = pix(1, b3) || mostra_algo; | |
mostra_algo = pix(1, 0) || mostra_algo; | |
mostra_algo = pix(2, b3) || mostra_algo; | |
mostra_algo = pix(2, 0) || mostra_algo; | |
mostra_algo = pix(3, b3) || mostra_algo; | |
mostra_algo = pix(3, 0) || mostra_algo; | |
mostra_algo = pix(4, b3) || mostra_algo; | |
mostra_algo = pix(4, 0) || mostra_algo; | |
mostra_algo = pix(5, b2) || mostra_algo; | |
mostra_algo = pix(5, b1) || mostra_algo; | |
mostra_algo = pix(5, 0) || mostra_algo; | |
pos_atual.X += size; | |
return mostra_algo; | |
} | |
bool E(int* s = nullptr) { | |
int size = b5; | |
if (s != nullptr) { | |
*s = size; | |
return false; | |
} | |
bool mostra_algo = false; | |
mostra_algo = pix(0, b3) || mostra_algo; | |
mostra_algo = pix(0, b2) || mostra_algo; | |
mostra_algo = pix(0, b1) || mostra_algo; | |
mostra_algo = pix(0, 0) || mostra_algo; | |
mostra_algo = pix(1, 0) || mostra_algo; | |
mostra_algo = pix(2, b3) || mostra_algo; | |
mostra_algo = pix(2, b2) || mostra_algo; | |
mostra_algo = pix(2, b1) || mostra_algo; | |
mostra_algo = pix(2, 0) || mostra_algo; | |
mostra_algo = pix(3, 0) || mostra_algo; | |
mostra_algo = pix(4, 0) || mostra_algo; | |
mostra_algo = pix(5, b3) || mostra_algo; | |
mostra_algo = pix(5, b2) || mostra_algo; | |
mostra_algo = pix(5, b1) || mostra_algo; | |
mostra_algo = pix(5, 0) || mostra_algo; | |
pos_atual.X += size; | |
return mostra_algo; | |
} | |
bool F(int* s = nullptr) { | |
int size = b5; | |
if (s != nullptr) { | |
*s = size; | |
return false; | |
} | |
bool mostra_algo = false; | |
mostra_algo = pix(0, b3) || mostra_algo; | |
mostra_algo = pix(0, b2) || mostra_algo; | |
mostra_algo = pix(0, b1) || mostra_algo; | |
mostra_algo = pix(0, 0) || mostra_algo; | |
mostra_algo = pix(1, 0) || mostra_algo; | |
mostra_algo = pix(2, b3) || mostra_algo; | |
mostra_algo = pix(2, b2) || mostra_algo; | |
mostra_algo = pix(2, b1) || mostra_algo; | |
mostra_algo = pix(2, 0) || mostra_algo; | |
mostra_algo = pix(3, 0) || mostra_algo; | |
mostra_algo = pix(4, 0) || mostra_algo; | |
mostra_algo = pix(5, 0) || mostra_algo; | |
pos_atual.X += size; | |
return mostra_algo; | |
} | |
bool G(int* s = nullptr) { | |
int size = b5; | |
if (s != nullptr) { | |
*s = size; | |
return false; | |
} | |
bool mostra_algo = false; | |
mostra_algo = pix(0, b3) || mostra_algo; | |
mostra_algo = pix(0, b2) || mostra_algo; | |
mostra_algo = pix(0, b1) || mostra_algo; | |
mostra_algo = pix(1, 0) || mostra_algo; | |
mostra_algo = pix(2, b3) || mostra_algo; | |
mostra_algo = pix(2, b2) || mostra_algo; | |
mostra_algo = pix(2, 0) || mostra_algo; | |
mostra_algo = pix(3, b3) || mostra_algo; | |
mostra_algo = pix(3, 0) || mostra_algo; | |
mostra_algo = pix(4, b3) || mostra_algo; | |
mostra_algo = pix(4, 0) || mostra_algo; | |
mostra_algo = pix(5, b2) || mostra_algo; | |
mostra_algo = pix(5, b1) || mostra_algo; | |
pos_atual.X += size; | |
return mostra_algo; | |
} | |
bool H(int* s = nullptr) { | |
int size = b5; | |
if (s != nullptr) { | |
*s = size; | |
return false; | |
} | |
bool mostra_algo = false; | |
mostra_algo = pix(0, b3) || mostra_algo; | |
mostra_algo = pix(0, 0) || mostra_algo; | |
mostra_algo = pix(1, b3) || mostra_algo; | |
mostra_algo = pix(1, 0) || mostra_algo; | |
mostra_algo = pix(2, b3) || mostra_algo; | |
mostra_algo = pix(2, b2) || mostra_algo; | |
mostra_algo = pix(2, b1) || mostra_algo; | |
mostra_algo = pix(2, 0) || mostra_algo; | |
mostra_algo = pix(3, b3) || mostra_algo; | |
mostra_algo = pix(3, 0) || mostra_algo; | |
mostra_algo = pix(4, b3) || mostra_algo; | |
mostra_algo = pix(4, 0) || mostra_algo; | |
mostra_algo = pix(5, b3) || mostra_algo; | |
mostra_algo = pix(5, 0) || mostra_algo; | |
pos_atual.X += size; | |
return mostra_algo; | |
} | |
bool I(int* s = nullptr) { | |
int size = b2; | |
if (s != nullptr) { | |
*s = size; | |
return false; | |
} | |
bool mostra_algo = false; | |
mostra_algo = pix(0, 0) || mostra_algo; | |
mostra_algo = pix(1, 0) || mostra_algo; | |
mostra_algo = pix(2, 0) || mostra_algo; | |
mostra_algo = pix(3, 0) || mostra_algo; | |
mostra_algo = pix(4, 0) || mostra_algo; | |
mostra_algo = pix(5, 0) || mostra_algo; | |
pos_atual.X += size; | |
return mostra_algo; | |
} | |
bool J(int* s = nullptr) { | |
int size = b5; | |
if (s != nullptr) { | |
*s = size; | |
return false; | |
} | |
bool mostra_algo = false; | |
mostra_algo = pix(0, b3) || mostra_algo; | |
mostra_algo = pix(0, b2) || mostra_algo; | |
mostra_algo = pix(0, b1) || mostra_algo; | |
mostra_algo = pix(0, 0) || mostra_algo; | |
mostra_algo = pix(1, b3) || mostra_algo; | |
mostra_algo = pix(2, b3) || mostra_algo; | |
mostra_algo = pix(3, b3) || mostra_algo; | |
mostra_algo = pix(4, b3) || mostra_algo; | |
mostra_algo = pix(4, 0) || mostra_algo; | |
mostra_algo = pix(5, b2) || mostra_algo; | |
mostra_algo = pix(5, b1) || mostra_algo; | |
pos_atual.X += size; | |
return mostra_algo; | |
} | |
bool K(int* s = nullptr) { | |
int size = b5; | |
if (s != nullptr) { | |
*s = size; | |
return false; | |
} | |
bool mostra_algo = false; | |
mostra_algo = pix(0, b3) || mostra_algo; | |
mostra_algo = pix(0, 0) || mostra_algo; | |
mostra_algo = pix(1, b2) || mostra_algo; | |
mostra_algo = pix(1, 0) || mostra_algo; | |
mostra_algo = pix(2, b1) || mostra_algo; | |
mostra_algo = pix(2, 0) || mostra_algo; | |
mostra_algo = pix(3, b2) || mostra_algo; | |
mostra_algo = pix(3, 0) || mostra_algo; | |
mostra_algo = pix(4, b3) || mostra_algo; | |
mostra_algo = pix(4, 0) || mostra_algo; | |
mostra_algo = pix(5, b3) || mostra_algo; | |
mostra_algo = pix(5, 0) || mostra_algo; | |
pos_atual.X += size; | |
return mostra_algo; | |
} | |
bool L(int* s = nullptr) { | |
int size = b5; | |
if (s != nullptr) { | |
*s = size; | |
return false; | |
} | |
bool mostra_algo = false; | |
mostra_algo = pix(0, 0) || mostra_algo; | |
mostra_algo = pix(1, 0) || mostra_algo; | |
mostra_algo = pix(2, 0) || mostra_algo; | |
mostra_algo = pix(3, 0) || mostra_algo; | |
mostra_algo = pix(4, 0) || mostra_algo; | |
mostra_algo = pix(5, b3) || mostra_algo; | |
mostra_algo = pix(5, b2) || mostra_algo; | |
mostra_algo = pix(5, b1) || mostra_algo; | |
mostra_algo = pix(5, 0) || mostra_algo; | |
pos_atual.X += size; | |
return mostra_algo; | |
} | |
bool M(int* s = nullptr) { | |
int size = b6; | |
if (s != nullptr) { | |
*s = size; | |
return false; | |
} | |
bool mostra_algo = false; | |
mostra_algo = pix(0, b4) || mostra_algo; | |
mostra_algo = pix(0, 0) || mostra_algo; | |
mostra_algo = pix(1, b4) || mostra_algo; | |
mostra_algo = pix(1, b3) || mostra_algo; | |
mostra_algo = pix(1, b1) || mostra_algo; | |
mostra_algo = pix(1, 0) || mostra_algo; | |
mostra_algo = pix(2, b4) || mostra_algo; | |
mostra_algo = pix(2, b2) || mostra_algo; | |
mostra_algo = pix(2, 0) || mostra_algo; | |
mostra_algo = pix(3, b4) || mostra_algo; | |
mostra_algo = pix(3, 0) || mostra_algo; | |
mostra_algo = pix(4, b4) || mostra_algo; | |
mostra_algo = pix(4, 0) || mostra_algo; | |
mostra_algo = pix(5, b4) || mostra_algo; | |
mostra_algo = pix(5, 0) || mostra_algo; | |
pos_atual.X += size; | |
return mostra_algo; | |
} | |
bool N(int* s = nullptr) { | |
int size = b5; | |
if (s != nullptr) { | |
*s = size; | |
return false; | |
} | |
bool mostra_algo = false; | |
mostra_algo = pix(0, b3) || mostra_algo; | |
mostra_algo = pix(0, 0) || mostra_algo; | |
mostra_algo = pix(1, b3) || mostra_algo; | |
mostra_algo = pix(1, b1) || mostra_algo; | |
mostra_algo = pix(1, 0) || mostra_algo; | |
mostra_algo = pix(2, b3) || mostra_algo; | |
mostra_algo = pix(2, b2) || mostra_algo; | |
mostra_algo = pix(2, 0) || mostra_algo; | |
mostra_algo = pix(3, b3) || mostra_algo; | |
mostra_algo = pix(3, 0) || mostra_algo; | |
mostra_algo = pix(4, b3) || mostra_algo; | |
mostra_algo = pix(4, 0) || mostra_algo; | |
mostra_algo = pix(5, b3) || mostra_algo; | |
mostra_algo = pix(5, 0) || mostra_algo; | |
pos_atual.X += size; | |
return mostra_algo; | |
} | |
bool O(int* s = nullptr) { | |
int size = b5; | |
if (s != nullptr) { | |
*s = size; | |
return false; | |
} | |
bool mostra_algo = false; | |
mostra_algo = pix(0, b2) || mostra_algo; | |
mostra_algo = pix(0, b1) || mostra_algo; | |
mostra_algo = pix(1, b3) || mostra_algo; | |
mostra_algo = pix(1, 0) || mostra_algo; | |
mostra_algo = pix(2, b3) || mostra_algo; | |
mostra_algo = pix(2, 0) || mostra_algo; | |
mostra_algo = pix(3, b3) || mostra_algo; | |
mostra_algo = pix(3, 0) || mostra_algo; | |
mostra_algo = pix(4, b3) || mostra_algo; | |
mostra_algo = pix(4, 0) || mostra_algo; | |
mostra_algo = pix(5, b2) || mostra_algo; | |
mostra_algo = pix(5, b1) || mostra_algo; | |
pos_atual.X += size; | |
return mostra_algo; | |
} | |
bool P(int* s = nullptr) { | |
int size = b5; | |
if (s != nullptr) { | |
*s = size; | |
return false; | |
} | |
bool mostra_algo = false; | |
mostra_algo = pix(0, b3) || mostra_algo; | |
mostra_algo = pix(0, b2) || mostra_algo; | |
mostra_algo = pix(0, b1) || mostra_algo; | |
mostra_algo = pix(0, 0) || mostra_algo; | |
mostra_algo = pix(1, b3) || mostra_algo; | |
mostra_algo = pix(1, 0) || mostra_algo; | |
mostra_algo = pix(2, b3) || mostra_algo; | |
mostra_algo = pix(2, b2) || mostra_algo; | |
mostra_algo = pix(2, b1) || mostra_algo; | |
mostra_algo = pix(2, 0) || mostra_algo; | |
mostra_algo = pix(3, 0) || mostra_algo; | |
mostra_algo = pix(4, 0) || mostra_algo; | |
mostra_algo = pix(5, 0) || mostra_algo; | |
pos_atual.X += size; | |
return mostra_algo; | |
} | |
bool Q(int* s = nullptr) { | |
int size = b6; | |
if (s != nullptr) { | |
*s = size; | |
return false; | |
} | |
bool mostra_algo = false; | |
mostra_algo = pix(0, b3) || mostra_algo; | |
mostra_algo = pix(0, b2) || mostra_algo; | |
mostra_algo = pix(0, b1) || mostra_algo; | |
mostra_algo = pix(1, b4) || mostra_algo; | |
mostra_algo = pix(1, 0) || mostra_algo; | |
mostra_algo = pix(2, b4) || mostra_algo; | |
mostra_algo = pix(2, 0) || mostra_algo; | |
mostra_algo = pix(3, b4) || mostra_algo; | |
mostra_algo = pix(3, b2) || mostra_algo; | |
mostra_algo = pix(3, 0) || mostra_algo; | |
mostra_algo = pix(4, b3) || mostra_algo; | |
mostra_algo = pix(4, 0) || mostra_algo; | |
mostra_algo = pix(5, b4) || mostra_algo; | |
mostra_algo = pix(5, b2) || mostra_algo; | |
mostra_algo = pix(5, b1) || mostra_algo; | |
pos_atual.X += size; | |
return mostra_algo; | |
} | |
bool R(int* s = nullptr) { | |
int size = b5; | |
if (s != nullptr) { | |
*s = size; | |
return false; | |
} | |
bool mostra_algo = false; | |
mostra_algo = pix(0, b2) || mostra_algo; | |
mostra_algo = pix(0, b1) || mostra_algo; | |
mostra_algo = pix(0, 0) || mostra_algo; | |
mostra_algo = pix(1, b3) || mostra_algo; | |
mostra_algo = pix(1, 0) || mostra_algo; | |
mostra_algo = pix(2, b2) || mostra_algo; | |
mostra_algo = pix(2, b1) || mostra_algo; | |
mostra_algo = pix(2, 0) || mostra_algo; | |
mostra_algo = pix(3, b3) || mostra_algo; | |
mostra_algo = pix(3, 0) || mostra_algo; | |
mostra_algo = pix(4, b3) || mostra_algo; | |
mostra_algo = pix(4, 0) || mostra_algo; | |
mostra_algo = pix(5, b3) || mostra_algo; | |
mostra_algo = pix(5, 0) || mostra_algo; | |
pos_atual.X += size; | |
return mostra_algo; | |
} | |
bool S(int* s = nullptr) { | |
int size = b5; | |
if (s != nullptr) { | |
*s = size; | |
return false; | |
} | |
bool mostra_algo = false; | |
mostra_algo = pix(0, b3) || mostra_algo; | |
mostra_algo = pix(0, b2) || mostra_algo; | |
mostra_algo = pix(0, b1) || mostra_algo; | |
mostra_algo = pix(0, 0) || mostra_algo; | |
mostra_algo = pix(1, 0) || mostra_algo; | |
mostra_algo = pix(2, b3) || mostra_algo; | |
mostra_algo = pix(2, b2) || mostra_algo; | |
mostra_algo = pix(2, b1) || mostra_algo; | |
mostra_algo = pix(2, 0) || mostra_algo; | |
mostra_algo = pix(3, b3) || mostra_algo; | |
mostra_algo = pix(4, b3) || mostra_algo; | |
mostra_algo = pix(5, b3) || mostra_algo; | |
mostra_algo = pix(5, b2) || mostra_algo; | |
mostra_algo = pix(5, b1) || mostra_algo; | |
mostra_algo = pix(5, 0) || mostra_algo; | |
pos_atual.X += size; | |
return mostra_algo; | |
} | |
bool T(int* s = nullptr) { | |
int size = b6; | |
if (s != nullptr) { | |
*s = size; | |
return false; | |
} | |
bool mostra_algo = false; | |
mostra_algo = pix(0, b4) || mostra_algo; | |
mostra_algo = pix(0, b3) || mostra_algo; | |
mostra_algo = pix(0, b2) || mostra_algo; | |
mostra_algo = pix(0, b1) || mostra_algo; | |
mostra_algo = pix(0, 0) || mostra_algo; | |
mostra_algo = pix(1, b2) || mostra_algo; | |
mostra_algo = pix(2, b2) || mostra_algo; | |
mostra_algo = pix(3, b2) || mostra_algo; | |
mostra_algo = pix(4, b2) || mostra_algo; | |
mostra_algo = pix(5, b2) || mostra_algo; | |
pos_atual.X += size; | |
return mostra_algo; | |
} | |
bool U(int* s = nullptr) { | |
int size = b5; | |
if (s != nullptr) { | |
*s = size; | |
return false; | |
} | |
bool mostra_algo = false; | |
mostra_algo = pix(0, b3) || mostra_algo; | |
mostra_algo = pix(0, 0) || mostra_algo; | |
mostra_algo = pix(1, b3) || mostra_algo; | |
mostra_algo = pix(1, 0) || mostra_algo; | |
mostra_algo = pix(2, b3) || mostra_algo; | |
mostra_algo = pix(2, 0) || mostra_algo; | |
mostra_algo = pix(3, b3) || mostra_algo; | |
mostra_algo = pix(3, 0) || mostra_algo; | |
mostra_algo = pix(4, b3) || mostra_algo; | |
mostra_algo = pix(4, 0) || mostra_algo; | |
mostra_algo = pix(5, b2) || mostra_algo; | |
mostra_algo = pix(5, b1) || mostra_algo; | |
pos_atual.X += size; | |
return mostra_algo; | |
} | |
bool V(int* s = nullptr) { | |
int size = b6; | |
if (s != nullptr) { | |
*s = size; | |
return false; | |
} | |
bool mostra_algo = false; | |
mostra_algo = pix(0, b4) || mostra_algo; | |
mostra_algo = pix(0, 0) || mostra_algo; | |
mostra_algo = pix(1, b4) || mostra_algo; | |
mostra_algo = pix(1, 0) || mostra_algo; | |
mostra_algo = pix(2, b4) || mostra_algo; | |
mostra_algo = pix(2, 0) || mostra_algo; | |
mostra_algo = pix(3, b4) || mostra_algo; | |
mostra_algo = pix(3, 0) || mostra_algo; | |
mostra_algo = pix(4, b3) || mostra_algo; | |
mostra_algo = pix(4, b1) || mostra_algo; | |
mostra_algo = pix(5, b2) || mostra_algo; | |
pos_atual.X += size; | |
return mostra_algo; | |
} | |
bool W(int* s = nullptr) { | |
int size = b6; | |
if (s != nullptr) { | |
*s = size; | |
return false; | |
} | |
bool mostra_algo = false; | |
mostra_algo = pix(0, b4) || mostra_algo; | |
mostra_algo = pix(0, 0) || mostra_algo; | |
mostra_algo = pix(1, b4) || mostra_algo; | |
mostra_algo = pix(1, 0) || mostra_algo; | |
mostra_algo = pix(2, b4) || mostra_algo; | |
mostra_algo = pix(2, 0) || mostra_algo; | |
mostra_algo = pix(3, b4) || mostra_algo; | |
mostra_algo = pix(3, b2) || mostra_algo; | |
mostra_algo = pix(3, 0) || mostra_algo; | |
mostra_algo = pix(4, b4) || mostra_algo; | |
mostra_algo = pix(4, b2) || mostra_algo; | |
mostra_algo = pix(4, 0) || mostra_algo; | |
mostra_algo = pix(5, b3) || mostra_algo; | |
mostra_algo = pix(5, b1) || mostra_algo; | |
pos_atual.X += size; | |
return mostra_algo; | |
} | |
bool X(int* s = nullptr) { | |
int size = b6; | |
if (s != nullptr) { | |
*s = size; | |
return false; | |
} | |
bool mostra_algo = false; | |
mostra_algo = pix(0, b4) || mostra_algo; | |
mostra_algo = pix(0, 0) || mostra_algo; | |
mostra_algo = pix(1, b4) || mostra_algo; | |
mostra_algo = pix(1, 0) || mostra_algo; | |
mostra_algo = pix(2, b3) || mostra_algo; | |
mostra_algo = pix(2, b1) || mostra_algo; | |
mostra_algo = pix(3, b2) || mostra_algo; | |
mostra_algo = pix(4, b3) || mostra_algo; | |
mostra_algo = pix(4, b1) || mostra_algo; | |
mostra_algo = pix(5, b4) || mostra_algo; | |
mostra_algo = pix(5, 0) || mostra_algo; | |
pos_atual.X += size; | |
return mostra_algo; | |
} | |
bool Y(int* s = nullptr) { | |
int size = b6; | |
if (s != nullptr) { | |
*s = size; | |
return false; | |
} | |
bool mostra_algo = false; | |
mostra_algo = pix(0, b4) || mostra_algo; | |
mostra_algo = pix(0, 0) || mostra_algo; | |
mostra_algo = pix(1, b4) || mostra_algo; | |
mostra_algo = pix(1, 0) || mostra_algo; | |
mostra_algo = pix(2, b3) || mostra_algo; | |
mostra_algo = pix(2, b1) || mostra_algo; | |
mostra_algo = pix(3, b2) || mostra_algo; | |
mostra_algo = pix(4, b2) || mostra_algo; | |
mostra_algo = pix(5, b2) || mostra_algo; | |
pos_atual.X += size; | |
return mostra_algo; | |
} | |
bool Z(int* s = nullptr) { | |
int size = b5; | |
if (s != nullptr) { | |
*s = size; | |
return false; | |
} | |
bool mostra_algo = false; | |
mostra_algo = pix(0, b3) || mostra_algo; | |
mostra_algo = pix(0, b2) || mostra_algo; | |
mostra_algo = pix(0, b1) || mostra_algo; | |
mostra_algo = pix(0, 0) || mostra_algo; | |
mostra_algo = pix(1, b3) || mostra_algo; | |
mostra_algo = pix(2, b2) || mostra_algo; | |
mostra_algo = pix(3, b1) || mostra_algo; | |
mostra_algo = pix(4, 0) || mostra_algo; | |
mostra_algo = pix(5, b3) || mostra_algo; | |
mostra_algo = pix(5, b2) || mostra_algo; | |
mostra_algo = pix(5, b1) || mostra_algo; | |
mostra_algo = pix(5, 0) || mostra_algo; | |
pos_atual.X += size; | |
return mostra_algo; | |
} | |
bool a(int* s = nullptr) { | |
int size = b5; | |
if (s != nullptr) { | |
*s = size; | |
return false; | |
} | |
bool mostra_algo = false; | |
mostra_algo = pix(1, b2) || mostra_algo; | |
mostra_algo = pix(1, b1) || mostra_algo; | |
mostra_algo = pix(1, 0) || mostra_algo; | |
mostra_algo = pix(2, b3) || mostra_algo; | |
mostra_algo = pix(3, b3) || mostra_algo; | |
mostra_algo = pix(3, b2) || mostra_algo; | |
mostra_algo = pix(3, b1) || mostra_algo; | |
mostra_algo = pix(3, 0) || mostra_algo; | |
mostra_algo = pix(4, b3) || mostra_algo; | |
mostra_algo = pix(4, 0) || mostra_algo; | |
mostra_algo = pix(5, b3) || mostra_algo; | |
mostra_algo = pix(5, b2) || mostra_algo; | |
mostra_algo = pix(5, b1) || mostra_algo; | |
mostra_algo = pix(5, 0) || mostra_algo; | |
pos_atual.X += size; | |
return mostra_algo; | |
} | |
bool l(int* s = nullptr) { | |
int size = b2; | |
if (s != nullptr) { | |
*s = size; | |
return false; | |
} | |
bool mostra_algo = false; | |
mostra_algo = pix(1, 0) || mostra_algo; | |
mostra_algo = pix(2, 0) || mostra_algo; | |
mostra_algo = pix(3, 0) || mostra_algo; | |
mostra_algo = pix(4, 0) || mostra_algo; | |
mostra_algo = pix(5, 0) || mostra_algo; | |
pos_atual.X += size; | |
return mostra_algo; | |
} | |
bool n(int* s = nullptr) { | |
int size = b5; | |
if (s != nullptr) { | |
*s = size; | |
return false; | |
} | |
bool mostra_algo = false; | |
mostra_algo = pix(1, b3) || mostra_algo; | |
mostra_algo = pix(1, 0) || mostra_algo; | |
mostra_algo = pix(2, b3) || mostra_algo; | |
mostra_algo = pix(2, b1) || mostra_algo; | |
mostra_algo = pix(2, 0) || mostra_algo; | |
mostra_algo = pix(3, b3) || mostra_algo; | |
mostra_algo = pix(3, b2) || mostra_algo; | |
mostra_algo = pix(3, 0) || mostra_algo; | |
mostra_algo = pix(4, b3) || mostra_algo; | |
mostra_algo = pix(4, 0) || mostra_algo; | |
mostra_algo = pix(5, b3) || mostra_algo; | |
mostra_algo = pix(5, 0) || mostra_algo; | |
pos_atual.X += size; | |
return mostra_algo; | |
} | |
bool v(int* s = nullptr) { | |
int size = b6; | |
if (s != nullptr) { | |
*s = size; | |
return false; | |
} | |
bool mostra_algo = false; | |
mostra_algo = pix(1, b4) || mostra_algo; | |
mostra_algo = pix(1, 0) || mostra_algo; | |
mostra_algo = pix(2, b4) || mostra_algo; | |
mostra_algo = pix(2, 0) || mostra_algo; | |
mostra_algo = pix(3, b4) || mostra_algo; | |
mostra_algo = pix(3, 0) || mostra_algo; | |
mostra_algo = pix(4, b3) || mostra_algo; | |
mostra_algo = pix(4, b1) || mostra_algo; | |
mostra_algo = pix(5, b2) || mostra_algo; | |
pos_atual.X += size; | |
return mostra_algo; | |
} | |
bool y(int* s = nullptr) { | |
int size = b5; | |
if (s != nullptr) { | |
*s = size; | |
return false; | |
} | |
bool mostra_algo = false; | |
mostra_algo = pix(1, b3) || mostra_algo; | |
mostra_algo = pix(1, 0) || mostra_algo; | |
mostra_algo = pix(2, b3) || mostra_algo; | |
mostra_algo = pix(2, 0) || mostra_algo; | |
mostra_algo = pix(3, b3) || mostra_algo; | |
mostra_algo = pix(3, b2) || mostra_algo; | |
mostra_algo = pix(3, b1) || mostra_algo; | |
mostra_algo = pix(3, 0) || mostra_algo; | |
mostra_algo = pix(4, b3) || mostra_algo; | |
mostra_algo = pix(5, b3) || mostra_algo; | |
mostra_algo = pix(5, b2) || mostra_algo; | |
mostra_algo = pix(5, b1) || mostra_algo; | |
mostra_algo = pix(5, 0) || mostra_algo; | |
pos_atual.X += size; | |
return mostra_algo; | |
} | |
int sizeWord(string w) { | |
int size_total = 0, size_atual = 0; | |
for (int i = 0; i < w.length(); i++) | |
if (charMap.count(w[i])) { | |
charMap[w[i]](&size_atual); | |
size_total += size_atual; | |
} | |
return size_total; | |
} | |
int sizeWords(int argc, char** argv) { | |
int size_total = 0; | |
for (int i = 1; i < argc; i++) { | |
size_total += sizeWord(argv[i]); | |
if (i < argc - 1) | |
size_total += w1; | |
} | |
return size_total; | |
} | |
// Exibe as letras com base em uma palavra (uma palavra por linha) | |
bool outWord(string w) { | |
bool mostra_algo = false; | |
for (int i = 0; i < w.length(); i++) | |
if (charMap.count(w[i])) | |
mostra_algo = (charMap[w[i]](nullptr)) || mostra_algo; | |
go(pos_atual); | |
return mostra_algo; | |
} | |
bool outWords(int argc, char** argv) { | |
bool mostra_algo = false; | |
for(int i = 1; i < argc; i++) { | |
mostra_algo = (outWord(argv[i])) || mostra_algo; | |
if (i < argc - 1) | |
pos_atual.X += w1; | |
} | |
return mostra_algo; | |
} | |
int main(int argc, char** argv) { | |
// Inicializa o map | |
charMap['A'] = A; charMap['B'] = B; charMap['C'] = C; charMap['D'] = D; charMap['E'] = E; charMap['F'] = F; charMap['G'] = G; charMap['H'] = H; charMap['I'] = I; charMap['J'] = J; charMap['K'] = K; charMap['L'] = L; charMap['M'] = M; charMap['N'] = N; charMap['O'] = O; charMap['P'] = P; charMap['Q'] = Q; charMap['R'] = R; charMap['S'] = S; charMap['T'] = T; charMap['U'] = U; charMap['V'] = V; charMap['W'] = W; charMap['X'] = X; charMap['Y'] = Y; charMap['Z'] = Z; | |
charMap['a'] = a; | |
charMap['l'] = l; | |
charMap['n'] = n; | |
charMap['v'] = v; | |
charMap['y'] = y; | |
string str; | |
// Para executar através de argumentos do programa | |
if (argc > 1) { | |
int fora = 0; | |
int direcao = -1; | |
pos_atual.X = (direcao == 1 ? sizeWords(argc, argv) : windowCols()) * (-direcao); | |
while(true) { | |
system("cls"); | |
COORD pos_inicial = pos_atual; | |
if (outWords(argc, argv)) | |
fora = 0; | |
else if (!fora) | |
fora = direcao; | |
pos_atual.X = pos_inicial.X; | |
if (fora != direcao) | |
pos_atual.X += 1 * direcao; | |
else { | |
pos_atual.X = (direcao == 1 ? sizeWords(argc, argv) : windowCols()) * (-direcao); | |
fora = -direcao; | |
} | |
pos_atual.Y = b1; | |
Sleep(40); | |
} | |
} else // Para executar através do input do usuário até ele digitar "--sair" | |
while(true) { | |
getline(cin, str); | |
system("cls"); | |
// Para que o programa pare depois do usuário inserir | |
// a palavra mas antes de o programa tentar mostrá-la, | |
// é necessário utilizar o break no meio do loop. | |
if (str == "--sair") break; | |
// Separa as palavras da linha digitada | |
string buf; | |
stringstream ss(str); | |
vector<string> tokens; | |
while (ss >> buf) | |
tokens.push_back(buf); | |
COORD pos_inicial = pos_atual; | |
for (int i = 0; i < tokens.size(); i++) { | |
outWord(tokens[i]); | |
pos_atual.X = pos_inicial.X; | |
pos_atual.Y += b3; // Almenta 3 "blocos" para ir para a linha de baixo | |
} | |
pos_atual = {0, b1}; // Faz com que mostra a próxima palavra na primeira linha da tela | |
go({0, 0}); // Faz o cursor ir para o começo da tela para que o usuário insira outra palavra | |
} | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment