Design und Layout



  • Also ihre kennt doch betimmt alle Hello world.

    cout << "Hello world " ; /*Meine Frage: In der Konsole sieht es echt lang weilig aus, wie kann ich es so verändern, damit es schön aussieht. ?? */
    

    z.B. so??:

    cout << "****Hello world**** " ; /*na ja euch fällt bestimmt was besseres ein  :D*/
    


  • Was ist den für dich schön? :>



  • Ehm... vielleicht so:

    cout << "----Hello world---- " ;
    

    ?

    Im Ernst. Überleg dir mal genau, was du eigentlich willst. 😉 - Im übrigen musst du in der Konsole nicht wirklich auf Ästhetik schauen. Interessiert niemanden. 😉



  • Das ist jetzt C (und die Terminalbreitenbestimmung funktioniert nur unter UNIX), aber so:

    #include <fcntl.h>
    #include <sys/ioctl.h>
    #include <unistd.h>
    
    #include <stddef.h>
    #include <stdio.h>
    #include <stdlib.h>
    
    static char const font[][97] = {
      "@DJ@DSBDHB@@@@@PNDNNH_L_NN@@H@BNNNONO__NQDPQAQQNONON_QQQQQ_NAND@D@A@P@L@ADPAF@@@@@@@D@@@@@@HDB@",
      "@DJJNSEDDDJD@@@PQFQQLABPQQ@@D@DQQQQQQAAQQDPIA[QQQQQQDQQQQQPBAHJ@H@A@P@B@A@@AD@@@@@@@D@@@@@@DDD@",
      "@D@_AHE@DDND@@@HYDPPJAAHQQDDB_HPYQQAQAAAQDPEAUSQQQQADQQQJJHBBHQ@@NON^NB^OFXIDKGNO^MNNQQQQI_DDD@",
      "@D@JNDB@DD__@_@DUDHLIOODN^@@A@PHU_OAQOOA_DPCAQUQOQONDQQQDDDBDH@@@PQQQQOQQDPEDUIQQQRADQQQJIHBDHJ",
      "@D@JPBU@DDND@@@BSDDP_PQDQPDDB_HD]QQAQAAYQDPEAQYQAUQPDQQUJDBBHH@@@^QAQOB^QDPCDUIQO^BNDQQUDNDDDDE",
      "@@@_NYI@DDJDD@@AQDBQHQQDQH@BD@D@AQQQQAAQQDQIAQQQAIQQDQJ[QDABPH@@@QQQQABPQDREDUIQAPBPDYJUJHBDDD@",
      "@D@JDYV@HB@@B@DANN_NHNNDNF@@H@BDNQONO_ANQDNQ_QQNAVQNDNDQQD_NPN@_@^ON^NBNQNLINUINAPGNLVDJQF_HDB@"
    };
    
    static size_t get_term_columns(void) {
      size_t cols = 80;
      char const *col_env = getenv("COLUMNS");
    
      if(!col_env || sscanf(col_env, "%lu", &cols) != 1) {
        struct winsize wsz;
        if(!ioctl(STDOUT_FILENO, TIOCGWINSZ, &wsz)) {
          cols = wsz.ws_col;
        }
      }
    
      return cols;
    }
    
    static size_t size_t_max(size_t x, size_t y) {
      return x > y ? x : y;
    }
    
    static void print_phrase(char const *p) {
      char const *q;
      size_t i, j, k, lpl = size_t_max(get_term_columns() / 6, 1);
    
      for(q = p; *q; p += lpl) {
        for(j = 0; j < 7; ++j) {
          for(i = 0, q = p; *q && i < lpl; ++q, ++i) {
    	for(k = 0; k < 6; ++k) {
    	  putchar((font[j][*q - ' '] >> k & 1) ? '#' : ' ');
    	}
          }
          putchar('\n');
        }
        putchar('\n');
      }
    }
    
    int main(int argc, char *argv[]) {
      /*
      char text[] =
        " !\"#$%&'()*+,-./0123456789:;<=>?@"
        "ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`"
        "abcdefghijklmnopqrstuvwxyz{|}~";
      */
      char text[] = "Hello, world.";
    
      if(argc == 1) {
        print_phrase(text);
      } else {
        size_t i;
        for(i = 1; i < argc; ++i) {
          print_phrase(argv[i]);
        }
      }
    
      return 0;
    }
    

    Um's unter Windows zum Laufen zu kriegen, sollte es eigentlich ausreichen, die obersten drei Header zu entfernen und get_term_columns auf return 80; oder so zusammenzustreichen.


  • Mod

    @seldon: Cool 👍



  • @seldon: Nice 😋 👍


Anmelden zum Antworten