Skip to content

Instantly share code, notes, and snippets.

@Alynva
Last active June 25, 2017 22:37
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Alynva/aaddbe2e0f345cfbe7f8abf4b9ee77fc to your computer and use it in GitHub Desktop.
Save Alynva/aaddbe2e0f345cfbe7f8abf4b9ee77fc to your computer and use it in GitHub Desktop.
Um programa louco feito em alguma madrugada qualquer
#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