Imprimindo formas preenchidas no terminal

2

Gostaria de imprimir algumas formas preenchidas com a cor atual ou uma selecionada (por exemplo, \ e [31m)

Meu objetivo é imprimir um círculo preenchido (letra o) na tela, mas o plano de fundo permanecerá como está.

finalmente poderei desenhar o tabuleiro do jogo Luno.

    
por Olgun Kaya 14.11.2014 / 15:16

1 resposta

4

echo '
     ████████
  ██████████████
 ████████████████
██████████████████
██████████████████
 ████████████████
  ██████████████
     ████████'

Ou programaticamente e usando vídeo reverso em vez de caracteres de boxe Unicode:

$ awk -v radius=20 'BEGIN{
   for (y = -radius; y <= radius; y++) {
     x = sqrt(radius * radius - y * y)
     printf "%*s3[7m%*s3[27m\n", radius - x, "", 2 * x, ""
   }}'

             █████████████
           ██████████████████
         ██████████████████████
        ████████████████████████
      ███████████████████████████
     █████████████████████████████
    ███████████████████████████████
    ████████████████████████████████
   ██████████████████████████████████
  ███████████████████████████████████
  ████████████████████████████████████
 █████████████████████████████████████
 ██████████████████████████████████████
███████████████████████████████████████
███████████████████████████████████████
████████████████████████████████████████
████████████████████████████████████████
████████████████████████████████████████
████████████████████████████████████████
████████████████████████████████████████
████████████████████████████████████████
████████████████████████████████████████
████████████████████████████████████████
████████████████████████████████████████
███████████████████████████████████████
███████████████████████████████████████
 ██████████████████████████████████████
 █████████████████████████████████████
  ████████████████████████████████████
  ███████████████████████████████████
   ██████████████████████████████████
    ████████████████████████████████
    ███████████████████████████████
     █████████████████████████████
      ███████████████████████████
        ████████████████████████
         ██████████████████████
           ██████████████████
             █████████████

Você pode querer esticar o eixo x , pois os caracteres do terminal são geralmente mais altos do que largos.

$ awk -v radius=10 'BEGIN{
   for (y = -radius; y <= radius; y++) {
     x = sqrt(radius * radius - y * y)
     printf "%*s3[7m%*s3[27m\n", 2*(radius - x), "", 4 * x, ""
   }}'
           ██████████████████
        ████████████████████████
     █████████████████████████████
    ████████████████████████████████
  ███████████████████████████████████
 █████████████████████████████████████
███████████████████████████████████████
████████████████████████████████████████
████████████████████████████████████████
████████████████████████████████████████
████████████████████████████████████████
████████████████████████████████████████
███████████████████████████████████████
 █████████████████████████████████████
  ███████████████████████████████████
    ████████████████████████████████
     █████████████████████████████
        ████████████████████████
           ██████████████████
    
por 14.11.2014 / 16:54