Este é um projeto de um jogo de cartas multiplayer (estilo 21/Blackjack simplificado) desenvolvido em Go. A arquitetura é baseada em cliente-servidor, permitindo que múltiplos jogadores se conectem a um servidor central, encontrem oponentes e joguem em tempo real.
Para executar o projeto, você precisará ter as seguintes ferramentas instaladas:
- Go (versão 1.25.0)
- Docker
- Docker Compose
Existem quatro maneiras principais de executar a aplicação, dependendo das suas necessidades.
-
Iniciar o Servidor:
cd servidor go run . -
Iniciar o Cliente:
cd cliente go run .Você pode iniciar quantos clientes quiser, cada um em seu próprio terminal.
💡 Dica: Se o servidor estiver rodando em outra máquina na mesma rede, você pode conectar o cliente a ele especificando o endereço como argumento:
go run . <endereço_ip_do_servidor>:8080
-
Construir a Imagem Docker do Servidor:
docker build -t servidor-jogo-cartas . -
Rodar o Contêiner do Servidor:
docker run --rm -p 8080:8080 servidor-jogo-cartas -
Conectar Clientes Locais: Execute os clientes localmente como no Método 1.
-
Construir as Imagens de Ambos os Serviços:
docker-compose build -
Iniciar os Serviços (usando dois terminais):
-
Servidor:
docker-compose up servidor -
Cliente:
docker-compose run --rm cliente
-
-
Encerrar Tudo:
docker-compose down
Este método é útil quando o servidor e o cliente vão rodar em hosts diferentes da mesma rede local.
-
Rodar o Servidor (em uma máquina):
Você pode escolher entre Docker Compose ou rodar o servidor sozinho:Com Docker Compose:
docker-compose up servidorOu apenas com Docker direto:
docker build -t servidor-jogo-cartas . docker run --rm -p 8080:8080 servidor-jogo-cartasO servidor ficará exposto na porta
8080do host.💡 Para descobrir o IP da máquina do servidor (Linux), use:
hostname -I -
Rodar o Cliente (em outra máquina):
Primeiro faça o build:docker build -t cliente-jogo-cartas -f cliente/Dockerfile .Depois execute, apontando para o IP da máquina do servidor:
docker run --rm -it cliente-jogo-cartas ./cliente <endereço_ip_do_servidor>:8080Exemplo:
docker run --rm -it cliente-jogo-cartas ./cliente 192.168.0.42:8080
O projeto inclui testes de concorrência para validar a lógica de matchmaking e a distribuição de cartas do servidor.
Para executá-los, navegue até a pasta raiz e use o comando padrão de testes do Go:
cd servidor
go test -v
- A flag
-v(verbose) exibe os resultados detalhados de cada teste.