Buongiorno, avevo già scritto sul forum per aiuto e mi avevate illuminato, io sono molto scarso come programmatore e mi sono inceppatto sullo stesso programma che stavo facendo per scuola, purtroppo alla mia professoressa non vanno bene alcuni miei metodi di programmazione e mi sono dovuto adattare ai suoi e mi è uscito un codice enormemente lungo, perciò non mi offendo affatto se non avrete voglia di leggerlo. (1943 righe)
#include <iostream>
#include <windows.h>
#include <ctime>
#include <cstdlib>
using namespace std;
int prato[10][10]; //array contenente le bombe
char pratovisivo[11][11]; //array da fare uscire a video con caselle vuote
void riempimentoprato(); //riempio l'array dove ci sono le bombe
void riempimentopratovisivo(); //riempio l'array da fare uscire a video come parte visiva
void scoprimentocaselle(); //modifica il prato visivo per mostrare il prato con le bombe
void escopratovisivo(); //esco a video il pratovisivo
void escoprato(); //esco a video il prato
void escozeri(); //funzione che scopre tutti gli zeri adiacenti
void ripetizioneescozeri(); //funzione che ripete la funzione escozeri
int cont1,colonnio,righio,cont=0;
int main()
{
srand(time(NULL));
cout<<"\n\n >Prato fiorito in un campo 10x10 con 10 bombe.\n\n >Press enter."; //givvo all'utente dati bsilari del programma
cin.get(); //aspetto input per procedere
system("cls");
riempimentoprato();
riempimentopratovisivo();
scoprimentocaselle(); //il ciclo in cui si ripete il programma è direttamente all'interno della funzione
system("cls");
escopratovisivo(); //quando si vince o perde il programma da a video la
cout<<"\n\n >Press enter.";
cin.get(); //aspetto input per procedere
system("cls");
cout<<">Prato scoperto:\n\n";
escoprato(); //faccio vedere all'utente tutto il prato scoperto
cout<<"\n\n >Press enter.";
cin.get(); //aspetto input per procedere
return 0;
}
void ripetizioneescozeri()
{int colonna= colonnio;
int riga=righio;
int flag=0;
int righio1=righio;
int colonnio1=colonnio;
do //spostamento di tutto il sistema verso destra
{
if (colonna==9) continue;
do //spostamento a destra
{
if (colonna==9) continue;
else
{
escozeri();
colonna++;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento a sinistra
{
if (colonna==0) continue;
else
{
escozeri();
colonna--;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in basso
{
if (riga==9) continue;
else
{
escozeri();
riga++;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in basso
{
if (riga==0) continue;
else
{
escozeri();
riga--;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in basso a destra
{
if ((colonna==9)&&(riga==9)) continue;
else
{
escozeri();
colonna++;
riga++;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in basso a sinistra
{
if ((colonna==0)&&(riga==9)) continue;
else
{
escozeri();
colonna--;
riga++;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in alto a destra
{
if ((colonna==9)&&(riga==0)) continue;
else
{
escozeri();
colonna++;
riga--;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in alto a sinistra
{
if ((colonna==0)&&(riga==0)) continue;
else
{
escozeri();
colonna--;
riga--;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonnio1++;
colonna= colonnio1;
riga=righio1;
flag=0;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
} while (flag!=1);
colonnio1=colonnio;
righio1=righio;
flag=0;
do //spostamento di tutto il sistema verso il basso
{
if (riga==9) continue;
do //spostamento a destra
{
if (colonna==9) continue;
else
{
escozeri();
colonna++;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento a sinistra
{
if (colonna==0) continue;
else
{
escozeri();
colonna--;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in basso
{
if (riga==9) continue;
else
{
escozeri();
riga++;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in basso
{
if (riga==0) continue;
else
{
escozeri();
riga--;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in basso a destra
{
if ((colonna==9)&&(riga==9)) continue;
else
{
escozeri();
colonna++;
riga++;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in basso a sinistra
{
if ((colonna==0)&&(riga==9)) continue;
else
{
escozeri();
colonna--;
riga++;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in alto a destra
{
if ((colonna==9)&&(riga==0)) continue;
else
{
escozeri();
colonna++;
riga--;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in alto a sinistra
{
if ((colonna==0)&&(riga==0)) continue;
else
{
escozeri();
colonna--;
riga--;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
righio1++;
colonna= colonnio1;
riga=righio1;
flag=0;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
} while (flag!=1);
colonnio1=colonnio;
righio1=righio;
flag=0;
do//spostamento di tutto il sistema verso l'alto
{
if (riga==0) continue;
do //spostamento a destra
{
if (colonna==9) continue;
else
{
escozeri();
colonna++;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento a sinistra
{
if (colonna==0) continue;
else
{
escozeri();
colonna--;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in basso
{
if (riga==9) continue;
else
{
escozeri();
riga++;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in basso
{
if (riga==0) continue;
else
{
escozeri();
riga--;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in basso a destra
{
if ((colonna==9)&&(riga==9)) continue;
else
{
escozeri();
colonna++;
riga++;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in basso a sinistra
{
if ((colonna==0)&&(riga==9)) continue;
else
{
escozeri();
colonna--;
riga++;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in alto a destra
{
if ((colonna==9)&&(riga==0)) continue;
else
{
escozeri();
colonna++;
riga--;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in alto a sinistra
{
if ((colonna==0)&&(riga==0)) continue;
else
{
escozeri();
colonna--;
riga--;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
righio1--;
colonna= colonnio1;
riga=righio1;
flag=0;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
} while (flag!=1);
colonnio1=colonnio;
righio1=righio;
flag=0;
do //spostamento di tutto il sistema verso sinistra
{
if (colonna==0) continue;
do //spostamento a destra
{
if (colonna==9) continue;
else
{
escozeri();
colonna++;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento a sinistra
{
if (colonna==0) continue;
else
{
escozeri();
colonna--;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in basso
{
if (riga==9) continue;
else
{
escozeri();
riga++;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in basso
{
if (riga==0) continue;
else
{
escozeri();
riga--;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in basso a destra
{
if ((colonna==9)&&(riga==9)) continue;
else
{
escozeri();
colonna++;
riga++;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in basso a sinistra
{
if ((colonna==0)&&(riga==9)) continue;
else
{
escozeri();
colonna--;
riga++;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in alto a destra
{
if ((colonna==9)&&(riga==0)) continue;
else
{
escozeri();
colonna++;
riga--;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in alto a sinistra
{
if ((colonna==0)&&(riga==0)) continue;
else
{
escozeri();
colonna--;
riga--;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonnio1--;
colonna= colonnio1;
riga=righio1;
flag=0;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
} while (flag!=1);
colonnio1=colonnio;
righio1=righio;
flag=0;
do //spostamento di tutto il sistema verso destra in basso
{
if (colonna==9) continue;
do //spostamento a destra
{
if (colonna==9) continue;
else
{
escozeri();
colonna++;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento a sinistra
{
if (colonna==0) continue;
else
{
escozeri();
colonna--;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in basso
{
if (riga==9) continue;
else
{
escozeri();
riga++;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in basso
{
if (riga==0) continue;
else
{
escozeri();
riga--;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in basso a destra
{
if ((colonna==9)&&(riga==9)) continue;
else
{
escozeri();
colonna++;
riga++;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in basso a sinistra
{
if ((colonna==0)&&(riga==9)) continue;
else
{
escozeri();
colonna--;
riga++;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in alto a destra
{
if ((colonna==9)&&(riga==0)) continue;
else
{
escozeri();
colonna++;
riga--;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in alto a sinistra
{
if ((colonna==0)&&(riga==0)) continue;
else
{
escozeri();
colonna--;
riga--;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
righio1++;
colonna= colonnio1;
riga=righio1;
flag=0;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
} while (flag!=1);
colonnio1=colonnio;
righio1=righio;
flag=0;
do //spostamento di tutto il sistema verso destra
{
if ((colonna==9)&&(riga==9) )continue;
do //spostamento a destra
{
if (colonna==9) continue;
else
{
escozeri();
colonna++;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento a sinistra
{
if (colonna==0) continue;
else
{
escozeri();
colonna--;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in basso
{
if (riga==9) continue;
else
{
escozeri();
riga++;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in basso
{
if (riga==0) continue;
else
{
escozeri();
riga--;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in basso a destra
{
if ((colonna==9)&&(riga==9)) continue;
else
{
escozeri();
colonna++;
riga++;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in basso a sinistra
{
if ((colonna==0)&&(riga==9)) continue;
else
{
escozeri();
colonna--;
riga++;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in alto a destra
{
if ((colonna==9)&&(riga==0)) continue;
else
{
escozeri();
colonna++;
riga--;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in alto a sinistra
{
if ((colonna==0)&&(riga==0)) continue;
else
{
escozeri();
colonna--;
riga--;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonnio1++;
righio1++;
colonna= colonnio1;
riga=righio1;
flag=0;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
} while (flag!=1);
colonnio1=colonnio;
righio1=righio;
flag=0;
do //spostamento di tutto il sistema verso destra in basso
{
if (colonna==9) continue;
do //spostamento a destra
{
if (colonna==9) continue;
else
{
escozeri();
colonna++;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento a sinistra
{
if (colonna==0) continue;
else
{
escozeri();
colonna--;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in basso
{
if (riga==9) continue;
else
{
escozeri();
riga++;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in basso
{
if (riga==0) continue;
else
{
escozeri();
riga--;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in basso a destra
{
if ((colonna==9)&&(riga==9)) continue;
else
{
escozeri();
colonna++;
riga++;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in basso a sinistra
{
if ((colonna==0)&&(riga==9)) continue;
else
{
escozeri();
colonna--;
riga++;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in alto a destra
{
if ((colonna==9)&&(riga==0)) continue;
else
{
escozeri();
colonna++;
riga--;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in alto a sinistra
{
if ((colonna==0)&&(riga==0)) continue;
else
{
escozeri();
colonna--;
riga--;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
righio1++;
colonna= colonnio1;
riga=righio1;
flag=0;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
} while (flag!=1);
colonnio1=colonnio;
righio1=righio;
flag=0;
do //spostamento di tutto il sistema verso destra
{
if ((colonna==9)&&(riga==0) )continue;
do //spostamento a destra
{
if (colonna==9) continue;
else
{
escozeri();
colonna++;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento a sinistra
{
if (colonna==0) continue;
else
{
escozeri();
colonna--;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in basso
{
if (riga==9) continue;
else
{
escozeri();
riga++;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in basso
{
if (riga==0) continue;
else
{
escozeri();
riga--;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in basso a destra
{
if ((colonna==9)&&(riga==9)) continue;
else
{
escozeri();
colonna++;
riga++;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in basso a sinistra
{
if ((colonna==0)&&(riga==9)) continue;
else
{
escozeri();
colonna--;
riga++;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in alto a destra
{
if ((colonna==9)&&(riga==0)) continue;
else
{
escozeri();
colonna++;
riga--;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in alto a sinistra
{
if ((colonna==0)&&(riga==0)) continue;
else
{
escozeri();
colonna--;
riga--;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonnio1++;
righio1--;
colonna= colonnio1;
riga=righio1;
flag=0;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
} while (flag!=1);
colonnio1=colonnio;
righio1=righio;
flag=0;
do //spostamento di tutto il sistema verso destra in basso
{
if (colonna==9) continue;
do //spostamento a destra
{
if (colonna==9) continue;
else
{
escozeri();
colonna++;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento a sinistra
{
if (colonna==0) continue;
else
{
escozeri();
colonna--;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in basso
{
if (riga==9) continue;
else
{
escozeri();
riga++;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in basso
{
if (riga==0) continue;
else
{
escozeri();
riga--;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in basso a destra
{
if ((colonna==9)&&(riga==9)) continue;
else
{
escozeri();
colonna++;
riga++;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in basso a sinistra
{
if ((colonna==0)&&(riga==9)) continue;
else
{
escozeri();
colonna--;
riga++;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in alto a destra
{
if ((colonna==9)&&(riga==0)) continue;
else
{
escozeri();
colonna++;
riga--;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in alto a sinistra
{
if ((colonna==0)&&(riga==0)) continue;
else
{
escozeri();
colonna--;
riga--;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
righio1++;
colonna= colonnio1;
riga=righio1;
flag=0;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
} while (flag!=1);
colonnio1=colonnio;
righio1=righio;
flag=0;
do //spostamento di tutto il sistema verso destra
{
if ((colonna==0)&&(riga==9) )continue;
do //spostamento a destra
{
if (colonna==9) continue;
else
{
escozeri();
colonna++;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento a sinistra
{
if (colonna==0) continue;
else
{
escozeri();
colonna--;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in basso
{
if (riga==9) continue;
else
{
escozeri();
riga++;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in basso
{
if (riga==0) continue;
else
{
escozeri();
riga--;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in basso a destra
{
if ((colonna==9)&&(riga==9)) continue;
else
{
escozeri();
colonna++;
riga++;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in basso a sinistra
{
if ((colonna==0)&&(riga==9)) continue;
else
{
escozeri();
colonna--;
riga++;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in alto a destra
{
if ((colonna==9)&&(riga==0)) continue;
else
{
escozeri();
colonna++;
riga--;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in alto a sinistra
{
if ((colonna==0)&&(riga==0)) continue;
else
{
escozeri();
colonna--;
riga--;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonnio1--;
righio1++;
colonna= colonnio1;
riga=righio1;
flag=0;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
} while (flag!=1);
colonnio1=colonnio;
righio1=righio;
flag=0;
do //spostamento di tutto il sistema verso destra in basso
{
if (colonna==9) continue;
do //spostamento a destra
{
if (colonna==9) continue;
else
{
escozeri();
colonna++;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento a sinistra
{
if (colonna==0) continue;
else
{
escozeri();
colonna--;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in basso
{
if (riga==9) continue;
else
{
escozeri();
riga++;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in basso
{
if (riga==0) continue;
else
{
escozeri();
riga--;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in basso a destra
{
if ((colonna==9)&&(riga==9)) continue;
else
{
escozeri();
colonna++;
riga++;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in basso a sinistra
{
if ((colonna==0)&&(riga==9)) continue;
else
{
escozeri();
colonna--;
riga++;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in alto a destra
{
if ((colonna==9)&&(riga==0)) continue;
else
{
escozeri();
colonna++;
riga--;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in alto a sinistra
{
if ((colonna==0)&&(riga==0)) continue;
else
{
escozeri();
colonna--;
riga--;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
righio1++;
colonna= colonnio1;
riga=righio1;
flag=0;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
} while (flag!=1);
colonnio1=colonnio;
righio1=righio;
flag=0;
do //spostamento di tutto il sistema verso destra
{
if ((colonna==0)&&(riga==0) )continue;
do //spostamento a destra
{
if (colonna==9) continue;
else
{
escozeri();
colonna++;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento a sinistra
{
if (colonna==0) continue;
else
{
escozeri();
colonna--;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in basso
{
if (riga==9) continue;
else
{
escozeri();
riga++;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in basso
{
if (riga==0) continue;
else
{
escozeri();
riga--;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in basso a destra
{
if ((colonna==9)&&(riga==9)) continue;
else
{
escozeri();
colonna++;
riga++;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in basso a sinistra
{
if ((colonna==0)&&(riga==9)) continue;
else
{
escozeri();
colonna--;
riga++;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in alto a destra
{
if ((colonna==9)&&(riga==0)) continue;
else
{
escozeri();
colonna++;
riga--;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonna= colonnio1;
riga=righio1;
flag=0;
do //spostamento in alto a sinistra
{
if ((colonna==0)&&(riga==0)) continue;
else
{
escozeri();
colonna--;
riga--;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
}
} while (flag!=1);
colonnio1--;
righio1--;
colonna= colonnio1;
riga=righio1;
flag=0;
if(prato[colonna][riga]==0) {flag=0;}
else{flag=1;}
} while (flag!=1);
colonnio1=colonnio;
righio1=righio;
flag=0;
}
void escozeri() //funzione da completare che fa in modo che se la casella scoperta è zero escan gli zeri adiacenti
{
switch (righio)
{
case 0:
switch (colonnio)
{
case 0:
pratovisivo[colonnio+1][righio+1]='0';
if (prato[colonnio+1][righio+1]==0) {pratovisivo[colonnio+2][righio+2]='0';}
if (prato[colonnio+1][righio]==0) {pratovisivo[colonnio+2][righio+1]='0';}
if (prato[colonnio][righio+1]==0) {pratovisivo[colonnio+1][righio+2]='0';}
break;
case 9:
pratovisivo[colonnio+1][righio+1]='0';
if (prato[colonnio-1][righio+1]==0) {pratovisivo[colonnio][righio+2]='0';}
if (prato[colonnio-1][righio]==0) {pratovisivo[colonnio][righio+1]='0';}
if (prato[colonnio][righio+1]==0) {pratovisivo[colonnio+1][righio+2]='0';}
break;
default:
if (prato[colonnio+1][righio+1]==0) {pratovisivo[colonnio+2][righio+2]='0';}
if (prato[colonnio+1][righio]==0) {pratovisivo[colonnio+2][righio+1]='0';}
if (prato[colonnio-1][righio+1]==0) {pratovisivo[colonnio][righio+2]='0';}
if (prato[colonnio-1][righio]==0) {pratovisivo[colonnio][righio+1]='0';}
if (prato[colonnio][righio+1]==0) {pratovisivo[colonnio+1][righio+2]='0';}
break;
}
break;
case 9:
switch (colonnio)
{
case 0:
pratovisivo[colonnio+1][righio+1]='0';
if (prato[colonnio+1][righio-1]==0) {pratovisivo[colonnio+2][righio]='0';}
if (prato[colonnio+1][righio]==0) {pratovisivo[colonnio+2][righio+1]='0';}
if (prato[colonnio][righio-1]==0) {pratovisivo[colonnio+1][righio]='0';}
break;
case 9:
pratovisivo[colonnio+1][righio+1]='0';
if (prato[colonnio-1][righio-1]==0) {pratovisivo[colonnio][righio]='0';}
if (prato[colonnio-1][righio]==0) {pratovisivo[colonnio][righio+1]='0';}
if (prato[colonnio][righio-1]==0) {pratovisivo[colonnio+1][righio]='0';}
break;
default:
pratovisivo[colonnio+1][righio+1]='0';
if (prato[colonnio+1][righio-1]==0) {pratovisivo[colonnio+2][righio]='0';}
if (prato[colonnio+1][righio]==0) {pratovisivo[colonnio+2][righio+1]='0';}
if (prato[colonnio-1][righio-1]==0) {pratovisivo[colonnio][righio]='0';}
if (prato[colonnio-1][righio]==0) {pratovisivo[colonnio][righio+1]='0';}
if (prato[colonnio][righio-1]==0) {pratovisivo[colonnio+1][righio]='0';}
break;
}
break;
default:
switch(colonnio)
{
case 0:
pratovisivo[colonnio+1][righio+1]='0';
if (prato[colonnio+1][righio+1]==0) {pratovisivo[colonnio+2][righio+2]='0';}
if (prato[colonnio+1][righio-1]==0) {pratovisivo[colonnio+2][righio]='0';}
if (prato[colonnio+1][righio]==0) {pratovisivo[colonnio+2][righio+1]='0';}
if (prato[colonnio][righio+1]==0) {pratovisivo[colonnio+1][righio+2]='0';}
if (prato[colonnio][righio-1]==0) {pratovisivo[colonnio+1][righio]='0';}
break;
case 9:
pratovisivo[colonnio+1][righio+1]='0';
if (prato[colonnio-1][righio+1]==0) {pratovisivo[colonnio][righio+2]='0';}
if (prato[colonnio-1][righio-1]==0) {pratovisivo[colonnio][righio]='0';}
if (prato[colonnio-1][righio]==0) {pratovisivo[colonnio][righio+1]='0';}
if (prato[colonnio][righio+1]==0) {pratovisivo[colonnio+1][righio+2]='0';}
if (prato[colonnio][righio-1]==0) {pratovisivo[colonnio+1][righio]='0';}
break;
default:
pratovisivo[colonnio+1][righio+1]='0';
if (prato[colonnio+1][righio+1]==0) {pratovisivo[colonnio+2][righio+2]='0';}
if (prato[colonnio+1][righio-1]==0) {pratovisivo[colonnio+2][righio]='0';}
if (prato[colonnio+1][righio]==0) {pratovisivo[colonnio+2][righio+1]='0';}
if (prato[colonnio-1][righio+1]==0) {pratovisivo[colonnio][righio+2]='0';} //esco gli zeri adiacenti alla casella
if (prato[colonnio-1][righio-1]==0) {pratovisivo[colonnio][righio]='0';}
if (prato[colonnio-1][righio]==0) {pratovisivo[colonnio][righio+1]='0';}
if (prato[colonnio][righio+1]==0) {pratovisivo[colonnio+1][righio+2]='0';}
if (prato[colonnio][righio-1]==0) {pratovisivo[colonnio+1][righio]='0';}
break;
}
break;
}
}
void riempimentoprato() //riempio il prato di numero 9=mina
{
int cont=0;
for (int riga=0;riga<10;riga++)
{
for (int colonna=0;colonna<10;colonna++)
{
prato[colonna][riga]= rand()% 7;
switch (prato[colonna][riga])
{
case 0:
cont++;
prato [colonna][riga]=9;
if (cont>10){prato [colonna][riga]=0;} //condizione per la quale in un campo non spawnano più di 10 mine
break;
default:
prato[colonna][riga]=0;
break;
}
}
}
// tutta questa serie di if serve a aumentare il valore delle caselle vicino ad una bomba, comprese le condizioni di esistenza se la casella studiata è ai bordi del campo
int riga,colonna=0;
if ((colonna==0)&&(riga==0))
{
if (prato[colonna][riga+1]!=9) prato[colonna][riga+1]++;
if (prato[colonna+1][riga]!=9) prato[colonna+1][riga]++;
if (prato[colonna+1][riga+1]!=9) prato[colonna+1][riga+1]++;
}
if ((colonna==9)&&(riga==9))
{
if (prato[colonna][riga-1]!=9) prato[colonna][riga-1]++;
if (prato[colonna-1][riga]!=9) prato[colonna-1][riga]++;
if (prato[colonna-1][riga-1]!=9) prato[colonna-1][riga-1]++;
}
if ((colonna==0)&&(riga==9))
{
if (prato[colonna][riga-1]!=9) prato[colonna][riga-1]++;
if (prato[colonna+1][riga]!=9) prato[colonna+1][riga]++;
if (prato[colonna+1][riga-1]!=9) prato[colonna+1][riga-1]++;
}
if ((colonna==9)&&(riga==0))
{
if (prato[colonna][riga+1]!=9) prato[colonna][riga+1]++;
if (prato[colonna-1][riga]!=9) prato[colonna-1][riga]++;
if (prato[colonna-1][riga+1]!=9) prato[colonna-1][riga+1]++;
}
for (int riga=1;riga<10;riga++)
{
colonna=0;
if (prato[colonna][riga]==9)
{
if (prato[colonna][riga+1]!=9) prato[colonna][riga+1]++;
if (prato[colonna][riga-1]!=9) prato[colonna][riga-1]++;
if (prato[colonna+1][riga]!=9) prato[colonna+1][riga]++;
if (prato[colonna+1][riga+1]!=9) prato[colonna+1][riga+1]++;
if (prato[colonna+1][riga-1]!=9) prato[colonna+1][riga-1]++;
}
}
for (int colonna=1;colonna<10;colonna++)
{
riga=0;
if (prato[colonna][riga]==9)
{
if (prato[colonna-1][riga+1]!=9) prato[colonna-1][riga+1]++;
if (prato[colonna-1][riga]!=9) prato[colonna-1][riga]++;
if (prato[colonna+1][riga]!=9) prato[colonna+1][riga]++;
if (prato[colonna+1][riga+1]!=9) prato[colonna+1][riga+1]++;
if (prato[colonna][riga+1]!=9) prato[colonna][riga+1]++;
}
}
for (int colonna=1;colonna<10;colonna++)
{
riga=9;
if (prato[colonna][riga]==9)
{
if (prato[colonna-1][riga-1]!=9) prato[colonna-1][riga-1]++;
if (prato[colonna-1][riga]!=9) prato[colonna-1][riga]++;
if (prato[colonna+1][riga]!=9) prato[colonna+1][riga]++;
if (prato[colonna+1][riga-1]!=9) prato[colonna+1][riga-1]++;
if (prato[colonna][riga-1]!=9) prato[colonna][riga-1]++;
}
}
for (int riga=1;riga<10;riga++)
{
colonna=9;
if (prato[colonna][riga]==9)
{
if (prato[colonna-1][riga+1]!=9) prato[colonna-1][riga+1]++;
if (prato[colonna-1][riga]!=9) prato[colonna-1][riga]++;
if (prato[colonna-1][riga-1]!=9) prato[colonna-1][riga-1]++;
if (prato[colonna][riga+1]!=9) prato[colonna][riga+1]++;
if (prato[colonna][riga-1]!=9) prato[colonna][riga-1]++;
}
}
for (int riga=1;riga<10;riga++)
{
for (int colonna=1;colonna<10;colonna++)
{
if (prato[colonna][riga]==9)
{
if (prato[colonna+1][riga+1]!=9) prato[colonna+1][riga+1]++;
if (prato[colonna+1][riga-1]!=9) prato[colonna+1][riga-1]++;
if (prato[colonna+1][riga]!=9) prato[colonna+1][riga]++;
if (prato[colonna][riga+1]!=9) prato[colonna][riga+1]++;
if (prato[colonna][riga-1]!=9) prato[colonna][riga-1]++;
if (prato[colonna-1][riga+1]!=9) prato[colonna-1][riga+1]++;
if (prato[colonna-1][riga-1]!=9) prato[colonna-1][riga-1]++;
if (prato[colonna-1][riga]!=9) prato[colonna-1][riga]++;
}
}
}
}
void riempimentopratovisivo()
{
char car=48; // per mettere i numeri da 0 a 9 nella prima riga
int cont,rigo,colonno=0;
pratovisivo[colonno][rigo]=0;
for (int riga=0;riga<1;riga++)
{
for (int colonna=1;colonna<11;colonna++)
{
pratovisivo[colonna][riga]=car;
car++;
}
}
car=65; //per mettere le lettere da A a J nella prima colonna
for (int colonna=0;colonna<1;colonna++)
{
for (int riga=1;riga<11;riga++)
{
pratovisivo[colonna][riga]=car;
car++;
}
}
for (int riga=1;riga<11;riga++)
{
for (int colonna=1;colonna<11;colonna++)
{
pratovisivo[colonna][riga]=219; //riempio l'array di quadratini eccetto la prima riga e la prima colonna
}
}
}
void escopratovisivo()
{
for (int riga=0;riga<11;riga++)
{
for (int colonna=0;colonna<11;colonna++)
{
cout<< pratovisivo[colonna][riga]<<" "; //faccio uscire a video il prato con i char
}
cout<<"\n"<<endl;
}
}
void escoprato() //faccio uscire il prato con gli int
{
for (int righio=0;righio<10;righio++)
{
for (int colonnio=0;colonnio<10;colonnio++)
{
switch (prato[colonnio][righio])
{
case 0:
pratovisivo[colonnio+1][righio+1]='0';
if (prato[colonnio+1][righio+1]==0) pratovisivo[colonnio+2][righio+2]='0';
if (prato[colonnio+1][righio-1]==0) pratovisivo[colonnio+2][righio]='0';
if (prato[colonnio+1][righio]==0) pratovisivo[colonnio+2][righio+1]='0';
if (prato[colonnio][righio+1]==0) pratovisivo[colonnio+1][righio+2]='0';
if (prato[colonnio][righio-1]==0) pratovisivo[colonnio+1][righio]='0';
if (prato[colonnio-1][righio+1]==0) pratovisivo[colonnio][righio+2]='0';
if (prato[colonnio-1][righio-1]==0) pratovisivo[colonnio][righio]='0';
if (prato[colonnio-1][righio]==0) pratovisivo[colonnio][righio+1]='0';
break;
case 1:
pratovisivo[colonnio+1][righio+1]='1';
break;
case 2:
pratovisivo[colonnio+1][righio+1]='2';
break;
case 3:
pratovisivo[colonnio+1][righio+1]='3';
break;
case 4:
pratovisivo[colonnio+1][righio+1]='4';
break;
case 5:
pratovisivo[colonnio+1][righio+1]='5';
break;
case 6:
pratovisivo[colonnio+1][righio+1]='6';
break;
case 7:
pratovisivo[colonnio+1][righio+1]='7';
break;
case 8:
pratovisivo[colonnio+1][righio+1]='8';
break;
case 9:
pratovisivo[colonnio+1][righio+1]=15;
break;
}
}
}
for (int riga=0;riga<10;riga++)
{
for (int colonna=0;colonna<10;colonna++)
{
cout<< prato[colonna][riga]<<" ";
}
cout<<"\n"<<endl;
}
}
void scoprimentocaselle()
{
int scelta,cont=0;
char righio1=0;
do
{
escopratovisivo();
cout<<" >Inserire colonna\n\n >Colonna:";
cin>>colonnio;
system("cls");
escopratovisivo();
cout<<" >Inserire riga\n\n >riga:";
cin>>righio1;
if ((righio1==65)||(righio1==97)) righio=0;
if ((righio1==66)||(righio1==98)) righio=1;
if ((righio1==67)||(righio1==99)) righio=2;
if ((righio1==68)||(righio1==100)) righio=3;
if ((righio1==69)||(righio1==101)) righio=4;
if ((righio1==70)||(righio1==102)) righio=5; // prendo l'input della riga che va bene sia maiuscola che minuscola
if ((righio1==71)||(righio1==103)) righio=6;
if ((righio1==72)||(righio1==104)) righio=7;
if ((righio1==73)||(righio1==105)) righio=8;
if ((righio1==74)||(righio1==106)) righio=9;
system("cls");
cout<<" >Scegliere operazione:\n\n >1.Scopri\n\n >2.Segna come mina\n\n >3.Non sono sicuro\n\n >4.Annulla\n\n >";
cin>>scelta;
system("cls");
switch (scelta) //quattro scelte: scopro la casella , la segno come una mina, la segno con un punto interrogativo, annullo l'operazione
{
case 1:
switch (prato[colonnio][righio])
{
case 0:
ripetizioneescozeri();
break;
case 1:
pratovisivo[colonnio+1][righio+1]='1';
break;
case 2:
pratovisivo[colonnio+1][righio+1]='2';
break;
case 3:
pratovisivo[colonnio+1][righio+1]='3';
break;
case 4:
pratovisivo[colonnio+1][righio+1]='4';
break;
case 5:
pratovisivo[colonnio+1][righio+1]='5';
break;
case 6:
pratovisivo[colonnio+1][righio+1]='6';
break;
case 7:
pratovisivo[colonnio+1][righio+1]='7';
break;
case 8:
pratovisivo[colonnio+1][righio+1]='8';
break;
case 9:
pratovisivo[colonnio+1][righio+1]='#'; //bomba
cont1=10;
break;
}
break;
case 2:
pratovisivo[colonnio+1][righio+1]=5;
cont++;
break;
case 3:
pratovisivo[colonnio+1][righio+1]=63;
break;
case 4:
break;
default:
cout<<"\n\n >Riprova";
break;
}
}while (cont!=10);
cout<<endl;
}
Il mio problema è sulla funzione ripetizioneescozeri() che quando viene richiamata il programma si ferma e non fa più nulla.
Spiegata brevemente quella unzione fa che: aperta una casella con uno zero scopra tutte le caselle intorno con gli zeri, poi si sposti a destra e ripeti tutta l'operazione finchè non arriva a fine campo.
Fatto questo torna alla casella iniziale e ripete il procedimento per le otto direzioni (destra,sinistra,su,giù,in alto a sinistra,in alto a destra, in basso a sinistra, in basso a destra).
Fatto questo la funzione ripete tutto quello appena fatto spostandosi di una casella a destra fin a raggiungere il bordo, per poi tornare alla casella iniziale e ripetere il tutto per ogni direzione.
Grazie in anticipo e scusate l'oscenità del codice.