$ masmorra_ascii

Pós-textual

Epílogo

Epílogo

┌───────────── MASMORRA ASCII ── Andar 5/5 ────────────┐
│  ██████████████████████████████████████████████████  │
│  █..........█...........█......█.........█........█  │
│  █....@.....█.....D.....█..$...█....Z....█....>...█  │
│  █..........█...........█......█.........█........█  │
│  ██████████████.........███████████████████████████  │
│  █........................█........░░░░░░░░░░░░░░░█  │
│  █............!...........█....O...░░░░░░░░░░░░░░░█  │
│  █........................█........░░░░░░░░░░░░░░░█  │
│  ██████████████████████████████████████████████████  │
│                                                      │
│  Aventureiro  Nv 8   HP 42/50   Ouro 1820   Andar 5  │
│  Ataque 14    Defesa 9          XP 1250/1600         │
│                                                      │
│  > O dragão range os dentes. Esta é a última luta.   │
│  (w/a/s/d) mover   (i) inventário   (q) sair         │
└──────────────────────────────────────────────────────┘

A última tela antes do confronto final. O herói (@) diante do Dragão (D), do zumbi (Z), do orc (O), de ouro ($) e da escada (>). Um item (!) aguarda coleta. A névoa () ainda esconde parte do andar.

Você pressiona Enter pela última vez. O compilador chora, aceita, compila. A masmorra pisca na tela uma última vez e desaparece. Volta ao vazio. O terminal volta ao normal, aquele terminal que era apenas um retângulo de texto há trinta e sete capítulos, quando você começava sem saber nem o nome da primeira classe que iria escrever. Mas você saiu. Emergiu. A tela está preta outra vez, e você, sentado na cadeira, não é mais quem era quando a descida começou.

Trinta e sete capítulos. Milhares de linhas de código. Você não pode contar quantas vezes refatorou aquele laço que não fazia sentido. Quantas vezes viu o compilador reclamar daquele ponto e vírgula que não deveria estar ali. Quantas vezes você e a máquina tiveram essa conversa silenciosa, onde o erro apontava e você corrigia, corrigia, corrigia até que a lógica virou verdade e funcionou. Era frustrante. Era mágico. Era tudo de uma vez.

Mas o jogo funciona. A masmorra respira. Os inimigos patrulham com inteligência que você deu a eles: máquinas de estado que aprendeu construindo. O ouro cai quando você destrói uma múmia, não porque o código foi cópia de um exemplo, mas porque você entendeu a lógica de loot e a escreveu. O mapa muda a cada jogo, gerado por algoritmos que você escreveu e testou. O combate segue turnos que você definiu. O arquivo salvo sobrevive quando você fecha tudo e volta amanhã. Tudo está lá, palpitante, vivo, feito de decisões suas, de padrões que você escolheu, de abstrações que você construiu com as próprias mãos.

Você olha para a pasta do projeto. src/. pubspec.yaml. lib/. test/. Aquela pasta que começou vazia agora pulsa com vida que você criou. Você não apenas aprendeu Dart. Você aprendeu a criar. A ver além da sintaxe. A entender que um class não é só uma palavra-chave: é um conceito que ganha carne quando você a escreve com intenção. Que um loop não é só um mecanismo: é o pulso de um mundo que responde. Que um Future não é abstração distante, mas o caminho que seus saves percorrem, de disco para memória, para tela, para você.

Os monstros foram burros no começo. Zumbis que andavam ao acaso. Mas você os fez pensar. Máquinas de estado deram intenção aos zumbis. Padrões de movimento deram propósito aos lobos. O dragão final veio com múltiplas fases porque você merecia um adversário à altura do caminho que percorreu. Você não criou apenas uma masmorra. Você criou seres. Seres de ASCII, feitos de caracteres simples, mas que respiram com a lógica que você soprou neles. Nada ali é acaso. Tudo é escolha sua.

E quando a próxima pessoa rodar o seu dart run, ou quando você mesmo rodar em uma semana, naquele dia que quer reviver a sensação da primeira descida, a masmorra estará lá. Intacta. Viva. Esperando. Porque você não apenas consumiu um tutorial e o descartou. Você desceu, explorou, aprendeu, e subiu. E quando subiu, trouxe consigo não um jogo, mas a compreensão fundamental de que é você quem cria os mundos. Um arquivo por vez. Uma função por vez. Um main que espera ser chamado.

A masmorra não termina. Ela continua a cada dart run. A cada bug que você conserta, porque você aprendeu a ler a pilha de erros como um mapa. A cada feature que você acrescenta porque você pensou nela, e não porque um capítulo mandou. Porque você é agora o que sempre foi desde o começo, quando pressionou aquele comando pela primeira vez: um criador. Um programador. Alguém que olha para o vazio do terminal e diz, com todos os dedos pousados no teclado, pronto para construir o que vier a seguir.

Há quem diga que roguelikes são sobre morte permanente. Sobre permadeath e reset e recomeçar do zero. Talvez. Mas o que você leva daqui não morre. O que você aprendeu (não só de Dart, mas de pensar estruturalmente, de desenhar abstrações, de ver um problema e decompô-lo em padrões) fica. E quando você entra em uma nova masmorra (um novo projeto, uma nova linguagem, um novo desafio), você não entra desarmado. Você entra como quem já desceu e subiu uma vez.

Boa sorte na próxima descida. Mas desta vez, você já sabe: descidas assim têm volta. E quando você volta, volta diferente. Volta construtor.

$ masmorra_ascii — terminal interativo
Bem-vindo. Digite help para ver os comandos. Esc para sair.
$