Curso de Verão de Java
Aula 10 - Laboratório
O objetivo desta aula é a familiarização com os conceitos, classes e métodos relativos ao mecanismo de comunicação por Sockets. Dentro deste contexto, um exemplo implementado durante o primeiro Curso de JAVA do DI (Batalha Naval) será apresentado como exemplo para análise e compreensão do código.
Preparação:
Como alguns fatores não possibilitam a execução do código no Netscape2.0, utilizaremos o appletviewer para visualizar o Batalha Naval.
- Monte a java-máquina (xhost, rlogin, setenv DISPLAY...).
- Copie os arquivos navalbattle.html e NavalBattle.java do diretório ~java/public_html/verao/aula10/lab/navalbattle/ para sua área de trabalho public_html/java.
Tarefa 1:
Executar o jogo e identificar suas principais falhas de interface. Abaixo segue as regras e o procedimento do jogo:
- Número de participantes = 2
- Os participantes podem estar em qualquer terminal. Entretanto, como a classe Socket de JAVA só funciona no Appletviewer, temos que executar o programa de ingazeira.
- Cada participante executa um appletviewer(de ingazeira):
- cd ~java/public_html/verao/aula10/lab/navalbattle
- appletviewer navalbattle.html&
- Cada participante posiciona suas embarcações na matriz à esquerda. (A cada click do mouse, o quadrado respectivo da matriz é pintado).
- Um dos participantes seleciona o botão Listen no appletviewer. Note que neste momento o console mostra qual é o host e a porta selecionados para comunicação. O outro participante então coloca estes valores nas janelas respectivas do applet, caso estes valores sejam diferentes dos defaults. Em seguida seleciona o botão Connect.
- A partir daí, cada jogador tem direito a uma jogada por vez, iniciando com o jogador que selecionou Connect. As jogadas são feitas na matriz à direita, e é possível observar as jogadas do adversário na matriz à esquerda.
- O jogo termina quando um dos dois jogadores destruiu as 10 embarcações do adversário.
Tarefa 2:
Percorrer os códigos fonte identificando as principais classes e buscando na hierarquia de classes os possíveis métodos não conhecidos, com o objetivo de entender todo o funcionamento do código.
- Com os códigos fonte no seu diretório de trabalho, execute o Batalha Naval e observe as principais falhas de desenvolvimento e estilo de programação.
Tarefa 3:
Melhorar o sistema de mensagens ao usuário, com informações do tipo:
- É a sua vez!
- Você só tem mais x embarcações!
- etc...
Tarefa Para Casa:
Acrescentar opções extras para o jogo, estendendo-o, e.g.:
- Colocar outra opção de embarcação.
- Melhorar o design da interface...
JOA, joa@di.ufpe.br
Última edição em 29 de janeiro de 1996.
URL: http://www.di.ufpe.br/~java/verao/aula10/lab/lab.html