Fórum Jogo da senha- java #512638
04/03/2015
0
Jogo da Senha
O jogo funciona da seguinte maneira: o jogador deve tentar adivinhar 5 números
que existem em um conjunto de 30 valores (a senha) escolhidos entre 1 e 100.
No inicio do jogo, o sistema escolhe uma senha que é composta por 30 números
inteiros únicos escolhidos aleatoriamente entre 1 e 100. A cada tentativa, o jogador
submete um palpite composto de 5 números únicos. Para cada tentativa, o sistema
do jogo retorna quantos números o jogador acertou, mas não quais números.
Quando o jogado advinha os 5 números, o jogo então imprime a senha completa
com os 30 valores que haviam sido escolhidos.
ETAPA 1) Desenvolva uma classe chamada JogoDaSenha que armazena em uma
array de inteiros, 30 valores aleatórios únicos escolhidos entre [1,100]. Esses
valores podem ser gerados com o auxílo do método random() da classe Math,
conforme exemplo abaixo:
int valor = 1 + (int) (Math.random()*100);
Para garantir que os valores sejam únicos (ou seja, não se repetem), a cada novo
valor gerado, deve-se pesquisar o array de inteiros para garatir que ele ainda não
tenha ocorrido. Caso isso se verifique, o novo valor é armazenado na próxima
posição livre do array; caso contrário ele é descartado.
Leandro Souza
Curtir tópico
+ 0Posts
04/03/2015
Eduardo Pessoa
Gostei + 0
04/03/2015
Ronaldo Lanhellas
Jogo da Senha
O jogo funciona da seguinte maneira: o jogador deve tentar adivinhar 5 números
que existem em um conjunto de 30 valores (a senha) escolhidos entre 1 e 100.
No inicio do jogo, o sistema escolhe uma senha que é composta por 30 números
inteiros únicos escolhidos aleatoriamente entre 1 e 100. A cada tentativa, o jogador
submete um palpite composto de 5 números únicos. Para cada tentativa, o sistema
do jogo retorna quantos números o jogador acertou, mas não quais números.
Quando o jogado advinha os 5 números, o jogo então imprime a senha completa
com os 30 valores que haviam sido escolhidos.
ETAPA 1) Desenvolva uma classe chamada JogoDaSenha que armazena em uma
array de inteiros, 30 valores aleatórios únicos escolhidos entre [1,100]. Esses
valores podem ser gerados com o auxílo do método random() da classe Math,
conforme exemplo abaixo:
int valor = 1 + (int) (Math.random()*100);
Para garantir que os valores sejam únicos (ou seja, não se repetem), a cada novo
valor gerado, deve-se pesquisar o array de inteiros para garatir que ele ainda não
tenha ocorrido. Caso isso se verifique, o novo valor é armazenado na próxima
posição livre do array; caso contrário ele é descartado.
Difícil de lhe ajudar sem que você apresente o que já fez, sua ideia. Estamos aqui para lhe ajudar mas sem nenhum código seu fica difícil.
Gostei + 0
04/03/2015
Eduardo Pessoa
Gostei + 0
05/03/2015
Leandro Souza
Jogo da Senha
O jogo funciona da seguinte maneira: o jogador deve tentar adivinhar 5 números
que existem em um conjunto de 30 valores (a senha) escolhidos entre 1 e 100.
No inicio do jogo, o sistema escolhe uma senha que é composta por 30 números
inteiros únicos escolhidos aleatoriamente entre 1 e 100. A cada tentativa, o jogador
submete um palpite composto de 5 números únicos. Para cada tentativa, o sistema
do jogo retorna quantos números o jogador acertou, mas não quais números.
Quando o jogado advinha os 5 números, o jogo então imprime a senha completa
com os 30 valores que haviam sido escolhidos.
ETAPA 1) Desenvolva uma classe chamada JogoDaSenha que armazena em uma
array de inteiros, 30 valores aleatórios únicos escolhidos entre [1,100]. Esses
valores podem ser gerados com o auxílo do método random() da classe Math,
conforme exemplo abaixo:
int valor = 1 + (int) (Math.random()*100);
Para garantir que os valores sejam únicos (ou seja, não se repetem), a cada novo
valor gerado, deve-se pesquisar o array de inteiros para garatir que ele ainda não
tenha ocorrido. Caso isso se verifique, o novo valor é armazenado na próxima
posição livre do array; caso contrário ele é descartado.
ETAPA 2) Acrescente a sua classe um método fazerTentativa(), o qual recebe
como parâmetros 5 inteiros, que representam a tentantiva do jogador, e retorna um
valor inteiro que corresponde a quantidade de valores que o jogador advinhou
corretamente.
ETAPA 3) Acrescente a sua classe um método getSenha() que retorna um String
contendo todos os valores da senha, caso o jogo tenha sido vencido, ou a
mensagem “Você ainda não advinhou a senha!”, caso o jogador ainda não tenha
tido sucesso em adivinhar 5 números que fazem parte da senha.
ETAPA 4) Estamos interessados em estudar a eficiência do JogoDaSenha, em
particular sobre a pesquisa. Modifique sua classe de forma que ela contabilize
quantas comparações foram realizadas até o momento para implementar a
ATIVIDADE ACADÊMICA: 60545 -Laboratório II
Ano/Sem: 2015/1 Horário: 43 (quarta-feira/noite)
Professor: Luciano Cavalheiro da Silva E-mail: lcavalheiros@unisinos.br
pesquisa dentro do método fazerTentativa(). O valor desse contador ficará
disponível através de um método getContadorPesquisa() da classe JogoDaSenha.
Jogo da Senha Reloaded
ETAPA 5) Implemente uma nova versão do jogo da senha criando uma classe
JogoDaSenhaReloaded, onde os valores da senha são mantidos ordenados e
modifique o código da pesquisa para tirar proveito dessa ordenação.
Para ordenar os valores do array da senha utilize o método Arrays.sort() da API
Java.
Reflita
ETAPA 6) Crie uma classe de teste que leia valores do teclado e jogue algumas
vezes cada um dos jogos (normal e reloaded). Para cada um dos jogos, verifique o
valor do contador de pesquisa após conseguir advinhar a senha.
abaixo vou colocar o que eu já fiz do codigo
Gostei + 0
05/03/2015
Leandro Souza
public class JogoDaSenha {
private static final int TAM_SENHA = 30;
private int[] senha;
public JogoDaSenha() {
// instanciar o array
this.senha = new int[TAM_SENHA];
// laco criando numeros randomicos e atribuindo para o array
for (int i=0; i<=TAM_SENHA; ) {
senha[i] = sortearValorUnico();
}
}
public int fazerTentativa(int[] tentativa) {
// validar parametros
if (tentativa.length != 5) {
System.exit(1);
}
int acertos = 0;
// percorrer array de tentativas
for (int i=0; i<tentativa.length; i++) {
// comparar se valor atual existe na senha
if (acertou(tentativa[i])) {
// se existir, contabiliza acerto.
acertos++;
}
}
// se acertou 5, ganhou o jogo
// se n�o, retorna numero de acertos.
if ( acertos == 5 ) {
ganhouJogo();
return 5;
}
else {
return acertos;
}
}
private void ganhouJogo() {
// imprimir todos os valores da senha
System.out.println("Voce ganhou! A senha �:");
for (int i=0; i<senha.length; i++) {
System.out.print(" "+senha[i]);
}
System.out.println("Tchau!");
// terminar o programa
System.exit(0);
}
private boolean acertou(int t) {
// percorrer senha e verificar se t existe na senha
for (int i=0; i<senha.length; i++) {
if (senha[i] == t)
return true;
}
// se n�o encontrado, retorna falso
return false;
}
private int sortearValorUnico() {
int valor;
do {
valor = geraNovoValor();
} while (! ehUnico(valor));
return valor;
}
private boolean ehUnico(int valor) {
for (int i=0; i<TAM_SENHA; i++) {
if (senha[i] == valor) {
return false;
}
else if (senha[i] == 0) break;
}
return true;
}
/**
* Gera valor randomico entre [1,100].
* @return
*/
private int geraNovoValor() {
return (int) (1 + Math.random() *100);
}
}
faltou fazer ainda fazer os métodos getsenha(), getcontadorpesquisa(), a classe de testes e a classe JogoDaSenhaReloaded
desculpem pela demora para colocar o código, fiquem a vontade para comentar e criticar também, só assim vou aprender
Obrigado
Gostei + 0
05/03/2015
Leandro Souza
private static final int TAM_SENHA = 30;
private int[] senha;
public JogoDaSenha() {
// instanciar o array
this.senha = new int[TAM_SENHA];
// laco criando numeros randomicos e atribuindo para o array
for (int i=0; i<=TAM_SENHA; ) {
senha[i] = sortearValorUnico();
}
}
public int fazerTentativa(int[] tentativa) {
// validar parametros
if (tentativa.length != 5) {
System.exit(1);
}
int acertos = 0;
// percorrer array de tentativas
for (int i=0; i<tentativa.length; i++) {
// comparar se valor atual existe na senha
if (acertou(tentativa[i])) {
// se existir, contabiliza acerto.
acertos++;
}
}
// se acertou 5, ganhou o jogo
// se n�o, retorna numero de acertos.
if ( acertos == 5 ) {
ganhouJogo();
return 5;
}
else {
return acertos;
}
}
private void ganhouJogo() {
// imprimir todos os valores da senha
System.out.println("Voce ganhou! A senha �:");
for (int i=0; i<senha.length; i++) {
System.out.print(" "+senha[i]);
}
System.out.println("Tchau!");
// terminar o programa
System.exit(0);
}
private boolean acertou(int t) {
// percorrer senha e verificar se t existe na senha
for (int i=0; i<senha.length; i++) {
if (senha[i] == t)
return true;
}
// se n�o encontrado, retorna falso
return false;
}
private int sortearValorUnico() {
int valor;
do {
valor = geraNovoValor();
} while (! ehUnico(valor));
return valor;
}
private boolean ehUnico(int valor) {
for (int i=0; i<TAM_SENHA; i++) {
if (senha[i] == valor) {
return false;
}
else if (senha[i] == 0) break;
}
return true;
}
/**
* Gera valor randomico entre [1,100].
* @return
*/
private int geraNovoValor() {
return (int) (1 + Math.random() *100);
}
public String getSenha(){
int qtdAcertos = 0;
String aviso = null;
if(qtdAcertos== 5){
for(int i = 0; i<senha.length; i++ ){
aviso = " " + senha[i];
}
return aviso;
}
return "VOCÊ AINDA NÃO ADVINHOU A SENHA!";
}
public int getContadorPesquisa(){
int contadorPesquisa = 0;
return contadorPesquisa;
}
}
][/code]
adicionei os métodos gets
Gostei + 0
07/03/2015
Ronaldo Lanhellas
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)