Este projeto implementa um jogo da velha multiplayer que utiliza protocolos TCP e UDP para comunicação em rede. O jogo foi desenvolvido como um estudo de caso para transmissão de dados em redes de computadores.
- Python 3.6 ou superior
- Tkinter (geralmente já vem instalado com o Python)
- Clone ou baixe este repositório
- Execute o arquivo principal:
python main.py
- Interface gráfica usando Tkinter
- Comunicação em rede usando TCP e UDP
- Placar de pontuação
- Reinício de jogo mantendo o placar
- Medição de latência via ping UDP
O TCP é usado para todas as comunicações que exigem confiabilidade:
- Movimentos no tabuleiro
- Informações do jogador
- Solicitações de reinício de jogo
O TCP garante que todos os dados sejam entregues na ordem correta e sem perdas, o que é essencial para manter a consistência do estado do jogo entre os jogadores.
O UDP é usado para mensagens auxiliares e informações não críticas:
- Notificações de conexão
- Pings para medir latência
- Notificações de início de jogo
- Notificações de desconexão
O UDP é mais rápido que o TCP, mas não garante a entrega dos pacotes. É adequado para informações que podem ser perdidas sem afetar o funcionamento do jogo.
- Inicie o aplicativo em dois computadores diferentes
- Em um computador, clique em "Criar Jogo" (este será o servidor)
- No outro computador, insira o IP do servidor e clique em "Entrar no Jogo"
- Após a conexão, o jogo começará automaticamente
- Jogue alternadamente até que haja um vencedor ou empate
- Use o botão "Reiniciar Jogo" para jogar novamente mantendo o placar
O código está organizado em uma única classe TicTacToeGame
que gerencia:
- Interface gráfica
- Lógica do jogo
- Comunicação em rede
- Gerenciamento de estado
As mensagens TCP e UDP são formatadas como objetos JSON para facilitar o processamento.