GARANTIR DESCONTO

Fórum Jogo da senha- java #512638

04/03/2015

0

Pessoal tenho dúvidas de como começar esse exercício:

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

Leandro Souza

Responder

Posts

04/03/2015

Eduardo Pessoa

Poxa, achei meio complicado de entender e não consegui achar nenhum exemplo parecido.
Responder

Gostei + 0

04/03/2015

Ronaldo Lanhellas

Pessoal tenho dúvidas de como começar esse exercício:

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.
Responder

Gostei + 0

04/03/2015

Eduardo Pessoa

Achei complicado tambem, posta o código.
Responder

Gostei + 0

05/03/2015

Leandro Souza

pessoal segue a descrição completa do exercício:

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
Responder

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
Responder

Gostei + 0

05/03/2015

Leandro Souza

[codepublic 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);

}
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
Responder

Gostei + 0

07/03/2015

Ronaldo Lanhellas

Eu mudaria a estrutura do método getSenha(), você está retornando um "ERRO" através de uma String. O melhoria seria você trabalhar com um try-catch, ou valores booleanos.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar