Master Mind

Eduardo de Lorenzo Poza
Andrés Ibáñez Núñez

Este programa te permite jugar al Master Mind. Las instrucciones del juego están en el programa.

#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

int respuesta1 = 0, respuesta2 = 0, intentos = 0;
int numUsuario[4], numGenerado[4];
bool correcto = false;

//Función que devuelve 1 si dos números son iguales
int igual(int x,int y) {
    if (x==y) return 1;
    else return 0;
}

//Función que devuelve el número de números en común entre el del usuario y el generado
int comparacion1(int numGenerado[4], int numUsuario[4]) {
    for (int i=0; i<4; i++) {
        for (int j=0; j<4; j++) {
            respuesta1 = respuesta1 + igual(numGenerado[i], numUsuario[j]);
        };
    };
    return respuesta1;
}

//Función que devuelve el número de números en la posición correcta
int comparacion2(int numGenerado[4], int numUsuario[4]) {
    for (int j=0; j<4; j++) {
        respuesta2 = respuesta2 + igual(numGenerado[j], numUsuario[j]);
    };
    return respuesta2;
}

//Esta es la función principal. Te vuelve a pedir una respuesta mientras no sea la correcta y te informa del progreso.
int jugar() {
    while (!correcto) {
        cout << "Introduce cuatro numeros separados por un espacio y pulsa ENTER: "; cin >> numUsuario[0]; cin >> numUsuario[1]; cin >> numUsuario[2]; cin >> numUsuario[3];
        intentos++;
        if (comparacion2(numGenerado, numUsuario)!= 4) {
            //Los valores de las respuestas se tienen que resetear, ya que se acumulan cada vez que se llama a la función.
            respuesta1 = 0;
            respuesta2 = 0;
            cout << "\n\t" << comparacion1(numGenerado, numUsuario) << " de tus cifras estan en mi numero, de las cuales " << endl
                 << "\t" << comparacion2(numGenerado, numUsuario) << " estan en la posicion correcta." << endl << endl;
            respuesta1 = 0;
            respuesta2 = 0;
        } else {correcto = true;};
    };
}

int main() {

    //Generar cuatro números distintos del 0 al 5
    srand(time(NULL));
    numGenerado[0] = rand() % 6;
    numGenerado[1] = rand() % 6;
    while (numGenerado[1]==numGenerado[0]) numGenerado[1] = rand() % 6;
    numGenerado[2] = rand() % 6;
    while (numGenerado[2]==numGenerado[0] || numGenerado[2]==numGenerado[1]) numGenerado[2] = rand() % 6;
    numGenerado[3] = rand() % 6;
    while (numGenerado[3]==numGenerado[0] || numGenerado[3]==numGenerado[1] || numGenerado[3]==numGenerado[2]) numGenerado[3] = rand() % 6;

    cout << "Hola, humano. Disculpa mi ortografia. Mi creador no me ense¤o a usar acentos." << endl
         << "Sin embargo, si aprendi de el un juego muy divertido. Se llama..." << endl << endl
         << "==========================MASTERMIND=============================" << endl << endl
         << "Te lo ense¤are:" << endl
         << "Yo pienso un numero de cuatro de cuatro cifras del 0 al 5. En cada turno" << endl
         << "me diras otro numero del mismo tipo y yo te dire una pista. Si eres listo" << endl
         << "deberia bastarte con 5 intentos. Veamos de que eres capaz." << endl << endl;

    jugar();

    cout << endl << "ENHORABUENA!! Resulta que no eras tan tonto, humano." << endl
         << "En efecto, estaba pensando en el numero ";
    for (int i=0;i<4;i++) {
        cout << numGenerado[i] << " ";
    };
    cout << endl << "Has tardado " << intentos << " intentos en adivinarlo. No esta mal.";
    cout << endl << "Hasta otra." << endl << endl;
    system("PAUSE");

}
Anuncios
Esta entrada fue publicada en Informática e Internet. Guarda el enlace permanente.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s