Aqui no blog o que mais tem é conteúdo sobre gráficos para terminal(TUI, Terminal User Interface) e linha de comando, esse blog faz jus ao nome 😎 .
E hoje vamos dar uma incrementada nesse conteúdo indicando alguns games e animações no terminal que servem para propostas como: diversão, aprender e estudar o código fonte.
E nesse caso, vamos indicar 4 softwares escritos em C++ que possuem um código de fácil entendimento.
Vamos à essas 4 dicas!

2048 é um game de raciocínio criado em março de 2014 pelo desenvolvedor italiano Gabriele Cirulli, em que o objetivo é deslizar peças numeradas em uma grade, combiná-las e criar um azulejo com o número 2048.
2048.cpp é a versão desse game escrita em C++ . Para compilar você precisará das seguintes ferramentas:
Após possuir as dependências em tempo de compilação, agora basta clonar, construir e instalar com os seguintes comandos:
git clone https://github.com/plibither8/2048.cpp
cd 2048.cpp
mkdir build && cd build
cmake ..
makeApós gerado o binário, você já pode jogá-lo! Basta rodar:
./2048Na primeira tela exibida escolha a opção desejada, ou seja, para um novo game tecle o número 1 e em seguida pressione Enter .
   /\\\\\\\\\          /\\\\\\\                /\\\         /\\\\\\\\\
  /\\\///////\\\      /\\\/////\\\            /\\\\\       /\\\///////\\\
  \///      \//\\\    /\\\    \//\\\         /\\\/\\\      \/\\\     \/\\\
             /\\\/    \/\\\     \/\\\       /\\\/\/\\\      \///\\\\\\\\\/
           /\\\//      \/\\\     \/\\\     /\\\/  \/\\\       /\\\///////\\\
         /\\\//         \/\\\     \/\\\   /\\\\\\\\\\\\\\\\   /\\\      \//\\\
        /\\\/            \//\\\    /\\\   \///////////\\\//   \//\\\      /\\\
        /\\\\\\\\\\\\\\\   \///\\\\\\\/              \/\\\      \///\\\\\\\\\/
        \///////////////      \///////                \///         \/////////
  
  Welcome to 2048!
        1. Play a New Game
        2. Continue Previous Game
        3. View Highscores and Statistics
        4. Exit
  Enter Choice: Em seguida defina a quantidade de linhas e colunas do game que representa, de alguma forma, o nível de dificuldade, o valor mínimo é 3(três) . Por exemplo, tecle 4(zero) e em seguida pressione Enter e o jogo iniciará:
  (NOTE: Scores and statistics will be saved only for the 4x4 gameboard)
  Enter gameboard size - (Enter '0' to go back): O mini tutorial de uso se encontra na própria tela do games:
  ┌───────────────────────────┐
  │ SCORE:                 96 │
  │ BEST SCORE:            96 │
  │ MOVES:                 20 │
  └───────────────────────────┘
 
  ┌──────┬──────┬──────┬──────┐
  │    2 │   16 │    4 │      │
  ├──────┼──────┼──────┼──────┤
  │   16 │    4 │      │      │
  ├──────┼──────┼──────┼──────┤
  │    4 │      │    2 │      │
  ├──────┼──────┼──────┼──────┤
  │    2 │      │      │      │
  └──────┴──────┴──────┴──────┘
  W or K or ↑ => Up
  A or H or ← => Left
  S or J or ↓ => Down
  D or L or → => Right
  Z or P => Save
  
  Press the keys to start and continue.Se quiser sair do game tecle Ctrl + C .
Para instalar basta mover esse binário para algum caminho contido na sua variável $PATH, exemplo:
sudo install -v 2048 /usr/local/binDepois remova o diretório clonado:
cd ../.. # Se ainda estiver dentro de build/
rm -rf 2048.cppE em seguida quando quiser jogá-lo só rodar o comando 2048 no terminal .
Há uma opçaõ de compilar com o Meson para mais informações consulte o repositório .
Conheça também outra alternativa ao 2048.cpp um 2048 feito em C: 2048-in-terminal .
Flappy Bird é um jogo que inicialmente desenvolvido para celular feito pelo programador vietnamita Dong Nguyen.

