Por favor, me ajudem!

Eu sou bolsista e não consigo fazer meu projeto final do jeito que meu professor deseja, eh simples, mas não pra mim, eh uma mastermind, mas nao encontrei nada semelhante na internet, alguém me ajude por favor, eu soh tou apelando porque eu jah tentei muito mas não consigo!!! Eu tou muito cansada… sem ter ajuda…Alguém me ajude!!

Seja mais especifica, o qe é para ser feito no projeto qe vc tem dúvidas ?

Eh o seguinte eu tenho que criar um jogo mastermind, este jogo tem que ter nivel de jogo iniciante, médio, avançado, iniciante eh um jogo com senha secreta de 3 números, médio de quatro números e avançado 5 números.

Além disso tem estratégia de pontuação, depois que ele perguntar que nivel a pessoa deseja jogar, perguntar a estratégia que deseja jogar, as estrategias são padrão, simplificada e expert, sabendo que os palpites bons são aqueles fazem parte da senha secreta, mas que não estão na posição certa e os ótimos são os que estão na posição certa, os os inexistentes como o nome jah sugere não fazem parte da senha.

Na estretagia de pontuação padrao, vc soma 1 a pontuacao por cada numeros bom e dois para cada número errado e 0 para ótimo, na simplificada vc soma 10 para cada bom e vinte para cada inexistente e 0 para cada ótimo, na expert para cada bom soma 1, para cada otimo remove 1, para cada inexistente, ele multiplica a pontuação atual por 2, o jogo tem que ser dividido assim a interface Estratégia de pontuação, que extende para 3 classes a padrão, a simplificada e expert, um enum de nível de jogo, uma classe chamada jogo que tem que iniciar o jogo, sortear os numeros e compará-los e um classe que srva como main, mas que não seja ele.

Minhas dúvidas são:

como posso fazer esse “main” sem ser main?

e como faço a classe jogo?

Você já tem alguma coisa feita?

Pode postar?
A classe “Jogo” que você refere seria o enum?

Att

Enum dos Niveis:

