- João Otávio Gurgel Souto
- Guilherme Bonifácio Feitosa
Este projeto foi desenvolvido para obtenção da nota final da disciplina de Redes de Computadores, ministrada pelo docente David Alain do Nascimento ao curso de Tecnólogo em Análise e Desenvolvimento de Sistemas na Instituição IFPE - Campus Garanhuns. O trabalho tem como objetivo implementar um jogo em rede usando a linguagem de programação Java, explorando conceitos como comunicação por sockets e multithreading.
O projeto consiste em um jogo de adivinhação em rede, no qual os jogadores podem se conectar a um servidor para participar do jogo. O servidor gera um número aleatório entre 1 e 100, e os jogadores tentam adivinhar esse número. A comunicação entre o servidor e os clientes é realizada por meio de sockets em Java.
- Java: A linguagem de programação utilizada para desenvolver tanto o servidor quanto o cliente.
- Sockets: A comunicação entre o servidor e os clientes é implementada por meio de sockets, permitindo a troca de mensagens em tempo real.
- Threads: O uso de threads possibilita que o servidor atenda a vários jogadores simultaneamente, garantindo uma experiência de jogo fluída.
- IO Streams: Para lidar com entrada e saída de dados, são utilizadas classes como BufferedReader e PrintWriter.
- Apache Maven: Utilizado para gerenciamento de dependências e construção do projeto.
O código está organizado em três arquivos principais: GameServer, GameClient, e ClientHandler. A estrutura do projeto é gerenciada pelo Maven.
O cliente é responsável por estabelecer a conexão com o servidor, enviar o nome do jogador e participar do jogo. O cliente pode enviar mensagens ao servidor e recebe mensagens em tempo real.
O servidor gerencia a lógica do jogo, mantendo a lista de jogadores conectados, gerando o número secreto e distribuindo mensagens entre os jogadores. A classe GameServer cria uma instância de ClientHandler para cada jogador conectado.
A classe ClientHandler é uma implementação de Runnable e lida com a interação entre o servidor e um cliente específico. Ela recebe mensagens do cliente, as processa de acordo com a lógica do jogo e as transmite para os demais jogadores.
O arquivo pom.xml contém as configurações do projeto Maven, incluindo as versões do compilador Java, plugins necessários e a definição de scripts Batch para facilitar a execução do servidor e do cliente.
Compile e empacote os arquivos Java com Maven
mvn clean package
Inicie o servidor
java -jar target/server/game-server.jar
Execute o cliente
java -jar target/client/game-client.jar
Observação: Modifique o endereço de rede do servidor no cliente caso tente executar em maquinas diferentes.