Dev - C++ - Ayuda con un memorama

 
Vista:

Ayuda con un memorama

Publicado por Diego Ortiz (1 intervención) el 08/12/2021 01:57:02
void simulacion(string **matriz,int tammat){
system("cls");
cout<<endl<<"SIMULACION"<<endl;
//Generamos un vector que guarde los números o casillas ya seleccionados para no repetir
int *vnale;
vnale=new int[tammat];
int cont=0;
int i=0;

//ahora necesito una matriz de 3 columnas y 2 renglones con números del 1 al 6 en tipo string
int ren=3,col=2;//tres renglones por 2 columnas, matriz 3x2
string **mataux;//Para hacer la matriz con los números
mataux=new string *[ren];//creando renglones de matriz
//creando las columnas de la matriz
for(int i=0;i<ren;i++){
mataux[i]=new string[col];
}
//Ya tengo la matriz declarada
//Creo un vector string para meterle esos números a la matriz
int contaux=0;//Para ir cambiando la posición del vector
string aux[6]={"1","2","3","4","5","6"};
for(int i=0;i<ren;i++){
for(int j=0;j<col;j++){
mataux[i][j]=aux[contaux];
contaux++;
//cout<<"("<<mataux[i][j]<<")";
}
//cout<<endl;
}
int aux1=0,aux2=0,x=0;//Equisnos va a contar las veces que se destapan no pares
int v1[15],v2[15];

imprimirtablero(matriz,mataux,ren,col,aux1,aux2,cont);//Imprimo una vez para mostrar el tablero
cout<<endl<<"x";
system("pause");
//Ya está la matriz auxiliar con los números en orden del 1 al 6
//Hasta que se encuentren los 3 pares
int band=1,band2=1;
int aleatorio;
int contador=0;
//creo dos string para guardar la palabra que se va a destapar
Sleep(500);
string saux1,saux2,saux3,saux4;//Los primeros dos son para guardar la palabra escogida, los otros para guardar la casilla en un string
Sleep(500);
while(cont<3){
system("cls");//Limpiamos pantalla
band=1;
band2=1;
Sleep(500);
//Busco un primer número aleatorio
while(band2==1){
Sleep(500);
while(band==1){// nos aseguremos que en el vector no existe ya ese número repetido
aleatorio=1+rand()%(tammat-1+1);//Un número aleatorio entre el 1 y el 6, este número será la casilla escogida
band=revisarsim(vnale,i,aleatorio);//Revisa que en el vector no exista ya ese número
if(band==0){
Sleep(500);
//el numero no esta y lo podemos meter al vector
vnale[i]=aleatorio;
//cout<<endl<<"x"<<vnale[i];
aux1=vnale[i];//guardo la casilla aleatoria
i++;
}
}
Sleep(500);
band=1;
//busco un segundo núero aleatorio
while(band==1){//nos aseguremos que en el vector no existe ya ese número repetido
aleatorio=1+rand()%(tammat-1+1);//Un número aleatorio entre el 1 y el 6, este número será la casilla escogida
band=revisarsim(vnale,i,aleatorio);//Revisa que en el vector no exista ya ese número
if(band==0){
Sleep(500);
//el numero no esta y lo podemos meter al vector
vnale[i]=aleatorio;
//cout<<endl<<"y"<<vnale[i];
aux2=vnale[i];//Guardo la casilla aleatoria
i++;
}
}
Sleep(500);
band2=0;
for(int i=0;i<x;i++){
Sleep(500);
cout<<"y";
if((v1[i]==aux1&&v2[i]==aux2)||(v1[i]==aux2&&v2[i]==aux1)){//Para saber si ese para ya ha sido elegido
band2=1;
cout<<band2;
}
}
cout<<band2;
}
//Hasta aquí ya tengo dos núermos no repetidos

//Lo siguiente es destapar las casillas en la matriz auxiliar
cout<<endl<<"aux1: "<<aux1<<" aux2: "<<aux2;
cout<<endl;
Sleep(500);
for (int r=0; r<ren; r++){
for (int c=0; c<col; c++){
cout<<"("<<mataux[r][c]<<")";
}
cout<<endl;
}
cout<<endl;
Sleep(500);
for (int r=0; r<ren; r++){
for (int c=0; c<col; c++){
cout<<"("<<matriz[r][c]<<")";
}
cout<<endl;
}
Sleep(500);
switch(aux1){
case 1:
saux3=mataux[0][0];
mataux[0][0]=matriz[0][0];
saux1=mataux[0][0];
break;
case 2:
saux3=mataux[0][1];
mataux[0][1]=matriz[0][1];
saux1=mataux[0][1];
break;
case 3:
saux3=mataux[1][0];
mataux[1][0]=matriz[1][0];
saux1=mataux[1][0];
break;
case 4:
saux3=mataux[1][1];
mataux[1][1]=matriz[1][1];
saux1=mataux[1][1];
break;
case 5:
saux3=mataux[2][0];
mataux[2][0]=matriz[2][0];
saux1=mataux[2][0];
break;
case 6:
saux3=mataux[2][1];
mataux[2][1]=matriz[2][1];
saux1=mataux[2][1];
break;
}
cout<<endl<<endl<<endl<<"Pasó saux1: "<<saux1<<" saux3: "<<saux3;
Sleep(300);
//así destapamos ambas casillas seleccionadas
switch(aux2){
case 1:
saux4=mataux[0][0];
mataux[0][0]=matriz[0][0];
saux2=mataux[0][0];
break;
case 2:
saux4=mataux[0][1];
mataux[0][1]=matriz[0][1];
saux2=mataux[0][1];
break;
case 3:
saux4=mataux[1][0];
mataux[1][0]=matriz[1][0];
saux2=mataux[1][0];
break;
case 4:
saux4=mataux[1][1];
mataux[1][1]=matriz[1][1];
saux2=mataux[1][1];
break;
case 5:
saux4=mataux[2][0];
mataux[2][0]=matriz[2][0];
saux2=mataux[2][0];
break;
case 6:
saux4=mataux[2][1];
mataux[2][1]=matriz[2][1];
saux2=mataux[2][1];
break;
}

cout<<endl<<"Pasó saux2: "<<saux2<<" saux4: "<<saux4;
cout<<endl;
Sleep(500);
for (int r=0; r<ren; r++){
for (int c=0; c<col; c++){
cout<<"("<<mataux[r][c]<<")";
}
cout<<endl;
}
Sleep(500);
cout<<endl;
for (int r=0; r<ren; r++){
for (int c=0; c<col; c++){
cout<<"("<<matriz[r][c]<<")";
}
cout<<endl;
}
//Imprimimos matrices
//imprimirtablero(matriz,mataux,ren,col,aux1,aux2,cont);
//Guardamos ambos datos palabra seleccionados en saux1 y saux2
Sleep(500);
if(saux1==saux2){//Si son par aumentamos el contador
cont++;
cout<<endl<<"Sí son par";
}

else{//Si no son par
cout<<endl<<"No son par";
Sleep(500);
for(int i=0;i<ren;i++){
for(int j=0;j<col;j++){
Sleep(500);
//cout<<endl<<"x i: "<<i<<" j: "<<j;
if(mataux[i][j]==saux1){//Así encontramos la posición de la matriz que tiene la casilla destapada
//cout<<"y";
//cout<<endl<<"saux1: "<<saux1<<" saux3: "<<saux3;
Sleep(500);
mataux[i][j]=saux3;//Le regresamos el valor de número
cout<<mataux[i][j];
}
else if(mataux[i][j]==saux2){
//cout<<"z";
//cout<<endl<<"saux2: "<<saux2<<" saux4: "<<saux4;
Sleep(500);
mataux[i][j]=saux4;//Le regresamos el valor de número
cout<<mataux[i][j];
}
}
}
Sleep(500);
//También hay que quitarle ese valor al vecor auxiliar con el que escogemos los números para que pueda volver a escogerlos
for(int i=0;i<tammat;i++){
if(vnale[i]==aux1||vnale[i]==aux2)//Si es igual al nuero escogido aleatoriamente
vnale[i]=0;//Le damos un valor que nunca podría tener por medio de los aleatorios
}
//Guardamos los valores que no fueron par
v1[x]=aux1;//Así guardamos los valores para compararlos
v2[x]=aux2;
x++;
}
cout<<endl;
cout<<endl;
Sleep(500);
for (int r=0; r<ren; r++){
for (int c=0; c<col; c++){
cout<<"("<<mataux[r][c]<<")";
}
cout<<endl;
}
cout<<endl;
Sleep(500);
for (int r=0; r<ren; r++){
for (int c=0; c<col; c++){
cout<<"("<<matriz[r][c]<<")";
}
cout<<endl;
}
cout<<endl<<"Contador: "<<contador;
contador++;
cout<<endl;
Sleep(2000);
}
imprimirtablero(matriz,mataux,ren,col,aux1,aux2,cont);
}
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