Ir para conteúdo
Fórum Script Brasil
  • 0

Desafio - Batalha Naval


joaosilva87

Pergunta

Podem encontrar alguma parte deste desafio já feita em http://www.yourfilehost.com/media.php?cat=...talha_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.

2. 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 está feita em http://www.yourfilehost.com/media.php?cat=...talha_Naval.zip

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

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Alterei o título do teu tópico para algo que reflete melhor o conteúdo. E, se isso for um trabalho seu, é muito mais proveitoso dizer em que partes você está com dificuldade do que esperar alguém fazer por você. ;)

Té mais,

é mesmo um desafio a ver quem consegue mais depressa possivelmente para depois haver uma proposta de trabalho para uma empresa de webdesign

Link para o comentário
Compartilhar em outros sites

  • 0

Pessoal, é besteira... não caiam na desse cara :)

http://guj.com.br/posts/list/47837.java

http://www.portaljava.com/home/modules.php...pic&t=35118

http://www.javafree.org/javabb/viewtopic.jbb?t=860474

olhem só que curioso: :D

http://ip.dcti.iscte.pt/enunciados/TF.html

Ele foi em todos os fóruns que ele pôde ir pedindo ajuda para trabalho de escola e inventou uma história furada de proposta de emprego de trabalho para europo

notem como o fmeyer debulha por completo o cara: http://guj.com.br/posts/list/60/47837.java

Search and Destroy. ;)

Parabéns João :D

Você criou o "faça meu trabalho de escola, por favoooooooooooor" mais criativo de todos os tempos :)

Sinceramente cara >D

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...