/*
10) La maquina elegirá cuatro colores (Rojo, Verde, Azul o Negro) al azar, repetidos o no, en un determinado orden.
A continuacion el jugador debera acertar los colores en el orden exacto, si el primer color que eligio la maquina coincide con el primero del jugador, se mostrara un 1, si no coincide, pero el color del jugador esta presente en uno de los tres colores restantes de la maquina, se mostrara un 0. En caso contrario no se mostrara nada.
Así sucesivamente con el resto de colores.
De forma que si la maquina elige: “N V A A”, y el usuario: “R R A N”, se mostrara: “1 0”, el 1 por la A que coincide, y el 0 por la N que esta presente en la combinacion de la maquina.
Otros ejemplos:
La maquina elige “R R N V”:
Usuario: Resultado: Significado:
V N A R 0 0 0 Tres colores estan y uno no.
R N A R 1 0 0 Uno coincide, dos estan y uno no.
R A N N 1 1 Dos coinciden, dos no estan.
R V N R 1 1 0 0 Dos coinciden, dos estan.
R R N V 1 1 1 1 Los cuatro colores coinciden.
http://es.wikipedia.org/wiki/Mastermind
*/
//Se inician las variables
var dado;
var ColMaquina="";
var ColUsu="";
var ColUsuario="";
var ColUsuario2;
var resultado="";
var uno="";
var dos="";
var tres="";
var cuatro="";
var intentos=0;
var NumExactos=0;
var NumPresentes=0;
//La maquina elije cuatro colores y los guarda todos concanetados en una variable.
//Para que los colores sean mas aleatorios, cada color tiene dos valores del dado, y el dado es de 8 caras.
for (var i=0;i<4;i++){
dado=Math.floor(Math.random()*8);
if (dado==0 || dado==4){
ColMaquina = ColMaquina + "R";
}
else if (dado==1 || dado==5){
ColMaquina = ColMaquina + "V";
}
else if (dado==2 || dado==6){
ColMaquina = ColMaquina + "A";
}
else if (dado==3 || dado==7){
ColMaquina = ColMaquina + "N";
}
}
alert(ColMaquina);
//Se muestra ayuda sobre el juego si el usuario asi lo decide
if(confirm("Necesita ayuda para jugar?")){
alert("La maquina elegirá cuatro colores (Rojo, Verde, Azul o Negro) al azar, repetidos o no, en un determinado orden.\n\nA continuacion el jugador debera acertar los colores en el orden exacto, si el primer color que eligio la maquina coincide con el primero del jugador, se mostrara un 1, si no coincide, pero el color del jugador esta presente en uno de los tres colores restantes de la maquina, se mostrara un 0. En caso contrario no se mostrara nada.\nAsí sucesivamente con el resto de colores.\n\n\nDe forma que si la maquina elige: \”N V A A\”, y el usuario: \”R R A N\”, se mostrara: \”1 0\”, el 1 por la A que coincide, y el 0 por la N que esta presente en la combinacion de la maquina.\n\n\nOtro ejemplo:\nLa maquina elige \”R R N V\”:\n\nUsuario: Resultado: Significado:\nV N A R 0 0 0 Tres colores estan y uno no.\nR N A R 1 0 0 Uno coincide, dos estan y uno no.\nR A N N 1 1 Dos coinciden, dos no estan.\nR V N R 1 1 0 0 Dos coinciden, dos estan.\nR R N V 1 1 1 1 Los cuatro colores coinciden.\n");
}
//Comienza un do while que no parara hasta que el usuario acierte la combinacio de colores de la maquina
do {
//Ahora pedimos al usuario que elija sus cuatro colores y que se guarden en una variable
for (var i=0;i<4;i++){
do {
ColUsu=prompt("Elija la " + (i+1) + "º inicial de sus cuatro colores:\n\nR - Rojo\nV - Verde\nA - Azul\nN - Negro").toUpperCase();
} while (ColUsu!="R" && ColUsu!="V" && ColUsu!="A" && ColUsu!="N");
ColUsuario = ColUsuario + ColUsu;
}
//Ahora se hace la comparacion de colores entre la maquina y los que ha elegido el usuario:
//Primera letra de la maquina con las letras del usuario:
if (ColMaquina.charAt(0) == ColUsuario.charAt(0)){
uno = "1";
}
else {
if (ColMaquina.charAt(0) == ColUsuario.charAt(1)){
dos = "0";
}
else {
if (ColMaquina.charAt(0) == ColUsuario.charAt(2)){
tres = "0";
}
else {
if (ColMaquina.charAt(0) == ColUsuario.charAt(3)){
cuatro = "0";
}
}
}
}
//Segunda letra de la maquina con las letras del usuario:
if (ColMaquina.charAt(1) == ColUsuario.charAt(1)){
dos = "1";
}
else {
if (ColMaquina.charAt(1) == ColUsuario.charAt(0)){
if (uno != "1"){
uno = "0";
}
}
else {
if (ColMaquina.charAt(1) == ColUsuario.charAt(2)){
if (tres != "1"){
tres = "0";
}
}
else {
if (ColMaquina.charAt(1) == ColUsuario.charAt(3)){
if (cuatro != "1"){
cuatro = "0";
}
}
}
}
}
//Tercera letra de la maquina con las letras del usuario:
if (ColMaquina.charAt(2) == ColUsuario.charAt(2)){
tres = "1";
}
else {
if (ColMaquina.charAt(2) == ColUsuario.charAt(0)){
if (uno != "1"){
uno = "0";
}
}
else {
if (ColMaquina.charAt(2) == ColUsuario.charAt(1)){
if (dos != "1"){
dos = "0";
}
}
else {
if (ColMaquina.charAt(2) == ColUsuario.charAt(3)){
if (cuatro != "1"){
cuatro = "0";
}
}
}
}
}
//Cuarta letra de la maquina con las letras del usuario:
if (ColMaquina.charAt(3) == ColUsuario.charAt(3)){
cuatro = "1";
}
else{
if (ColMaquina.charAt(3) == ColUsuario.charAt(0)){
if (uno != "1"){
uno = "0";
}
}
else {
if (ColMaquina.charAt(3) == ColUsuario.charAt(1)){
if (dos != "1"){
dos = "0";
}
}
else {
if (ColMaquina.charAt(3) == ColUsuario.charAt(2)){
if (tres != "1"){
tres = "0";
}
}
}
}
}
//Dentro de la variable resultado, se agrupan primero los 1s y luego los 0s.
//Primero los unos
if (uno == 1){
resultado = resultado + uno
}
if (dos == 1){
resultado = resultado + dos
}
if (tres == 1){
resultado = resultado + tres
}
if (cuatro == 1){
resultado = resultado + cuatro
}
//Ahora los ceros
if (uno == 0){
resultado = resultado + uno
}
if (dos == 0){
resultado = resultado + dos
}
if (tres == 0){
resultado = resultado + tres
}
if (cuatro == 0){
resultado = resultado + cuatro
}
//Se cuentan los 1s y 0s para saber cuantos colores son exactos o cuantos estan presentes.
for (var i=0;i<4;i++){
if (resultado.charAt(i) == "1"){
NumExactos++
} else if (resultado.charAt(i) == "0"){
NumPresentes++
}
}
//Se muestra el resultado de la comparacion
if (ColMaquina == ColUsuario && intentos==0){
alert("Que potra tiene, ha acertado la combinacion a la primera, enhorabuena!!!");
}
else if (ColMaquina == ColUsuario){
alert("Enhorabuena, ha ganado!!!\n\nLa maquina eligio: " + ColMaquina + "\nY usted: " + ColUsuario + "\n\nPara ganar necesito " + intentos + " intentos.");
}
else {
alert("Pruebe de nuevo, su combinacion de colores no es exacta a la de la maquina:\n\nRecuerde, en esta ronda escribio la combinacion: \"" + ColUsuario + "\" con " + NumExactos + " colores que coinciden con los de la maquina y " + NumPresentes + " presentes.");
}
//alert(ColMaquina + "\n" + ColUsuario + "\n\n" + resultado);
//Algunas variables se ponen a cero, otras como "intentos" aumentan su valor, o ColUsuario2 adopta el valor de ColUsuario para el while
intentos++;
ColUsuario2=ColUsuario;
ColUsuario="";
resultado="";
uno="";
dos="";
tres="";
cuatro="";
NumExactos=0;
NumPresentes=0;
} while (ColMaquina != ColUsuario2)