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

Pra quando que é o trabalho? :stuck_out_tongue: hehehe Boa sorte…

nao tem tempo mas qt mais rapido melhor

Joao, quais duvidas voce tem em relacao ao problema passado?

Rafael

[quote=Rafael Steil]Joao, quais duvidas voce tem em relacao ao problema passado?

Rafael[/quote]

e um desafio para uma empresa de webdesign que está interessada em fazer alguns sites de jogos online.

hmmm…

mas o que vc quer?

Que a gente faça o desafio pra você entregar pra eles?

[quote=lavh]hmmm…

mas o que vc quer?

Que a gente faça o desafio pra você entregar pra eles?[/quote]

?? nao… eu estou encarregue de arranjar alguem que perceba java

o ordenado será perto de 1500/2500? por mes dependendo dos conhecimentos e da rapidez com que trabalha

Dificil de colar essa hein?! :wink:

Rafael

[quote=Rafael Steil]Dificil de colar essa hein?! :wink:

Rafael[/quote]

Atão porque? A empresa já tem uma vasta lista de futuros clientes… que iram pagar mais de 10.000? por projecto.

e qem for resolver isto pra ti ganha quanto?

ahahahahahahahahahahahahahahahahahah
ahahahahhhhhhahahahahahaha
ahhahahahahahahahaha
hahahahahahaha
hahahahaha
hahahah
ahaha
ahah
ah

se é verdade, nem quero trabalhar em uma empresa que “MANDA” alguem procurar java programers em foruns como este… lol… PIADA…
ta me parecendo aquele, deposete 1k e ganhe emprego garantido ! auahuahauahauahu…procure no source forge que ganhará mais, ninguem vai fazer seu trabalho aqui, poste somente duvidas

putz… joga isso lá pro off-topic, esse carinha tá de zueira, não é possível.

Fiz um trabalho tão igual no CEFET de Curitiba, que até me assustei. Você por acaso não é de lá. :lol:

Eu acho que esse problema pode ser resolvido com uma rede de neurônios.

[quote=diegoloko]ahahahahahahahahahahahahahahahahahah
ahahahahhhhhhahahahahahaha
ahhahahahahahahahaha
hahahahahahaha
hahahahaha
hahahah
ahaha
ahah
ah

se é verdade, nem quero trabalhar em uma empresa que “MANDA” alguem procurar java programers em foruns como este… lol… PIADA…
ta me parecendo aquele, deposete 1k e ganhe emprego garantido ! auahuahauahauahu…procure no source forge que ganhará mais, ninguem vai fazer seu trabalho aqui, poste somente duvidas[/quote]

A empresa não “MANDA” procurar num forum. Apenas sugeriram eu por um quebra cabeças fácil num forum e contactar que o o resolve-se.

A empresa não “MANDA” procurar num forum. Apenas sugeriram eu por um quebra cabeças fácil num forum e contactar que o o resolve-se.[/quote]

Bom dia!

Odeio ser eu a ter que fazer isso, mas antes de sair postando desafios, diga a intenção, contate quem se interessar pessoalmente. Não vai ser assim que conseguirás algo.
E um conselho pessoal, compre uma gramática de língua portuguesa. Estudar um pouco de português não mata ninguém e ainda preserva a beleza de tal linguagem.

Até!

A empresa não “MANDA” procurar num forum. Apenas sugeriram eu por um quebra cabeças fácil num forum e contactar que o o resolve-se.[/quote]

Bom dia!

Odeio ser eu a ter que fazer isso, mas antes de sair postando desafios, diga a intenção, contate quem se interessar pessoalmente. Não vai ser assim que conseguirás algo.
E um conselho pessoal, compre uma gramática de língua portuguesa. Estudar um pouco de português não mata ninguém e ainda preserva a beleza de tal linguagem.

Até![/quote]

Mas a ideia é quem se interessar contactar-me… ja fui contactado por 2 pessoas… uma delas tinha o problema mal feito… a outra estava 5 estrelas. E sim resulta embora seja um problema relativamente simples dá para ver os habitos e metodos de programação de cada utilizador.

Mas a ideia é quem se interessar contactar-me… ja fui contactado por 2 pessoas… uma delas tinha o problema mal feito… a outra estava 5 estrelas. E sim resulta embora seja um problema relativamente simples dá para ver os habitos e metodos de programação de cada utilizador. [/quote]

Sua idéia poderia ser essa, mas a maneira que propuseste não é das mais aceitáveis. Se logo no começo tivesse dito que era para angariar mão-de-obra, muito menos gente viria aqui para fazer troça de ti.
E fóruns, na minha opinião, não são os melhores lugares para se recrutar alguém.

Até!

Mas a ideia é quem se interessar contactar-me… ja fui contactado por 2 pessoas… uma delas tinha o problema mal feito… a outra estava 5 estrelas. E sim resulta embora seja um problema relativamente simples dá para ver os habitos e metodos de programação de cada utilizador. [/quote]

Sua idéia poderia ser essa, mas a maneira que propuseste não é das mais aceitáveis. Se logo no começo tivesse dito que era para angariar mão-de-obra, muito menos gente viria aqui para fazer troça de ti.
E fóruns, na minha opinião, não são os melhores lugares para se recrutar alguém.

Até![/quote]

Para mim são… alguns dos funcionários de empresas em que trabalhei até tinham cursos superiores… e tinham o emprego por terem o curso superior… mas depois mandava-se fazer um exercicio como esse… e ja nao se lembravam de pevas… e as vezes nem isso sabiam