Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdlib>
- #include <time.h>
- #include <windows.h>
- using namespace std;
- void legenda(),visualizza_mio(),posizionamento1x4(),posizionamento1x3(),posizionamento1x2(),posizionamento1x1(),posizionamento1x4_cpu(),posizionamento1x3_cpu(),posizionamento1x2_cpu(),posizionamento1x1_cpu(),SetColor(),attacco(),difesa(),controllo();
- char direzione;
- int colonna,riga,scelta,attacco_riga,attacco_colonna;
- int i,k;
- int mio_campo[8][8],tuo_campo[8][8],colore[8][8],colore_cpu[8][8];
- int nave1x4 = 0;
- int affondate = 0;
- int affondate_cpu = 0;
- void SetColor(short Color)
- {
- HANDLE hCon = GetStdHandle(STD_OUTPUT_HANDLE);
- SetConsoleTextAttribute(hCon,Color);
- }
- main()
- {
- SetColor(15);
- srand(time(NULL));
- for(i=0;i<8;i++)
- {
- for(k=0;k<8;k++)
- {
- mio_campo[i][k]=0;
- tuo_campo[i][k]=0;
- colore[i][k]=15;
- colore_cpu[i][k]=15;
- }
- }
- // 1 x stazza 4
- posizionamento1x4();
- posizionamento1x4_cpu();
- // 2 x stazza 3
- for(int i=0; i<2; i++)
- {
- posizionamento1x3();
- posizionamento1x3_cpu();
- }
- // 3 x stazza 2
- for(int i=0; i<3; i++)
- {
- posizionamento1x2();
- posizionamento1x2_cpu();
- }
- // 4 x stazza 1
- for(int i=0; i<4; i++)
- {
- posizionamento1x1();
- posizionamento1x1_cpu();
- }
- system("cls");
- cout << endl << "Navi posizionate!" << endl;
- visualizza_mio();
- while(1)
- {
- attacco();
- if(affondate_cpu == 20)
- {
- cout<<"Hai vinto!"<<endl;
- break;
- }
- system("cls");
- difesa();
- if(nave1x4 == 4)
- {
- cout<<"Hanno affondato la tua nave 1x4!"<<endl;
- cout<<"Hai perso!"<<endl;
- break;
- }
- visualizza_mio();
- system("cls");
- }
- system("pause");
- return 0;
- }
- void legenda()
- {
- riga=0;
- cout<<"\t 0 1 2 3 4 5 6 7"<<endl;
- for(i=0;i<8;i++)
- {
- cout<<"\t";
- for(k=0;k<8;k++)
- {
- cout<<((char)218)<<((char)196)<<((char)196)<<((char)191)<<" ";
- }
- cout<<endl<<riga<<"\t";
- for(k=0;k<8;k++)
- {
- cout<<((char)179)<<" "<<" "<<((char)179)<<" ";
- }
- cout<<endl<<"\t";
- for(k=0;k<8;k++)
- {
- cout<<((char)192)<<((char)196)<<((char)196)<<((char)217)<<" ";
- }
- cout<<endl;
- riga++;
- SetColor(15);
- }
- }
- void visualizza_mio()
- {
- riga=0;
- cout<<"\t 0 1 2 3 4 5 6 7"<<endl;
- for(i=0;i<8;i++)
- {
- SetColor(15);
- cout<<"\t";
- for(k=0;k<8;k++)
- {
- SetColor(colore[i][k]);
- cout<<((char)218)<<((char)196)<<((char)196)<<((char)191)<<" ";
- }
- SetColor(15);
- cout<<endl<<riga<<"\t";
- for(k=0;k<8;k++)
- {
- SetColor(colore[i][k]);
- switch(mio_campo[i][k])
- {
- case 0:
- cout<<((char)179)<<" "<<" "<<((char)179)<<" ";
- break;
- case 1:
- cout<<((char)179)<<((char)223)<<((char)223)<<((char)179)<<" ";
- break;
- case 2:
- cout<<((char)179)<<((char)254)<<((char)254)<<((char)179)<<" ";
- break;
- }
- }
- cout<<endl<<"\t";
- for(k=0;k<8;k++)
- {
- SetColor(colore[i][k]);
- cout<<((char)192)<<((char)196)<<((char)196)<<((char)217)<<" ";
- }
- cout<<endl;
- riga++;
- SetColor(15);
- }
- system("pause");
- }
- void posizionamento1x4()
- {
- riga=rand()%(8);
- colonna=rand()%(8);
- scelta=rand()%(4)+1;
- switch(scelta)
- {
- case 1:
- if(riga-3<0)
- {
- posizionamento1x4();
- }
- else
- {
- mio_campo[riga][colonna]=1;
- mio_campo[riga-1][colonna]=1;
- mio_campo[riga-2][colonna]=1;
- mio_campo[riga-3][colonna]=1;
- }
- break;
- case 2:
- if(colonna+3>7)
- {
- posizionamento1x4();
- }
- else
- {
- mio_campo[riga][colonna]=1;
- mio_campo[riga][colonna+1]=1;
- mio_campo[riga][colonna+2]=1;
- mio_campo[riga][colonna+3]=1;
- }
- break;
- case 3:
- if(riga+3>7)
- {
- posizionamento1x4();
- }
- else
- {
- mio_campo[riga][colonna]=1;
- mio_campo[riga+1][colonna]=1;
- mio_campo[riga+2][colonna]=1;
- mio_campo[riga+3][colonna]=1;
- }
- break;
- case 4:
- if(colonna-3<0)
- {
- posizionamento1x4();
- }
- else
- {
- mio_campo[riga][colonna]=1;
- mio_campo[riga][colonna-1]=1;
- mio_campo[riga][colonna-2]=1;
- mio_campo[riga][colonna-3]=1;
- }
- break;
- }
- }
- void posizionamento1x3()
- {
- riga=rand()%(8);
- colonna=rand()%(8);
- scelta=rand()%(4)+1;
- switch(scelta)
- {
- case 1:
- if(riga-2<0 || mio_campo[riga][colonna]!=0 || mio_campo[riga-1][colonna]!=0 || mio_campo[riga-2][colonna]!=0)
- {
- posizionamento1x3();
- }
- else
- {
- mio_campo[riga][colonna]=2;
- mio_campo[riga-1][colonna]=2;
- mio_campo[riga-2][colonna]=2;
- }
- break;
- case 2:
- if(colonna+2>7 || mio_campo[riga][colonna]!=0 || mio_campo[riga][colonna+1]!=0 || mio_campo[riga][colonna+1]!=0)
- {
- posizionamento1x3();
- }
- else
- {
- mio_campo[riga][colonna]=2;
- mio_campo[riga][colonna+1]=2;
- mio_campo[riga][colonna+2]=2;
- }
- break;
- case 3:
- if(riga+2>7 || mio_campo[riga][colonna]!=0 || mio_campo[riga+1][colonna]!=0 || mio_campo[riga+2][colonna]!=0)
- {
- posizionamento1x3();
- }
- else
- {
- mio_campo[riga][colonna]=2;
- mio_campo[riga+1][colonna]=2;
- mio_campo[riga+2][colonna]=2;
- }
- break;
- case 4:
- if(colonna-2<0 || mio_campo[riga][colonna]!=0 || mio_campo[riga][colonna-1]!=0 || mio_campo[riga][colonna-2]!=0)
- {
- posizionamento1x3();
- }
- else
- {
- mio_campo[riga][colonna]=2;
- mio_campo[riga][colonna-1]=2;
- mio_campo[riga][colonna-2]=2;
- }
- break;
- }
- }
- void posizionamento1x2()
- {
- riga=rand()%(8);
- colonna=rand()%(8);
- scelta=rand()%(4)+1;
- switch(scelta)
- {
- case 1:
- if(riga-1<0 || mio_campo[riga][colonna]!=0 || mio_campo[riga-1][colonna]!=0)
- {
- posizionamento1x2();
- }
- else
- {
- mio_campo[riga][colonna]=2;
- mio_campo[riga-1][colonna]=2;
- }
- break;
- case 2:
- if(colonna+1>7 || mio_campo[riga][colonna]!=0 || mio_campo[riga][colonna+1]!=0)
- {
- posizionamento1x2();
- }
- else
- {
- mio_campo[riga][colonna]=2;
- mio_campo[riga][colonna+1]=2;
- }
- break;
- case 3:
- if(riga+1>7 || mio_campo[riga][colonna]!=0 || mio_campo[riga+1][colonna]!=0)
- {
- posizionamento1x2();
- }
- else
- {
- mio_campo[riga][colonna]=2;
- mio_campo[riga+1][colonna]=2;
- }
- break;
- case 4:
- if(colonna-1<0 || mio_campo[riga][colonna]!=0 || mio_campo[riga][colonna-1]!=0)
- {
- posizionamento1x2();
- }
- else
- {
- mio_campo[riga][colonna]=2;
- mio_campo[riga][colonna-1]=2;
- }
- break;
- }
- }
- void posizionamento1x1()
- {
- riga=rand()%(8);
- colonna=rand()%(8);
- scelta=rand()%(4)+1;
- switch(scelta)
- {
- case 1:
- if(mio_campo[riga][colonna]!=0 )
- {
- posizionamento1x1();
- }
- else
- {
- mio_campo[riga][colonna]=2;
- }
- break;
- case 2:
- if(mio_campo[riga][colonna]!=0)
- {
- posizionamento1x1();
- }
- else
- {
- mio_campo[riga][colonna]=2;
- }
- break;
- case 3:
- if(mio_campo[riga][colonna]!=0)
- {
- posizionamento1x1();
- }
- else
- {
- mio_campo[riga][colonna]=2;
- }
- break;
- case 4:
- if(mio_campo[riga][colonna]!=0)
- {
- posizionamento1x1();
- }
- else
- {
- mio_campo[riga][colonna]=2;
- }
- break;
- }
- }
- void posizionamento1x4_cpu()
- {
- riga=rand()%(8);
- colonna=rand()%(8);
- scelta=rand()%(4)+1;
- switch(scelta)
- {
- case 1:
- if(riga-3<0)
- {
- posizionamento1x4_cpu();
- }
- else
- {
- tuo_campo[riga][colonna]=1;
- tuo_campo[riga-1][colonna]=1;
- tuo_campo[riga-2][colonna]=1;
- tuo_campo[riga-3][colonna]=1;
- }
- break;
- case 2:
- if(colonna+3>7)
- {
- posizionamento1x4_cpu();
- }
- else
- {
- tuo_campo[riga][colonna]=1;
- tuo_campo[riga][colonna+1]=1;
- tuo_campo[riga][colonna+2]=1;
- tuo_campo[riga][colonna+3]=1;
- }
- break;
- case 3:
- if(riga+3>7)
- {
- posizionamento1x4_cpu();
- }
- else
- {
- tuo_campo[riga][colonna]=1;
- tuo_campo[riga+1][colonna]=1;
- tuo_campo[riga+2][colonna]=1;
- tuo_campo[riga+3][colonna]=1;
- }
- break;
- case 4:
- if(colonna-3<0)
- {
- posizionamento1x4_cpu();
- }
- else
- {
- tuo_campo[riga][colonna]=1;
- tuo_campo[riga][colonna-1]=1;
- tuo_campo[riga][colonna-2]=1;
- tuo_campo[riga][colonna-3]=1;
- }
- break;
- }
- }
- void posizionamento1x3_cpu()
- {
- riga=rand()%(8);
- colonna=rand()%(8);
- scelta=rand()%(4)+1;
- switch(scelta)
- {
- case 1:
- if(riga-2<0 || tuo_campo[riga][colonna]!=0 || tuo_campo[riga-1][colonna]!=0 || tuo_campo[riga-2][colonna]!=0)
- {
- posizionamento1x3_cpu();
- }
- else
- {
- tuo_campo[riga][colonna]=2;
- tuo_campo[riga-1][colonna]=2;
- tuo_campo[riga-2][colonna]=2;
- }
- break;
- case 2:
- if(colonna+2>7 || tuo_campo[riga][colonna]!=0 || tuo_campo[riga][colonna+1]!=0 || tuo_campo[riga][colonna+1]!=0)
- {
- posizionamento1x3_cpu();
- }
- else
- {
- tuo_campo[riga][colonna]=2;
- tuo_campo[riga][colonna+1]=2;
- tuo_campo[riga][colonna+2]=2;
- }
- break;
- case 3:
- if(riga+2>7 || tuo_campo[riga][colonna]!=0 || tuo_campo[riga+1][colonna]!=0 || tuo_campo[riga+2][colonna]!=0)
- {
- posizionamento1x3_cpu();
- }
- else
- {
- tuo_campo[riga][colonna]=2;
- tuo_campo[riga+1][colonna]=2;
- tuo_campo[riga+2][colonna]=2;
- }
- break;
- case 4:
- if(colonna-2<0 || tuo_campo[riga][colonna]!=0 || tuo_campo[riga][colonna-1]!=0 || tuo_campo[riga][colonna-2]!=0)
- {
- posizionamento1x3_cpu();
- }
- else
- {
- tuo_campo[riga][colonna]=2;
- tuo_campo[riga][colonna-1]=2;
- tuo_campo[riga][colonna-2]=2;
- }
- break;
- }
- }
- void posizionamento1x2_cpu()
- {
- riga=rand()%(8);
- colonna=rand()%(8);
- scelta=rand()%(4)+1;
- switch(scelta)
- {
- case 1:
- if(riga-1<0 || tuo_campo[riga][colonna]!=0 || tuo_campo[riga-1][colonna]!=0)
- {
- posizionamento1x2_cpu();
- }
- else
- {
- tuo_campo[riga][colonna]=2;
- tuo_campo[riga-1][colonna]=2;
- }
- break;
- case 2:
- if(colonna+1>7 || tuo_campo[riga][colonna]!=0 || tuo_campo[riga][colonna+1]!=0)
- {
- posizionamento1x2_cpu();
- }
- else
- {
- tuo_campo[riga][colonna]=2;
- tuo_campo[riga][colonna+1]=2;
- }
- break;
- case 3:
- if(riga+1>7 || tuo_campo[riga][colonna]!=0 || tuo_campo[riga+1][colonna]!=0)
- {
- posizionamento1x2_cpu();
- }
- else
- {
- tuo_campo[riga][colonna]=2;
- tuo_campo[riga+1][colonna]=2;
- }
- break;
- case 4:
- if(colonna-1<0 || tuo_campo[riga][colonna]!=0 || tuo_campo[riga][colonna-1]!=0)
- {
- posizionamento1x2_cpu();
- }
- else
- {
- tuo_campo[riga][colonna]=2;
- tuo_campo[riga][colonna-1]=2;
- }
- break;
- }
- }
- void posizionamento1x1_cpu()
- {
- riga=rand()%(8);
- colonna=rand()%(8);
- scelta=rand()%(4)+1;
- switch(scelta)
- {
- case 1:
- if(tuo_campo[riga][colonna]!=0 )
- {
- posizionamento1x1_cpu();
- }
- else
- {
- tuo_campo[riga][colonna]=2;
- }
- break;
- case 2:
- if(tuo_campo[riga][colonna]!=0)
- {
- posizionamento1x1_cpu();
- }
- else
- {
- tuo_campo[riga][colonna]=2;
- }
- break;
- case 3:
- if(tuo_campo[riga][colonna]!=0)
- {
- posizionamento1x1_cpu();
- }
- else
- {
- tuo_campo[riga][colonna]=2;
- }
- break;
- case 4:
- if(tuo_campo[riga][colonna]!=0)
- {
- posizionamento1x1_cpu();
- }
- else
- {
- tuo_campo[riga][colonna]=2;
- }
- break;
- }
- }
- void attacco()
- {
- riga=0;
- cout<<"\t 0 1 2 3 4 5 6 7"<<endl;
- for(i=0;i<8;i++)
- {
- cout<<"\t";
- for(k=0;k<8;k++)
- {
- SetColor(colore_cpu[i][k]);
- cout<<((char)218)<<((char)196)<<((char)196)<<((char)191)<<" ";
- }
- SetColor(15);
- cout<<endl<<riga<<"\t";
- for(k=0;k<8;k++)
- {
- SetColor(colore_cpu[i][k]);
- cout<<((char)179)<<((char)219)<<((char)219)<<((char)179)<<" ";
- }
- cout<<endl<<"\t";
- for(k=0;k<8;k++)
- {
- SetColor(colore_cpu[i][k]);
- cout<<((char)192)<<((char)196)<<((char)196)<<((char)217)<<" ";
- }
- cout<<endl;
- riga++;
- SetColor(15);
- }
- // Scelta target riga
- do
- {
- cout<<"scegli dove attaccare:\nriga: ";
- cin>>attacco_riga;
- }while(attacco_riga<0 || attacco_riga>7);
- // Scelta target colonna
- do
- {
- cout<<"colonna: ";
- cin>>attacco_colonna;
- }while(attacco_colonna<0 || attacco_colonna>7);
- // Controllo se la casella è già attaccata
- if(colore_cpu[attacco_riga][attacco_colonna]!=15)
- {
- cout<<"CASELLA GIA\' ATTACCATA!!"<<endl;
- system("pause");
- attacco();
- }
- system("cls");
- // acqua
- if(tuo_campo[attacco_riga][attacco_colonna]==0)
- {
- colore_cpu[attacco_riga][attacco_colonna]=9;
- }
- else //fuoco
- {
- colore_cpu[attacco_riga][attacco_colonna]=12;
- switch(tuo_campo[attacco_riga][attacco_colonna])
- {
- case 1:
- affondate_cpu++;
- break;
- case 2:
- affondate_cpu++;
- break;
- }
- }
- riga=0;
- cout<<"\t 0 1 2 3 4 5 6 7"<<endl;
- for(i=0;i<8;i++)
- {
- cout<<"\t";
- for(k=0;k<8;k++)
- {
- SetColor(colore_cpu[i][k]);
- cout<<((char)218)<<((char)196)<<((char)196)<<((char)191)<<" ";
- }
- SetColor(15);
- cout<<endl<<riga<<"\t";
- for(k=0;k<8;k++)
- {
- SetColor(colore_cpu[i][k]);
- cout<<((char)179)<<((char)219)<<((char)219)<<((char)179)<<" ";
- }
- cout<<endl<<"\t";
- for(k=0;k<8;k++)
- {
- SetColor(colore_cpu[i][k]);
- cout<<((char)192)<<((char)196)<<((char)196)<<((char)217)<<" ";
- }
- cout<<endl;
- riga++;
- SetColor(15);
- }
- system("pause");
- }
- void difesa()
- {
- attacco_riga=rand()%(8);
- attacco_colonna=rand()%(8);
- // Controllo se il target è già stato selezionato
- if(colore[attacco_riga][attacco_colonna]!=15)
- {
- difesa();
- }
- // acqua
- if(mio_campo[attacco_riga][attacco_colonna]==0)
- {
- colore[attacco_riga][attacco_colonna]=9;
- }
- else //fuoco
- {
- colore[attacco_riga][attacco_colonna]=12;
- switch(mio_campo[attacco_riga][attacco_colonna])
- {
- case 1:
- nave1x4++;
- break;
- case 2:
- affondate++;
- break;
- }
- }
- cout<<endl<<"L' avversario ha attaccato la casella: "<<attacco_riga<<","<<attacco_colonna<<endl<<endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement