Want to create interactive content? It’s easy in Genially!

Get started free

Sistemas Distribuídos - Jogo de batalha naval

Victória Cardoso Chaves Leite

Created on March 27, 2025

Start designing with a free template

Discover more than 1500 professional designs like these:

Geniaflix Presentation

Vintage Mosaic Presentation

Shadow Presentation

Newspaper Presentation

Zen Presentation

Audio tutorial

Pechakucha Presentation

Transcript

Sistemas Distribuídos - Jogo de batalha naval

Grupo: Marco Antonio Mendes Cruz dos Santos, Lucas Silva de Araújo, Jefferson Fonseca de Andrade, Marina Gabriela Gomes Teixeira, Victória Cardoso Chaves Leite

INDEX

Introdução

Fundamentos Teóricos

Descrição da Implementação

Código-Fonte Explicado

Conclusão

1. Introdução

Introdução

A comunicação em sistemas distribuídos é essencial e pode ocorrer via memória compartilhada, mensagens ou RPC, com o modelo cliente-servidor sendo comum.

2.Fundamentos teóricos

2.1 Sockets TCP e UDP: Diferenças e Aplicações

Sockets TCP e UDP: Diferenças e Aplicações

Sockets permitem comunicação entre processos via TCP e UDP. TCP é confiável, ideal para navegação; UDP é rápido, sem garantia de entrega, usado em jogos. No jogo Batalha Naval, usou-se TCP para mensagens intactas.

2.2 Arquitetura Cliente-Servidor

Arquitetura Cliente-Servidor

A arquitetura cliente-servidor permite a comunicação entre um servidor central e múltiplos clientes, sendo usada em bancos de dados, web e jogos. No Batalha Naval, conecta dois jogadores para interações em tempo real.

2.3 Conceitos de Paralelismo e Concorrência

Conceitos de Paralelismo e Concorrência

Paralelismo executa tarefas simultaneamente em múltiplos núcleos, enquanto concorrência alterna tarefas em um núcleo para otimizar recursos. No Batalha Naval, o ThreadPool garante concorrência no servidor, mantendo a responsividade.

2.4 Funcionamento do ThreadPool com ExecutorService no Java

Funcionamento do ThreadPool com ExecutorService no Java

Embora implementado em Python, é útil conhecer o ThreadPool em outras linguagens. No Java, o ExecutorService gerencia threads, e em Python, o ThreadPoolExecutor otimiza conexões no servidor.

3.Descrição da Implementação

3.1 Arquitetura da Aplicação

Arquitetura da Aplicação

A aplicação foi desenvolvida seguindo a arquitetura cliente-servidor, onde:

  • O servidor gerencia as conexões e a troca de mensagens entre dois jogadores.
  • Os clientes se conectam ao servidor e interagem com o jogo por meio de mensagens enviadas e recebidas via sockets TCP.
  • A comunicação entre os jogadores é mediada pelo servidor, garantindo que as jogadas sejam sincronizadas.

3.2 Diagrama da Comunicação

Diagrama da Comunicação

3.3 Uso de ThreadPoolExecutor no Gerenciamento de Conexões

Uso de ThreadPoolExecutor no Gerenciamento de Conexões

O ThreadPoolExecutor gerencia múltiplas conexões no servidor, garantindo processamento eficiente sem sobrecarga.

4.Código-Fonte Explicado

5. Conclusão

5.1 Dificuldades Encontradas e Soluções Aplicadas

Dificuldades Encontradas e Soluções Aplicadas

O projeto enfrentou três desafios principais: 1. Gerenciamento de múltiplos clientes 2. Atualização do tabuleiro em tempo real 3. Posicionamento dos navios

5.2 Reflexão sobre a Importância dos Conceitos Aprendidos

Reflexão sobre a Importância dos Conceitos Aprendidos

O projeto proporcionou aprendizado em comunicação em rede, cliente-servidor e threads. O ThreadPool otimizou conexões, e melhorias na lógica aprimoraram a jogabilidade.

Obrigada pela atenção!