Amigo, si no pones las etiquetas code no se entiende mucho por favor. Es una regla del foro y tiene sus razones. Modifica tu mensaje y selecciona el código y fíjate que hay un combobox que dice GeShi seleccionas Java y ya esta. Todos felices.
Cuando hagas eso intentare ver tu código porque la verdad es que así como esta me da pereza.
Modifico. Gracias por agregar las etiquetas code, leí las reglas así que ahora voy a intentar ayudarte (intentare hacerlo sin código por ahora, pero si realmente te ves superado puedo intentar ayudarte un poco mas. Pero recuerda que estos tipos de ejercicios necesitan que tu emplees la lógica y así aprendes.
Primero que todo esos
System.out.println("") para hacer una linea en blanco no gustan nada, mejor pon un
\n:
System.out.println("Bienvenido al juego del MasterMind\n"); // El \n es un salto de linea
Existen mas secuencias de escape como estas:
\b, \t, \r, \n, \', \", \\. Puedes ver que hace cada una
aquíTambien en el ciclo for de pedir solucion, te recomiendo remplazar el
i = i + 1 por un
i++ (que quiere decir que le sumas uno) en caso de sumar de dos en dos puedes utilizar
i+=2 que es lo mismo que
i = i + 2. Si quieres mas info de esto busca en google por operadores aritmeticos y operadores de asignacion.
Ten cuidado, ya que nunca guardaste lo ingresado por el usuario, ya que lo pásate como parámetro directamente a mostrar solución, supongo que estabas haciendo pruebas, recuerda cambiarlo.
Valida en pedirSolucion lo ingresado por el usuario, ya que yo podría ingresarte cualquier letra, y te recomiendo guardar los valores en un char[], te sera mas fácil trabajar con ellos.
me puedes explicar en que usaras el metodo "estaRepetido"? Respecto a este método te recomendaría cambiar el ciclo while por algo así:
for(i = 0; i < clave.length; i++){
if(color == clave[i]) {
repetido = true;
break;
}
}
De esta manera es mas fácil de entender. ^^
En generar clave solo tienes que crear un char[4] de las letras M, R, N, A, Z, V no?
public static char[] generarClave(){
char[] posiblesClaves = new char[]{'M','R','N','A','Z','V'};
char [] clave = new char[4];
int numeroRandom;
for(int i = 0;i<clave.length;i++){
numeroRandom = (int)rnd.nextDouble()*posiblesClaves.length;
clave[i] = posiblesClaves[numeroRandom];
}
return clave;
}
Así sera mas facil de entender creo yo. (verifica lo del numeroRandom que no recuerdo muy buen lo de generar números random, pero creo que entrega un numero de entre 0 5 (que es la cantidad de letras posibles))
Bien, ahora si para verificar cuantos coinciden no te entregare el código completo solo te explicare una posible manera.
Crea dos ciclos for anidados, el exterior sera el indice de colores generados por el programa y el interior sera el de colores ingresados por el usuario
for(int a = 0;a<generados.lengt;a++){
for(int b = 0; b<ingresdos.lengt; b++){
//Con esos dos indices acá podrás efectuar una comparación de cada elemento.
}
}
Crea dos contadores, utiliza uno para cuando esta la posición y color correcto y otro para cuando el color esta correcto. Espero que te sea de ayuda, y suerte. (cualquier duda dime)