Dev - C++ - Codigo para Memorama en C++, POR FAVOR necesito ayuda para completarlo

 
Vista:
sin imagen de perfil

Codigo para Memorama en C++, POR FAVOR necesito ayuda para completarlo

Publicado por andrea (1 intervención) el 05/12/2017 00:45:46
Esto es lo que llevo al momento pero falta agregarle cosas como:
-el programa debe mostrar un letrero que indique a que jugador le toca el turno
-luego debe preguntar: cual es la primera casilla que se quiere ver (pedir el renglon y columna de esa casilla) y el programa debe mostrar la carta de la casilla correspondiente. cual es la segunda casilla que se quiere ver (pedir el renglon y columna de esa casilla) y el programa debe mostrar la carta de la casilla correspondiente.
-si las cartas de esas casillas son iguales, se debe quedar a la vista el numero correspondiente, si no, se debe volver a tapar el valor de dichas casillas mostrando de nuevo el *
-despues el programa debe preguntar al usuario si quiere continuar jugando
-si el usuario dice que si, tocara el turno al otro jugador, el programa mostrara el letrero de "toca el turno a \nombre del jugador\
-el programa debe controlar que le toque el turno a cada uno de los 2 jugadores alternadamente
-el programa debe continuar mientras que el usuario quiera seguir, o hasta que se hayan destapado todos los pares del tablero
-si el programa se detiene por que se destaparon todos los pares se debe mostrar un mensaje que indique que ya se
termino el juego y un mensaje que diga "ganaste XXX, conseguiste YY pares" o un letrero que diga "Empate" si es el caso. Si el programa se detiene porque el usuario ya no quiso seguir jugando, se debe enviar un mensaje que diga "No termino el juego, XXX ganaste, YY pares, ZZZ ganaste, WW pares"
Notas:
-si se pide destapar una carta que ya esta destapada el juego no debe permitirlo
-al preguntar si se quiere continuar jugando que se valide que la letra sea solamente s o n en mayuscula o minuscula

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <string>
using namespace std;
 
/* Utilizo 2 matrices, tablero para poner el contenido del tablero
 y tapada para poner un valor booleano que indica si la carta de esa casilla esta tapada (true) o no lo esta (false)
 */
 
const int sizemax = 4;
// funcion para llenar el tablero incial
void llenaTablero (int tablero[sizemax][sizemax], bool tapada[sizemax][sizemax])
{
    int r, c, cont, carta;
    // primero pongo todas las casillas vacias (con un 0) y tapadas (con true)
 
    for (r=0; r<sizemax; r++)
        for (c=0; c<sizemax; c++)
        {
            tablero[r][c]=0;
            tapada[r][c]=true;
        }
        // para que se generen numeros aleatorios diferentes cada vez
    srand((unsigned int)time(0));
    for (cont=1, carta=1; cont<=sizemax*sizemax/2;)
    {
        r= rand()%sizemax; // esto genera un numero aleatorio >=0 y <sizemax
    c= rand()%sizemax;
 
    if (tablero[r][c]==0) // si tiene un 0 significa que esta vacio
    {
        tablero[r][c]=cont;
 
        if (carta==1) // si carta==1 pongo la primera carta del par
            carta=2;
 
        else // si carta==2 pongo la segunda carta del par
        {
            cont++;
            carta=1;
        }
    }
}
// Puedes habilitar estas dos lineas para ver el ejemplo de que al estar estas dos ya descubiertas como se veria en el memorama
 //tapada[2][3]=0;
 //tapada[0][1]=0;
}
 
//void
void muestraDatosTab(int tablero[sizemax][sizemax], bool tapada[sizemax][sizemax], int sizemax)
{
    for (int r=0; r<sizemax; r++)
    {
        for (int c=0; c<sizemax; c++)
        {
            if (tapada[r][c]==1)
                cout << "*" << "\t";
            else
                cout << tablero[r][c] << "\t";
 
        }
        cout << endl;
    }
}
void muestraDatosTap(bool tapada[sizemax][sizemax], int sizemax)
{
    for (int r=0; r<sizemax; r++)
    {
        for (int c=0; c<sizemax; c++)
        {
            cout << tapada[r][c] << "\t";
        }
        cout << endl;
    }
}
 
int main ()
{
    int tablero[4][4]={1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8};
    bool tapada[4][4];
    string pJ, sJ;
 
    cout << "Escribe el nombre del primer jugador: ";
    getline(cin, pJ);
    cout << "Escribe el nombre del segundo jugador: ";
    getline(cin,sJ);
 
    cout << "Despliega el tablero de Memorama 4x4";
    cout << endl;
 
    llenaTablero(tablero, tapada); // manda llamar a la funcion para llenar el tablero
    muestraDatosTab(tablero,tapada, sizemax); // muestra el tablero en pantalla
 
 
 
 
    cout << endl;
    // puedes habilitar esta linea para ver como quedaria la matriz de tapada cuando ya tiene dos valores descubiertos.
    //muestraDatosTap(tapada,sizemax); // muestra la matriz de tapada para ver los 0 y 1 de si esta tapada o destapada la posicion
 
    return 0;
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder