Arte ASCCI en la terminal

Que onda jóvenes linuxeros.
Es un proyectito un poco tonto pero muy divertido y clásico para programar en C (o cualquier lenguaje que compile a C). Es tratar de hacer arte ASCII en la terminal, lo mas clásico es correr la dona 3D giratoria en C (creada originalmente por Andy Sloane).

Esto puede ser util en algunos escenarios, por ejemplo creo que muchos de ustedes dan como “clases de linux” a sus conocidos, es decir ayudan a aprender a usar la terminal a gente nueva, y creo que esto puede ser interesante y educativo, ya que es un acercamiento divertido a como compilar en GCC y asi.

Pasos a seguir:

  1. Instalar GCC
sudo apt update && sudo apt install gcc -y
  1. Guardar el archivo dona.c

Tener el script de la dona en C guardado
Guardamos el siguiente archivo dona.c con el código siguiente:

#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <math.h>

int main() {
    float A = 0, B = 0;
    float i, j;
    int k;
    float z[1760];
    char b[1760];
    printf("\x1b[2J");
    for (;;) {
        memset(b, 32, 1760);
        memset(z, 0, 7040);
        for (j = 0; j < 6.28; j += 0.07) {
            for (i = 0; i < 6.28; i += 0.02) {
                float c = sin(i);
                float d = cos(j);
                float e = sin(A);
                float f = sin(j);
                float g = cos(A);
                float h = d + 2;
                float D = 1 / (c * h * e + f * g + 5);
                float l = cos(i);
                float m = cos(B);
                float n = sin(B);
                float t = c * h * g - f * e;
                int x = 40 + 30 * D * (l * h * m - t * n);
                int y = 12 + 15 * D * (l * h * n + t * m);
                int o = x + 80 * y;
                int N = 8 * ((f * e - c * d * g) * m - c * d * e - f * g - l * d * n);
                if (22 > y && y > 0 && x > 0 && 80 > x && D > z[o]) {
                    z[o] = D;
                    b[o] = ".,-~:;=!*#$@"[N > 0 ? N : 0];
                }
            }
        }
        printf("\x1b[H");
        for (k = 0; k < 1761; k++) {
            putchar(k % 80 ? b[k] : 10);
            A += 0.00004;
            B += 0.00002;
        }
        usleep(30000);
    }
    return 0;
}

(Si efectivamente uso notepad++ y eso no me hace menos hombre, lo siento Vim es muy difícil.)

  1. Compilar el programa
    Ahora llamamos el archivo dentro de gcc,con la libreria matematica -1m
    gcc dona.c -o dona -lm

  2. Ejecutar
    Cuando abramos la terminal, es importante tenerla en dimensiones donde se pueda observar bien la dona, en el caso de tener el archivo dona.c en el escritorio nos movemos hacia ellas con cd ~/ y asi

./dona
  1. Disfrutar
3 Me gusta

te recomiendo kate…

pinche limite de caracteres

1 me gusta

normalmente uso visual estudio code, pero ahi que solo tenia que escribir y guardar use notpad, ademas de para hacer el chiste de no se usar vim xd, me descargare kate al raton

gracias por el tutorial ahora podré elaborar contenido antisemita para pegar en los perfiles de mis amigos en Steam

2 Me gusta

por cierto, que enfermo mental usa el modo claro para programar :sob: :folded_hands:

1 me gusta

Nada de antisemitismo! este hilo me fue prometido hace 3000 años !

1 me gusta

Y eso que me actualize, antes usaba slackware en una compu de hace 15 años aprox, con un monitor lcd viejo. Todo boomer.

Hola,

Modo claro por el día o en sitios con mucha luz.
Modo oscuro a la noche o en sitio con poca luz.

Al final todo es un tema de iluminación del entorno :slightly_smiling_face:

Un saludo

1 me gusta

tiene sentido xd, aunque da flojera configurar las apariencias de los programas.

Hola, dependiendo de flujo de trabajo, y las aplicaciones, a veces es solo pulsar un botón :wink:

Un saludo

1 me gusta