public enum Nivel {
INICIANTE(3) {
@Override
public String toString() {
return “Iniciante”;
}

},
INTERMEDIARIO(4) {
	@Override
	public String toString() {
		return "Intermediário";
	}
},
EXPERT(5) {
	@Override
	public String toString() {
		return "Expert";
	}
};

private int quantidade;

public int getQuantidade() {
	return quantidade;
}

public void setQuantidade(int quantidade) {
	this.quantidade = quantidade;
}

private Nivel(int quantidade) {
	this.quantidade = quantidade;
}

Interface de Estrategia de Pontuação:

public interface EstrategiaDePontuacao {

public int errando (int bons, int otimos, int inexistentes);

}

Uma classe de Estrategia Expert:
public class EstrategiaExpert implements EstrategiaDePontuacao{

@Override
        public int errando(int bons, int otimos, int inexistentes) {
return ((bons + (inexistentes * 2)) - otimos);
	}

}
Uma classe de Estrategia Padrao:
public class EstrategiaPadrao implements EstrategiaDePontuacao {

@Override
public int errando(int bons, int otimos, int inexistentes) {
return ((bons * 1) + (inexistentes * 2));
		
	}

}
Uma classe de Estrategia Simplificada:
public class EstrategiaSimplificada implements EstrategiaDePontuacao{

@Override
public int errando(int bons, int otimos, int inexistentes) {
		
	return ((bons * 10) + (inexistentes * 10));
	

	
	
}

}

Ele quer uma classe pra jogo, eu peguei um jogo bem semelhante de uma cara do período passado, mas ele não quer desse jeito, não quer que armazene o palpite e quer apenas um array, e o nesse o cara colocou o metodo de sortear os numeros e do palpite no enum de nível, ele quer na classe jogo.

Exemplo:

public class Jogo {
private Nivel nivel;
private TipoPontuacao pontuacao;
private ArrayList sorteados;
private ArrayList palpites;
private Scanner sc = new Scanner(System.in);

public Partida(Nivel nivel, TipoPontuacao pontuacao) {

	this.nivel = nivel;
	this.pontuacao = pontuacao;
	this.sorteados = nivel.sorteiaNumeros();
}

/*
 * Este Método inicia uma nova partida.
 */
public int iniciaPartida() {
	// Enquanto acertou for false vai rolar os pedidos.
	boolean acertou = false;
	int otimos = 0, bons = 0, errados = 0, contador = 0, maisPonto = 0, total = 0;

	/*
	 * Esse trecho do codigo colocamos so para verificar o numero sorteado,
	 * tipo um teste.
	 */
	for (Integer sorteado : sorteados) {
		System.out.println(sorteado);
	}
	/*
	 * Apartir daqui começa a verificação dos palpites, que sao recebidos
	 * atravez do metodo arriscaPalpite la na enum nivel.
	 */
	while (!acertou) {
		palpites = nivel.arriscaPalpite();
		acertou = true;
		otimos = bons = errados = 0;
		contador++;

		System.out.print("Seus Palpites: (");
		for (int i = 0; i < nivel.getQuantidade(); i++) {
			if (sorteados.indexOf(palpites.get(i)) < 0) {
				errados++;
				acertou = false;
			} else if (sorteados.get(i).equals(palpites.get(i))) {
				otimos++;
			} else {
				bons++;
				acertou = false;
			}
			System.out.print(" " + palpites.get(i));
		}
		System.out.print(" ) Resultado: ");
		if (acertou) {
			// Em casdo do usuario acertar os numero aparecera essa
			// menssagen.
			System.out.println("Parabens, Você Acertou!!!");
			System.out.println("Pontuação total: " + total);
			System.out.println("Quantidade de tentativas: " + contador);
		} else {
			// Caso o usuario nao acerta ira aparecer essa messagem.
			maisPonto = pontuacao.getMaisPontos(bons, errados);
			System.out.println("Otimos: " + otimos + " Bons: " + bons
					+ " Errados: " + errados + " Pontuação: " + total
					+ " + " + maisPonto + " = " + (total + maisPonto));
			total = total + maisPonto;
		}
	}
	
	int opcao = 0;
	
	do {
		System.out.println("#####PRÓXIMO PASSO#####");
		System.out.println("[1] - INICIAR UM NOVO JOGO");
		System.out.println("[2] - SALVAR PONTUAÇÃO E ENCERRAR PARTIDA");

		opcao = sc.nextInt();

		switch (opcao) {
		case 1:
			this.sorteados = nivel.sorteiaNumeros();
			return iniciaPartida();
		case 2:
			return total;
		default:
			opcao = 0;
		}

	} while (opcao != 0);
	return 0;
}

}

Então…

só uma sugestão para quando você for postar códigos, utilizar a tag [ code]codigo aqui[ /code] (evidentemente sem os espaços)
Pelo o que entendi, você tem que ter uma classe main, onde você vai “perguntar” ao usuário qual o nível de jogo ele quer, correto?
Sua dúvida é como você vai fazer essa ponte?
Ou então qual é sua dúvida exatamente?

Fico no aguardo.

isso minha duvida eh essa “ponte” como vc diz e também que o método desafio tem que estar na classe do jogo e o desafio tem que ser correspondente ao números de dígitos de cada nível, iniciante três dígitos, médio quatro dígitos, avançado cinco digitos.

public ArrayList desafio() {
ArrayList numeros = new ArrayList();

	for (int i = 0; i <= 9; i++) {
		numeros.add(i);
	}

	Collections.shuffle(numeros);

	for (int i = 9; i >= this.quantidade; i--) {
		numeros.remove(i);
	}
	return numeros;
}

como esse acima, soh que esse tah dentro de nível, “this.quantidade” , como eu faço pra sortear no jogo de acordo com cada nível e criar um main “chamando” tudo isso?

Vamos por parte… :slight_smile:

Fiz um exemplo pra ver se você entende:

public class Jogo {
	
