Salve mi potete dire perchè non mi esce dalla do while
// Battaglia navale
#include<iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
int main()
{
int a,b,c,d,e,f,g,h;
int cu=0;
int cua=0;
int cp=0;
int cpa=0;
int m[5][5];
for(int i=0;i<5;i++)
{
for(int j=0;j<5;j++)
{
m[j]=0;
}
}
cout<<" Battaglia navale 1.0 by Carria Francesco"<<endl;
cout<<""<<endl;
cout<<" #per vincere devi affondare le 3 barche dell'avversario#"<<endl;
cout<<" #prima che lui affondi le tua#"<<endl;
cout<<" #chiunque sbagliera' bersaglio piu'9 volte#"<<endl;
cout<<" #decretera' la propria sconfitta #"<<endl;
cout<<" #Buon gioco#"<<endl;
cout<<""<<endl;
cout<<"Stai giocando su una griglia 5x5,inserisci le posizoni delle navi"<<endl;
cout<<"Come questa!"<<endl;
cout<<" 1 2 3 4 5"<<endl;
cout<<" |--------------------------------------------|"<<endl;
cout<<" 1 | | | | | |"<<endl;
cout<<" |--------------------------------------------|"<<endl;
cout<<" 2 | | | | | |"<<endl;
cout<<" |--------------------------------------------|"<<endl;
cout<<" 3 | | | | | |"<<endl;
cout<<" |--------------------------------------------|"<<endl;
cout<<" 4 | | | | | |"<<endl;
cout<<" |--------------------------------------------|"<<endl;
cout<<" 5 | | | | | |"<<endl;
cout<<" |--------------------------------------------|"<<endl;
for(int i=0;i<3;i++)
{
cout<<"Inserisci la x e la y della nave "<<i+1<<endl;
cin>>a;
cin>>b;
while(a==0 || a>5 ||b==0||b>5||m[a-1][b-1]==1 )
{
cout<<"Ricordati che stai giocando su una griglia 5x5"<<endl;
cout<<"Non inserire coordinate gia' occupate"<<endl;
cout<<"Riinserisci le coordinate della nave "<<i+1<<endl;
cin>>a;
cin>>b;
}
m[a-1][b-1]=1;
}
cout<<""<<endl;
cout<<"L'avversario sta posizonando le sue navi..."<<endl;
cout<<""<<endl;
for(int i=0;i<3;i++)
{
srand(time(NULL));
c= rand() % 5;
d= rand() % 5;
while(m[c]==1 || m[c][d]==2 )
{
srand(time(NULL));
c= rand() % 5;
d= rand() % 5;
}
m[c][d]=2;
//cout<<c<<endl;
//cout<<d<<endl;
}
system("cls");
cout<<" 1 2 3 4 5"<<endl;
cout<<" |--------------------------------------------|"<<endl;
cout<<" 1 | | | | | |"<<endl;
cout<<" |--------------------------------------------|"<<endl;
cout<<" 2 | | | | | |"<<endl;
cout<<" |--------------------------------------------|"<<endl;
cout<<" 3 | | | | | |"<<endl;
cout<<" |--------------------------------------------|"<<endl;
cout<<" 4 | | | | | |"<<endl;
cout<<" |--------------------------------------------|"<<endl;
cout<<" 5 | | | | | |"<<endl;
cout<<" |--------------------------------------------|"<<endl;
cout<<""<<endl;
cout<<" Devi attaccare,ognuno ha 4 attacchi a disposizione"<<endl;
do
{
for(int i=0;i<4;i++)
{
cout<<"Inserisci le cordinate(x,y) dell'attacco "<<i+1<<endl;
cin>>e;
cin>>f;
while(e==0 || e>5 ||f==0||f>5||m[e-1][f-1]==1 )
{
cout<<"Ricordati che stai giocando su una griglia 5x5"<<endl;
cout<<"Non inserire coordinate gia' occupate"<<endl;
cout<<"Riinserisci le coordinate dell' attacco numero"<<i+1<<endl;
cin>>e;
cin>>f;
}
if(m[e-1][f-1]==2)
{
cout<<""<<endl;
cout<<"Hai affondato una nave nemica complimenti!!!!"<<endl;
m[e][f]=0;
cu++;
}
else
{
cua++;
cout<<""<<endl;
cout<<"Acqua"<<endl;
cout<<"Hai fallito il bersaglio "<<cua<<" volte Attento"<<endl;
}
cout<<""<<endl;
cout<<"Fino ad adesso hai distrutto "<<cu<<" navi nemiche"<<endl;
}//system("cls");
cout<<" 1 2 3 4 5"<<endl;
cout<<" |--------------------------------------------|"<<endl;
cout<<" 1 | | | | | |"<<endl;
cout<<" |--------------------------------------------|"<<endl;
cout<<" 2 | | | | | |"<<endl;
cout<<" |--------------------------------------------|"<<endl;
cout<<" 3 | | | | | |"<<endl;
cout<<" |--------------------------------------------|"<<endl;
cout<<" 4 | | | | | |"<<endl;
cout<<" |--------------------------------------------|"<<endl;
cout<<" 5 | | | | | |"<<endl;
cout<<" |--------------------------------------------|"<<endl;
cout<<""<<endl;
cout<<"Sta attaccando l'avversario..."<<endl;
for(int i=0;i<4;i++)
{
srand(time(NULL));
g= rand() % 5;
h= rand() % 5;
while( m[g][h]==2 )
{
srand(time(NULL));
g= rand() % 5;
h= rand() % 5;
cout<<g<<endl;
cout<<h<<endl;
}
if(m[g][h]==1)
{
cout<<""<<endl;
cout<<"L'avversario ha affondato una tua nave !!!!"<<endl;
m[g][h]=0;
cp++;
}
else
{
cout<<"L'avversario non ha affondato nessuna tua nave !!!!"<<endl;
cpa++;
}
cout<<"L'avversario ha affondato "<<cp<<" navi alleate"<<endl;
cout<<" "<<endl;
cout<<" "<<endl;
cout<<" "<<endl;
cout<<" "<<endl;
}
cout<<"valore di cu: "<< cu <<endl;
cout<<"valore di cua: "<< cua <<endl;
cout<<"valore di cp: "<< cp <<endl;
cout<<"valore di cpa: "<< cpa <<endl;
bool condizione = (cu<3 || cua<9 || cp<3 || cpa<9);
string risultato = (condizione) ? "continuo il ciclo" : "esco dal ciclo";
cout<<risultato<<endl;
}
while(cu<3 || cua<9 || cp<3 || cpa<9);
if(cu==9)
{
cout<<" Hai affondato tutte le navi nemiche complimenti per la vittoria!!!"<<endl;
}
if(cua==9)
{
cout<<" Hai perso, hai mancato il bersaglio 9 volte"<<endl;
}
if(cp==3)
{
cout<<" Hai perso, l'avversario ha affondato tutte le tue navi"<<endl;
}
if(cpa==9)
{
cout<<" Hai vinto, l'avversario ha mancato il bersaglio 9 volte"<<endl;
}
system("pause");
return 0;
}