Tämä erittäin eliitti ohjelma muuntaa antamasi tekstin merkkigrafiikaksi.
Eräs hyvä käyttötapa tälle on raiskata irkkaajien hermot ja läiskästä esim. irssillä tämmöistä: /exec -o TAG moij! ;)
///////////////////////////////////////////////// // TAG - Teksti ASCII-Grafiikaksi // // Muuntaa normaalin tekstin ASCII-Grafiikaksi // // // // - Matti "MasaVista" Kaijomaa 2005 // ///////////////////////////////////////////////// #include <iostream> #include <string> #include <cctype> using namespace std; int main(int argc, char *argv[]) { string teksti; //Jos muunnettava teksti annetaan parametreinä, muutetaan ne yhtenäiseksi stringiksi if (argv[1]) { int a = 1; while (argv[a]) { for (int i = 0; i < strlen(argv[a]); i++) { teksti += argv[a][i]; } a++; if (argv[a]) teksti += ' '; } } //Jos tekstiä ei anneta parametrinä, pyydetään se nyt else { cout << "TAG - Teksti ASCII-Grafiikaksi" << endl << "Anna muunnettava teksti: "; getline(cin, teksti); } //Muutetaan stringi luvuiksi, joiden perusteella haetaan oikeat merkit merkistöstä int merkit[teksti.size()]; for (int i = 0; i < teksti.size(); i++) { //Jos merkit ovat jo numeroita, ei niitä kannata muuttaa uudestaan numeroiksi if (isdigit(teksti[i])) { merkit[i] = teksti[i] - '0'; } else { //Jos merkit ovat "normaaleja" kirjaimia, käytetään niiden ASCII-arvoa hyödyksi if (isalpha(teksti[i])) { teksti[i] = toupper(teksti[i]); merkit[i] = teksti[i] - 64 + 10 - 1; //Lähinnä selkeyden vuoksi } //Erikoismerkit muutetaan käsipelillä. Tuntematon merkki muutetaan välilyönniksi. else switch (teksti[i]) { case '>': merkit[i] = 38; break; case '<': merkit[i] = 39; break; case '.': merkit[i] = 40; break; case ',': merkit[i] = 41; break; case ':': merkit[i] = 42; break; case ';': merkit[i] = 43; break; case '(': merkit[i] = 45; break; case ')': merkit[i] = 46; break; default: merkit[i] = 44; } } } //Määritetään merkistö string kirjaimet[7][47] = { " ##### ", " ### ", " ###### ", "###### ", "# ", "#######", " ######", "#######", " ##### ", " ##### ", " ##### ", "###### ", " #####", "##### ", "#######", "#######", " ##### ", "# #", "#", " #", "# #", "# ", "# #", "# #", " ##### ", "###### ", " ##### ", "###### ", " ######", "#######", "# #", "# #", "# #", "# #", "# #", "#######", "#", " ##### ", "# ", " #", " ", " ", "##", "##", " ", " #", "# ", "## #", " # ", "# #", " #", "# ", "# ", "# ", " # ", "# #", "# #", "# #", "# #", " # ", "# # ", "# ", "# ", "# ", "# #", "#", " #", "# # ", "# ", "## ##", "## #", "# #", "# #", "# #", "# #", "# ", " # ", "# #", "# #", "# #", " # # ", "# #", " # ", "#", "# #", " # ", " # ", " ", " ", "##", "##", " ", " # ", " # ", "# # #", " # ", " # ", " #", "# # ", "# ", "# ", " # ", "# #", "# #", "# #", "# #", "# ", "# #", "# ", "# ", "# ", "# #", "#", " #", "# # ", "# ", "# # # #", "# # #", "# #", "# #", "# #", "# #", "# ", " # ", "# #", "# #", "# #", " # # ", " # # ", " # ", "#", " # ", " # ", " # ", " ", " ", " ", " ", " ", "# ", " #", "# # #", " # ", " # ", "###### ", " ######", " ##### ", "###### ", " ##### ", " ##### ", " ##### ", "#######", "###### ", "# ", "# #", "#######", "#### ", "# #### ", "#######", "#", " #", "#### ", "# ", "# # #", "# # #", "# #", "###### ", "# #", "###### ", " ##### ", " # ", "# #", "# #", "# #", " # ", " # ", " # ", "#", " # ", " #", "# ", " ", " ", " ", " ", " ", "# ", " #", "# # #", " # ", " # ", " #", " # ", " #", "# #", " # ", "# #", " # ", "# #", "# #", "# ", "# #", "# ", "# ", "# #", "# #", "#", "# #", "# # ", "# ", "# #", "# # #", "# #", "# ", "# # #", "# # ", " #", " # ", "# #", "# #", "# #", " # # ", " # ", " # ", "#", " # ", " # ", " # ", " ", " ", " ", " ", " ", "# ", " #", "# ##", " # ", " # ", " #", " # ", "# #", "# #", " # ", "# #", " # ", "# #", "# #", " # ", "# # ", "# ", "# ", "# #", "# #", "#", "# #", "# # ", "# ", "# #", "# ##", "# #", "# ", "# # ", "# # ", " #", " # ", "# #", " # # ", "# # #", " # # ", " # ", " # ", " ", " ", " # ", " # ", "##", " #", "##", " #", " ", " # ", " # ", " ##### ", "#######", " #######", "###### ", " # ", " ##### ", " ##### ", "# ", " ##### ", " # ", "# #", "###### ", " #####", "##### ", "#######", "# ", " ##### ", "# #", "#", " ##### ", "# #", "#######", "# #", "# #", " ##### ", "# ", " #### #", "# #", "###### ", " # ", " ##### ", " # ", " # # ", "# #", " # ", "#######", "#", " # ", "# ", " #", "##", "# ", "##", "# ", " ", " #", "# " }; //Tulostetaan kirjaimet for (int i = 0; i < 7; i++) { for (int a = 0; a < teksti.size(); a++) { cout << kirjaimet[i][merkit[a]] << " "; } cout << endl; } //Työpöytäystävällinen lopetus if (!argv[1]) { cout << "\nLopeta painamalla enter."; getchar(); } return EXIT_SUCCESS; }
Binääreitä ei (enää) ole.
Kiva ohjelma :) Saa kanssairkkaajat kärsiä nyt :D
:D
Suuri kiitos mahtavasta vinkistä, näin C++ -koodia opettelevana, tästä oli suuri apu, piti vähän jopa itte pähkäillä miten pääsee erroreista eroon. Luultavasti ongelmana nykypäivän ohjelmat, ainakin Visual Studion C++ jota ite käytän.
Eli ongelma jotka aiheutti erroria oli:
int merkit[teksti.size()];
Kohta oli muutettava muotoon:
int merkit[255];
Eli mikäli ymmärsin oikein, merkit-array on muutokseni jälkeen 255 merkkiä käsittävä, eli pitäis riittää :)
Muutama kohta jotka eivät tosin estä ohjelman käynnistymistä, mutta herjaavat varoitusta, tuottaa (tuotti, ennen ku onnistuin ne ratkaisemaan :P) nuo for-lauseiden:
i < strlen(argv[a]); i < teksti.size(); a < teksti.size();
Ensimmäisestä mainitsemastani kohdasta pääsi helposti eroon kun laitto ennen kyseistä for-lausetta:
int b = strlen(argv[a]);
Ja tietysti for-lauseeseen sitten i < b;
Vastaavasti toinen ja kolmas varoituksen antava rivi korjaantuu:
int koko = teksti.size();
Ja for-lauseeseen taas i < koko;
Tässä siis toivottavasti pientä apua niille muille tasoisilleni alottelijoille jotka pähkäilevät tämän koodin ja uusien ohjelmien (tai kenties vain Visual Studion) kanssa :)
Aihe on jo aika vanha, joten et voi enää vastata siihen.