Desafio! Será que conseguem? Ou não?

Podem encontrar alguma parte deste desafio ja feita em http://www.yourfilehost.com/media.php?cat=other&file=Batalha_Naval.zip

Descrição do jogo
A versão pretendida para o jogo da Batalha Naval consiste em:

Posicionar aleatoriamente 11 barcos num tabuleiro de 10x10 células (desde que haja sempre uma célula em branco entre dois barcos)
Aceitar do utilizador mensagens do tiro, em que são indicadas (no máximo) 3 posições da grelha de cada vez
Para cada um desses tiros é verificado se acertou num barco ou na água (tiros repetidos são ignorados)
É enviada ao utilizador uma mensagem a indicar qual o resultado dos tiros (quantos acertaram e quantos falharam)
É mostrada ao utilizador a nova grelha, com a indicação de quais os tiros dados na água e quais os tiros que acertaram em navios
É mostrada ao utilizador uma mensagem que indica quantos tiros já foram dados, que percentagem destes acertou o alvo e que percentagem da frota falta afundar (i.e. número de tiros certeiros / total de células ocupadas por barcos)
Volta a aceitar tiros do utilizador (2), até toda a frota ter sido afundada
Ao afundar toda a frota é emitida uma mensagem ao utilizador indicando que terminou e quantos tiros deu
Caso a sua pontuação esteja entre as 5 melhores registadas até ao momento (i.e. se tiver dado menos tiros que um dos 5 melhores jogadores registados) deve ser pedido o nome ao utilizador e registada em ficheiro (high_scores.txt) a sua pontuação (número de tiros dado). Por fim mostra-se ao utilizador a tabela dos melhores jogadores já com a sua entrada registada. Caso haja menos de 5 pontuações registadas, qualquer utilizador que termine o jogo terá a sua pontuação registada.
Os barcos são:

Um porta-aviões (5 células em T)
Uma fragata (4 células)
Dois torpedeiros (3 células)
Três contra-torpedeiros (2 células)
Quatro submarinos (1 célula)
2. Implementação
Estruturas de dados
Serão fornecidas as classes:

InterfaceGraficoBatalhaNaval
Coordenada
É obrigatória a implementação das classes:

BatalhaNaval
InterfaceTextoBatalhaNaval
É aconselhável, ainda que não obrigatória a implementação das classes:

Barco
Jogador
É permitida a implementação de outras classes que sejam julgadas adequadas para uma boa estruturação da resolução.

2.1 Posicionamento dos barcos
O posicionamento dos barcos deve começar pelo maior (o porta-aviões) e terminar nos submarinos.

Para gerar um número aleatório entre 0 e N use a função Math.rand() (gera um número decimal entre 0 e 1) multiplicando o resultado por N. Se achar necessário pode também usar a função Math.round() que arredonda um número decimal para o inteiro mais próximo.

  1. 2 Ciclo de jogo
    Em cada turno do jogo o utilizador irá dar ordens de tiro (que devem ser da forma A1 j10 B3), i.e. uma letra (maiúscula ou minúscula) seguida de um número entre 1 e 10. O programa deve processar estas ordens verificar se acertou na água ou em algum barco e dar essa informação ao utilizador.

De seguida deve verificar se todos os barcos dispostos no tabuleiro foram afundados e caso tenham sido enviar uma mensagem de fim de jogo ao utilizador indicando quantos tiros precisou para afundar toda a frota.

Caso não tenha ganho o programa deve mostrar ao utilizador o estado actual do tabuleiro e voltar a pedir novas ordens de tiro.

2.3 Comunicação com o utilizador
O trabalho deverá possibilitar dois tipos de interface com o utilizador que dependerão apenas de qual a classe que se escolhe executar (InterfaceGraficoBatalhaNaval ou InterfaceTextoBatalhaNaval):

interface gráfico (que será disponibilizado na página após a entrega do Problema 3)
interface de texto (a fazer pelos alunos)
O interface gráfico chama as seguintes rotinas da classe BatalhaNaval:

public BatalhaNaval(final InterfaceGraficoBatalhaNaval janela)
public void tiro(final String tiros)
O interface gráfico disponibiliza as seguintes rotinas:

public void escreve(final char a, final Coordenada posição)
public void actualizaProgresso(final int tiros, final int hits)
Recomenda-se que o interface de texto tenha o mesmo tipo de interacção com a classe Batalha Naval, para facilitar o trabalho de integração do código.

Exemplo de um ciclo de interacção em modo de texto:

1__2__3__4__5__6__7__8__9__10
A
.x.......~
B__.x......x.
C__x__x__x__....~x.__
D__..........
E__..........
F__x__....~....__
G__...x__x__x~...
H__..~..~....
I__.~........
J__~.........

Tiros: A9 j10 B5
Resultado: certos: 1, água: 2
Total: 24 tiros, 12 certos
Falta afundar 52% da frota

1__2__3__4__5__6__7__8__9__10
A
.x......x~
B__.x..~...x.
C__x__x__x__....~x.__
D__..........
E__..........
F__x__....~....__
G__...x__x__x~...
H__..~..~....
I__.~....~~..
J__~........~

Tiros:

Não se esqueçam que uma parte ta feita em http://www.yourfilehost.com/media.php?cat=other&file=Batalha_Naval.zip

enviem as vossas resoluções para joaosilva87@aeiou.pt ou para o yourfilehost.com

rssss…

ninguem faz trabalhos aqui !

:???:
me paga $500 reais que eu faço o desafio. :razz:
rsrsrs

nao eh bem um desafio eh mais um teste. Estou a encarregue de arranjar um funcionario que perceba de java em portugal ou no brasil. bom ordenado

Acho que seria mais facil você dizer:

“Alguem pode fazer meu trabalho da faculdade pra mim? Não estou conseguindo!”

Mesmo assim acho dificil você conseguir alguem pra fazer.

Cada um que aparece! :roll:

Nesse caso, sugiro que faça alguns testes mais “empresariais”, pois saber fazer um jogo de batalha naval não quer dizer muita coisa.

Tente fazer aí, se tiver alguma duvida, coloque aqui que o pessoal te ajuda! :wink:

Se você quer fazer um teste, entre em contato com alguns programadores e aplique o teste. Aqui no fórum ningúem cai nessa.

Tópico trancado.