O game é um side-scroller onde o jogador controla um pássaro, tentando voar entre colunas de canos verdes sem bater neles.
Ascii Bird é um game baseado em Flappy Bird feito com a biblioteca NCURSES criado usando somente os caracteres da tabela ASCII .
Você precisará das seguintes ferramentas para conseguir construir no seu sistema:
Após isso rode os comandos:
git clone https://github.com/hamikm/AsciiBird.git
cd AsciiBird
makeE para testar, basta rodar: ./flap .
O jogo será carregado automaticamente após a animação similiar abaixo:
                   ___ _                       ___ _        _
                  | __| |__ _ _ __ _ __ _  _  | _ |_)_ _ __| |
                  | _|| / _` | '_ \ '_ \ || | | _ \ | '_/ _` |
                  |_| |_\__,_| .__/ .__/\_, | |___/_|_| \__,_|
                             |_|  |_|   |__/
                              Press <up> to flap!
 [==============================================================         ]Após isso será automaticamente iniciado, use as teclas direcionais para cima ↑ e para baixo ↓ para movimentar o player.
Para instalar basta mover esse binário para algum caminho contido na sua variável $PATH, exemplo:
sudo install -v flap /usr/local/binE quando quiser jogar rode:
flapno terminal . Para mais informações consulte o repositório .
Pong é um jogo esportivo bidimensional que simula o tênis de mesa . O jogador controla uma raquete no jogo movendo-a verticalmente na tela.
Eles podem competir contra outro jogador controlando uma segunda raquete no lado oposto. Os jogadores usam as pás para bater uma bola para frente e para trás. O objetivo é que cada jogador alcance onze pontos antes do adversário; pontos são ganhos quando um não consegue devolver a bola para o outro.
Pong foi fabricado pela Atari e lançado originalmente em 1972. Foi um dos primeiros videogames de arcade de sucesso no mundo.
Existem diversos remakes de Pong, um deles é o Pong escrito em C++ e NCURSES .
Para instalar, lembre-se de ter as dependências de construção: Git, g++ e GNU Make .
Para instalar, rode:
git clone https://github.com/zacharyvincze/Pong
cd Pong
sed -i 's/-lncurses/-lncurses -ltinfo/g' Makefile
makeApós compilado, rode: ./pong e utilize as teclas w, a, s e d para o player 1 e ↑, →, ↓ e ← para o player 2 para jogar . Para mais informações acesse o repositório .

Uma alternativa à esse Pong é o PongC feito em C que pode acessado aqui .
ASCII Rain é uma animação de chuva no terminal.
Você irá perguntar:
— Pra que diabos eu quero ficar vendo chuva no terminal ?
Bom, realmente essa é uma questão legítima, mas existe uma cultura chamada: unixporn que gostam de utilizar esses recursos para melhorar seu rice(termo utilizado para representar a combinação de customizações do ambiente desktop de forma diferenciada).
Nós possuímos alguns artigos nesse sentido e para mais informações clique nesse link .
Se você quiser reproduzir essa chuva no terminal, instale as dependências(git,gcc e make). E depois clone:
git clone https://github.com/nkleemann/ascii-rainCompile:
gcc rain.c -o rain -lncurses -ltinfoRode e/ou instale:
./rain
sudo install -v rain /usr/local/binResultado:

Para mais informações acesse o repositório .
Vocês notaram que quase todos os aplicativos instalamos no diretório do sistema: /usr/local/bin e para isso precisamos usar o sudo .
Apesar de haver isso em diversos tutoriais nesse blog incluindo esse artigo, eu particularmente não recomendo isso por questões de segurança e organização .
Instale-os somente para seu usuário, ou seja, isolando um pouco mais.
Para todos os casos faça o seguinte:
mkdir -p ~/.local/binEm seguida inclua esse diretório na sua variável $PATH:
Para Bash
echo '${HOME}/.local/bin:${PATH}' >> ~/.bashrcFeche e depois abra seu terminal ou somente rode os comandos abaixo:
source ~/.bashrc
exec $SHELLE toda vez que precisar instalar um aplicativo de terceiros use esse diretório, exemplo:
install -v app ~/.local/binE instantaneamente o comando já estrá disponível no seu terminal.
Melhor, né não? 😃