Publicado em 08/12/2022 às 10:05

Introdução ao Elixir - Seu Primeiro App - Blackjack (21)

O tutorial que eu queria ter encontrado quando eu comecei a aprender Elixir. Vamos fazer um primeiro app: o famoso jogo de cartas Black Jack (21).

Por Agilso

Apresentação

Antes de construirmos nosso game de Blackjack, vale a pena dar uma contextualizada no Elixir. Não vai demorar mais do que 3 minutos, eu prometo.

O que é Elixir?

Linguagem de programação funcional, imutável, dinâmica, escalável, tolerante a erros, etc. Mas o que diabos isso significa?

O resumo da opera é que o Elixir traz um avanço na programação concorrente, possibilitando explorar não só vários núcleos e threads do processador, mas também expandir sua aplicação para várias máquinas, quando preciso, de maneira fácil.

Elixir foi construído em cima de uma antiga linguagem feita pela Ericson, chamada de Erlang, feita sob medida para lidar com centrais telefônica que tratavam milhares de ligações simultaneamente. Por isso, Elixir também tem grande capacidade de lidar com múltiplas tarefas ao mesmo tempo.

Quem usa?

Os usos mais notáveis são do Whatsapp e do Pinterest. O primeiro conseguiu conectar 2 milhões de usuários numa única máquina rodando o Elixir. Já o Pinterest substituiu a parte de notificações do seu sistema feita inicialmente em Java por uma nova em Elixir. Os resultados foram muitos servidores economizados e um código fonte cerca de 20% do anterior.

Phoenix - O Framework da Conectividade

O Phoenix é um framework para desenvolvimento web de alta produtividade e que explora todo o poder do Elixir. Ele está se tornando conhecido por ser o framework da conectividade, isto porque torna fácil, nada custosa, a conexão entre os users. Se tornando perfeito para features de realtime, como chat, atualização em tempo real das páginas (por exemplo inserção de um novo comentário), etc. É o framework que orgulhosamente utilizamos para construir este site, também.

Instalando Elixir e Erlang

Para continuar você precisa ter o Elixir em sua máquina, se não tiver, corre no elixir-lang.org/install.html para baixar e instalar o Elixir no seu sistema. Não tem segredo.

Depois que você tiver instalado o Elixir, vá ao terminal e digite elixir -v. Você deve ver um output parecido com o de baixo.

$ elixir -v
Erlang/OTP 22 [erts-10.6.4] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1] [hipe]

Elixir 1.10.2 (compiled with Erlang/OTP 21)

Se não apareceu a versão, há algo errado com sua instalação.

Como vai funcionar nosso game?

Nós vamos implementar uma versão simplificada do Blackjack, ou como chamamos aqui no Brasil, o famoso jogo de baralho "21". Se você (estranhamente) nunca jogou, sugiro que dê uma lida lá na página do jogo na Wikipédia.

Para os ávidos jogadores de Blackjack, aviso que essa versão que vamos implementar não terá double down, nem split, etc. Afinal, o intuito aqui é explorar o Elixir e não implementar um verdadeiro cassino.

Funcionamento básico

Nosso jogo vai funcionar no terminal. Haverá um dealer (computador) e um player humano (você).

  • O player começa com duas cartas na sua mão.
  • O player escolhe se quer mais cartas ou se quer parar.
  • Depois que o player terminar de pegar suas cartas, o dealer (computador) inicia.
  • O Dealer pega cartas sempre que tiver menos de 17 pontos.
  • O Dealer não pode passar de 5 cartas.
  • Quem fizer a pontuação mais próxima de 21, ganha.

Exemplo de rodada

Vamos ver um exemplo de rodada.

$ iex> Blackjack.start
$ iex> Your Deck: [{10, :hearts}, {8, :diamonds}]
$ iex> You got: 18 points.
$ iex> Press "1" to hit more cards or "0" to stand.
$ iex> 0
$ iex> Ok. Your final deck is: 
$ [{10, :hearts}, {8, :diamonds}]
$ iex> Dealer's Deck: [{10, :diamonds}, {1, :spades}]
$ iex> Dealer got 21 points.
$ iex> Dealer wins.

Tá preparado para começar? Vamos lá.

Criando o Projeto

Ta na hora de botar a mão na massa. Vamos fazer nosso super e empolgante projeto: Blackjack, ou como mais conhecido aqui no Brasil, "21".

Pelo terminal, navegue até o diretório que onde você quer que fique o projeto e digite o comando abaixo:

$ mix new blackjack

Com ele, o Mix vai criar um diretório com o mesmo nome do projeto e colocar alguns arquivos base, comuns em todos projetos de Elixir, eliminando aí algum boilerplate e dando um bom esqueleto para começarmos a trabalhar.

blackjack
├── .formatter.exs
├── .gitignore
├── lib
│   └── blackjack.ex
├── mix.exs
├── README.md
└── test
    ├── blackjack_test.exs
    └── test_helper.exs

O que é Mix?

Junto com a instalação do Elixir vem o Mix, uma ferramenta indispensável que nos ajuda a gerenciar nossos projetos. Com ela podemos fazer várias coisas, por exemplo:

  • Criar novos projetos
  • Gerenciar dependências
  • Executar tarefas e testes
  • Compilar o programa
  • Etc

Se você conhece Ruby, você pode pensar no Mix como sendo uma espécie fusão do Bundler com o Rake.

Se você mexe com NodeJS, pode pensar no Mix como um similar do NPM ou Yarn.

Trending
Os mais vistos aqui do blog
Como criar ebook com ChatGPT, Midjourney, Canva e HeroSpark Aprenda como criar um ebook do zero usando inteligência artificial e outras ferramentas poderosas. Neste artigo, você vai descobrir um passo-a-passo detalhado para gerar texto com o ChatGPT, criar ilustrações com o Midjourney, fazer a parte editorial no Canva e, finalmente, publicar e vender na HeroSpark.
30 coisas que você precisa saber sobre o SHORTS do YouTube O que fazer e o que não fazer para extrair o máximo do novo formato de vídeos do Youtube.
Tecla falhando? Toque duplo? Como consertar teclado mecânico. Sempre que uma tecla para de funcionar... esse método vem e me salva.
Os 10 melhores plugins do OBS Studio Nester artigo eu reuno plugins que transformarão o seu OBS Studio numa versão com esteróides! Tem plugin para fazer transições de movimento, remoção de fundo sem tela verde, face tracking, embaçar fundo, compartilhar informações de músicas, transmitir para múltiplos lugares e outros.
Como espelhar ou inverter a câmera horizontalmente no OBS Studio Sua câmera ou outra fonte está espelhada? Ensino rapidamente a resolver esse problema no OBS Studio.
Como criar seu grupo VIP no Telegram (e faturar 💰) Neste artigo, revelo como você pode monetizar sua audiência ao transformar o seu grupo ou canal do Telegram numa área de membros paga. Apresento duas ferramentas Botgram e HeroSpark que vão tornar seu grupo vip: só quem pagar entra. Ensino a configurar do começo ao fim. Bora.
Como sincronizar áudio ou vídeo atrasados no OBS Studio Imagem e áudio fora de sincronia nas suas gravações ou transmissões do OBS Studio? Esse tutorial vai te ensinar a resolver.
Como capturar somente um pedaço da tela com o OBS Studio Neste post eu ensino você a fazer um crop (recorte) numa fonte em poucos minutos. Isto permite que você grave somente um porção de um programa ou da tela.
Dúvidas? Ajuda?
Fala comigo no Whatsapp.