Vai al contenuto

Informatica 2 Liceo Scientifico Scienze Applicate/Es matrici battaglia navale

Wikibooks, manuali e libri di testo liberi.
Indice del libro

Battaglia Navale

[modifica | modifica sorgente]

Durante la seconda Guerra Mondiale i sottomarini Tedeschi affondano le navi rifornimento provenienti dall'America,e' vitale che il convoglio giunga a destinazione, scorta il convoglio affondando tutti i sommergibili. Che dire, bisogna proprio scrivere il codice per aiutare gli Alleati, pensiamo di rappresentare il mare come una griglia 5*3 dove le righe rappresentano la quota di profondita' dove innescare la bomba di profondita' e la colonna rappresenta l'area di mare da proteggere. La profondita' varia da 0 a 4 e le aree da difendere sono 3 . Decifrare i messaggi della macchina enigma e' stato facile con il progetto "mantovani" sai che in zona ci sono 2 U-Boat
I valori nella griglia hanno i seguenti significati:

0 ->   acqua
1 ->   sommergibile 
2 ->   acqua hai gia' provato in questa posizione
3 ->   sommergibile già colpito e affondato 

#include <cstdlib>
#include <iostream>

using namespace std;
/* colpisci i sottomarini
   il mare è una griglia 5*3  che si realizza mediante una matrice 
   devi colpire 2 sottomarini ( posizione random scelta dal pc);
   dando la profondità x;
   dando le coordinate y dove sganciare la bomba
   il programma tiene traccia dei tentativi fatti
   e quando vinci li visualizza .
*/ 
 
int main(int argc, char *argv[])
{
  int matrice[5][3];
  int i,j;
  int const nsommergibili=2;
  int conta;
  int x,y;
 
  //creo il mare; 0 è uguale a acqua 
  for(i=0;i<5;i++)
   for(j=0;j<3;j++)
         {matrice[i][j]=0;
         }
        
  //creo i sommergibili e li posiziono
  //1 è uguale a sommergibile       
  conta=0;
  while(conta<nsommergibili)  
   { x=rand()%5;
     y=rand()%3;
     if(matrice[x][y]==0)
       {  matrice[x][y]=1;
          conta++;
       }
  }
  
  cout<<"cerca i 2 sommergibili, il mare è una griglia 5 * 3 "<<endl;
  cout<<" la profondità x è 0,1,2,3,4   la posizione y e' 0,1,2"<<endl  ;
  
  int daaffondare=nsommergibili;
  while(daaffondare>0)
    {
    cout<<"inserisci le coordinate della bomba"<<endl;
    cout<<"x= ";
    cin>>x;
    cout<<"y= ";
    cin>>y;
    
    switch( matrice[x][y])
    {case 0: cout<<"acqua"<<endl;
             matrice[x][y]=2;
             break;
     case 1: cout<<"boom!"<<endl;
             daaffondare=daaffondare-1;
             matrice[x][y]=3;
             break;
     case 2: cout<<"hai già tentato in questa posizione"<<endl;
             break;
     case 3: cout<<"il sommergibile è già stato affondato"<<endl;
             break;              
      
    }    //fine switch
   }    //fine while
  
  cout<<"bravo!hai vinto,sommergibili affondati"<<endl;
  cout<<" questi sono stati i tentativi "<<endl;    
  for(i=0;i<5;i++)
   {for(j=0;j<3;j++)
      cout<<matrice[i][j]<<" ";
    cout<<endl;  
   }
  cout<<"0->acqua"<<endl;
  cout<<"1->sommergibile "<<endl;
  cout<<"2->acqua hai gia' provato in questa posizione"<<endl;
  cout<<"3->sommergibile colpito e affondato"<<endl; 
   
  return 0;
}