	private int numeroDigitado;
	public Jogo() {
		//construtor padrão
	}
	public int getNumeroDigitado() {
		return numeroDigitado;
	}
	public void setNumeroDigitado(int numeroDigitado) {
		this.numeroDigitado = numeroDigitado;
	}
}

import java.util.Scanner;

public class Main {
	
	static Jogo jogo = new Jogo(); 
	//instanciação da classe sendo obrigatório para acessar métodos dessa classe
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		System.out.println("Qual o número que você deseja tratar?");
		jogo.setNumeroDigitado(sc.nextInt());
		
		System.out.println("O valor digitado foi: " + jogo.getNumeroDigitado());
	}
}

Você tem que ter na sua classe jogo um método onde você pode trabalhar em cima do valor que você quer. Simples assim.
E claro, se você for fazer tudo dentro do main, tenha atenção para o modificador do main, o static.

Dúvida sanada ou não era isso?

Por favor, ao postar tópicos, dê um título descritivo. O título “Por favor, me ajudem!!”, além de parecer que vc está chamando a atenção ao implorar ajuda, não dá qualquer dica para quem saberia do seu problema entrar no tópico. Assim você atrai menos usuários.

Além disso, ao postar códigos, por favor, siga essas dicas:

[quote=TreTaA]Vamos por parte… :slight_smile:

Fiz um exemplo pra ver se você entende:

public class Jogo {
	
	private int numeroDigitado;
	public Jogo() {
		//construtor padrão
	}
	public int getNumeroDigitado() {
		return numeroDigitado;
	}
	public void setNumeroDigitado(int numeroDigitado) {
		this.numeroDigitado = numeroDigitado;
	}
}

import java.util.Scanner;

public class Main {
	
	static Jogo jogo = new Jogo(); 
	//instanciação da classe sendo obrigatório para acessar métodos dessa classe
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		System.out.println("Qual o número que você deseja tratar?");
		jogo.setNumeroDigitado(sc.nextInt());
		
		System.out.println("O valor digitado foi: " + jogo.getNumeroDigitado());
	}
}

Você tem que ter na sua classe jogo um método onde você pode trabalhar em cima do valor que você quer. Simples assim.
E claro, se você for fazer tudo dentro do main, tenha atenção para o modificador do main, o static.

Dúvida sanada ou não era isso?[/quote]

Era isso sim, jah vai me ajudar muito!! Eu fico muito grata pela atenção e por vc ter me ajudado!!

Ok então :slight_smile:

Se precisar de mais alguma coisa, estamos aí :slight_smile:

Att

[quote=ViniGodoy]Por favor, ao postar tópicos, dê um título descritivo. O título “Por favor, me ajudem!!”, além de parecer que vc está chamando a atenção ao implorar ajuda, não dá qualquer dica para quem saberia do seu problema entrar no tópico. Assim você atrai menos usuários.

Além disso, ao postar códigos, por favor, siga essas dicas:

E quanto ao seu comentário, eu estava implorando por ajuda sim, pode não ser e ateh concordo que não seja o melhor título, mas sem dúvida eh o mais verdadeiro e ainda existe muito gente legal e que me ajudou como vc pode notar. E quanto ao codigo me desculpe!!

Verdadeiro ou não regras são regras.

Oi Josy.

Eu sou moderador do fórum e é meu papel orientar os usuários quanto à forma correta de postar. Veja, implorar por ajuda é considerado uma falta de etiqueta. Você não vai a um restaurante e sai comendo com as mãos e arrotanto, sai? Da mesma forma, não se pressiona usuários de fóruns a uma resposta rápida, pois todos aqui estão ajudando voluntariamente.

Além disso, um título descritivo pode atrair mais usuários e, portanto, tornar mais rápida e eficiente as respostas em seu tópico.

Por isso, por favor, nos próximos posts, procure se adequar, ok?