Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Forza 4! - NEW Forza4.cpp

NEW Forza4.cpp

Caricato da: Black Shadow
Scarica il programma completo

  1. #include <iostream>
  2. #include <ctime>
  3. using namespace std;
  4.  
  5. #define RIGHE 9
  6. #define COLONNE 9
  7.  
  8. int inizio ();              //La funzione che coordina tutte le altre.
  9. void disegna ();            //Questa funzione serve per disegnare il campo di gioco.
  10. int InserisciPC ();         //Il PC inserisce la pedina.
  11. int InserisciTu ();         //Tu inserisci la pedina.
  12. void TrovaVincitore ();     //Questa funzione vede se tu hai vinto.
  13. void TrovaVincitorePC ();   //Questa funzione vede se tu hai perso.
  14.  
  15. char mappa[RIGHE][COLONNE];
  16. int turno;                  //0 = Turno Tuo / 1 = Turno Suo
  17. int pezzo;                  //La colonna dove inserisci il pezzo
  18. int perdi=-1;
  19.  
  20. int main () {
  21.     //Inizializzazione mappa
  22.     for (int n = 0 ; n < 9 ; n++) {
  23.         for (int a = 0 ; a < 9 ; a++) {
  24.             mappa[n][a]=0;
  25.             }
  26.         }
  27.     int scegli, Start;
  28.     cout << "     NEW Forza4!\n";
  29.     cout << "   By Black Shadow";
  30.     cout << "\n\n\n(1)-(Gioca)\n(2)-(Istruzioni)\n(3)-(Esci)\n\n\n";
  31.     cin >> scegli;
  32.     switch (scegli) {
  33.            case 1:
  34.                 cout << "\n\n(1)-(Inizio-Io)\n(2)-(Inizia-PC)\n\nChi deve iniziare?\n\n";
  35.                 cin >> Start;
  36.                 (Start==1) ? turno=0 : turno=1;
  37.                 inizio ();
  38.            case 2:
  39.                 cout << "Questo e' il gioco di Forza 4!\n\n"; system("Pause"); system("cls"); scegli=0; main ();
  40.            case 3:
  41.                 cout << "Grazie per aver giocato a NEW Forza 4!\n\n"; exit (1);
  42.            default:
  43.                 cout << "Devi inserire 1, 2 o 3!\n\n"; system("Pause"); system("cls"); scegli=0; main ();
  44.                 }
  45.     system("Pause");
  46.     }
  47.  
  48. int inizio () {
  49.     disegna ();                               //Disegna il campo
  50.     TrovaVincitore ();                        //Vede se tu hai vinto
  51.     TrovaVincitorePC ();                      //Vede se ha vinto il PC
  52.     if (turno==0) {InserisciTu ();}           //Vede se è il tuo turno
  53.     else if (turno==1) { InserisciPC ();}     //o quello del PC
  54. }
  55.  
  56. void disegna () {                             //Disegna il campo di gioco
  57.      system("cls");
  58.      cout << endl << "-------------------------------------" << endl;
  59.      cout << "| " << mappa[8][0] << " | " << mappa[8][1] << " | " << mappa[8][2] << " | " << mappa[8][3] << " | " << mappa[8][4] << " | " << mappa[8][5] << " | " << mappa[8][6] << " | " << mappa[8][7] << " | " << mappa[8][8] << " | ";
  60.      cout << endl << "-------------------------------------" << endl;
  61.      cout << "| " << mappa[7][0] << " | " << mappa[7][1] << " | " << mappa[7][2] << " | " << mappa[7][3] << " | " << mappa[7][4] << " | " << mappa[7][5] << " | " << mappa[7][6] << " | " << mappa[7][7] << " | " << mappa[7][8] << " | ";
  62.      cout << endl << "-------------------------------------" << endl;
  63.      cout << "| " << mappa[6][0] << " | " << mappa[6][1] << " | " << mappa[6][2] << " | " << mappa[6][3] << " | " << mappa[6][4] << " | " << mappa[6][5] << " | " << mappa[6][6] << " | " << mappa[6][7] << " | " << mappa[6][8] << " | ";
  64.      cout << endl << "-------------------------------------" << endl;
  65.      cout << "| " << mappa[5][0] << " | " << mappa[5][1] << " | " << mappa[5][2] << " | " << mappa[5][3] << " | " << mappa[5][4] << " | " << mappa[5][5] << " | " << mappa[5][6] << " | " << mappa[5][7] << " | " << mappa[5][8] << " | ";
  66.      cout << endl << "-------------------------------------" << endl;
  67.      cout << "| " << mappa[4][0] << " | " << mappa[4][1] << " | " << mappa[4][2] << " | " << mappa[4][3] << " | " << mappa[4][4] << " | " << mappa[4][5] << " | " << mappa[4][6] << " | " << mappa[4][7] << " | " << mappa[4][8] << " | ";
  68.      cout << endl << "-------------------------------------" << endl;
  69.      cout << "| " << mappa[3][0] << " | " << mappa[3][1] << " | " << mappa[3][2] << " | " << mappa[3][3] << " | " << mappa[3][4] << " | " << mappa[3][5] << " | " << mappa[3][6] << " | " << mappa[3][7] << " | " << mappa[3][8] << " | ";
  70.      cout << endl << "-------------------------------------" << endl;
  71.      cout << "| " << mappa[2][0] << " | " << mappa[2][1] << " | " << mappa[2][2] << " | " << mappa[2][3] << " | " << mappa[2][4] << " | " << mappa[2][5] << " | " << mappa[2][6] << " | " << mappa[2][7] << " | " << mappa[2][8] << " | ";
  72.      cout << endl << "-------------------------------------" << endl;
  73.      cout << "| " << mappa[1][0] << " | " << mappa[1][1] << " | " << mappa[1][2] << " | " << mappa[1][3] << " | " << mappa[1][4] << " | " << mappa[1][5] << " | " << mappa[1][6] << " | " << mappa[1][7] << " | " << mappa[1][8] << " | ";
  74.      cout << endl << "-------------------------------------" << endl;
  75.      cout << "| " << mappa[0][0] << " | " << mappa[0][1] << " | " << mappa[0][2] << " | " << mappa[0][3] << " | " << mappa[0][4] << " | " << mappa[0][5] << " | " << mappa[0][6] << " | " << mappa[0][7] << " | " << mappa[0][8] << " | ";
  76.      cout << endl << "-------------------------------------" << endl;
  77.      cout         << "  0   1   2   3   4   5   6   7   8\n\n";
  78.      }
  79.  
  80. int InserisciTu () {
  81.     cout << "Scegli una colonna (0-8) :  ";
  82.     do cin >> pezzo;
  83.     while (pezzo < 0 || pezzo > 8);
  84.     for (int h=0;h<9;h++) {
  85.         if (mappa[h][pezzo]==0) { mappa[h][pezzo] = 2; turno=1; inizio (); break;}
  86.         }
  87.         cout << "\n\nQuesta colonna è piena!\n\n";
  88.         InserisciTu ();
  89. }
  90.      
  91. int InserisciPC () {
  92.     cout << "Giocata del computer:";
  93.     int a,b,c,d,n;
  94.     srand((unsigned)time( NULL )); // inizializza la funzione rand()
  95.  
  96. ////////////////////////////////////////////////////////////////////////////////
  97. ///////////////Mosse di Attacco Vincenti////////////////////////////////////////
  98. ////////////////////////////////////////////////////////////////////////////////
  99.  
  100. ///////////////Attacco Verticale/////////////////////////////////////////////////
  101.     for (a=0,b=1,c=2,d=3,n=0;d<9;a++,b++,c++,d++) {
  102.         if (mappa[a][n]==1 && mappa[b][n]==1 && mappa[c][n]==1  && mappa[d][n]==0) {
  103.                            mappa[d][n]=1; turno=0; inizio (); break;
  104.                            }
  105.        if (d==8 && n<9) {n++;a=-1;b=0;c=1;d=2; continue;}
  106.         }
  107.  
  108. ///////////////Attacco Orizzontale [VersoDestra]{Ultimo Della Fila}/////////////
  109. /*Prima Riga*/        for (a=0,b=1,c=2,d=3;d<9;a++,b++,c++,d++) {
  110.             if (mappa[0][a]==1 && mappa[0][b]==1 && mappa[0][c]==1 && mappa[0][d]==0) {
  111.                                mappa[0][d]=1; turno=0; inizio (); break;
  112.                                }
  113.             }
  114. /*Altre Righe*/    for (a=0,b=1,c=2,d=3,n=0;d<9;a++,b++,c++,d++) {
  115.         if (mappa[n][a]==1 && mappa[n][b]==1 && mappa[n][c]==1  
  116.         && mappa[n-1][d]!=0 && mappa[n][d]==0) {
  117.                            mappa[n][d]=1; turno=0; inizio (); break;
  118.                            }
  119.        if (d==8 && n<9) {n++;a=-1;b=0;c=1;d=2; continue;}
  120.         }
  121. ///////////////Attacco Orizzontale [VersoDestra]{Penultimo Della Fila}//////////
  122. /*Prima Riga*/        for (a=0,b=1,c=2,d=3;d<9;a++,b++,c++,d++) {
  123.             if (mappa[0][a]==1 && mappa[0][b]==1 && mappa[0][d]==1 && mappa[0][c]==0) {
  124.                                mappa[0][c]=1; turno=0; inizio (); break;
  125.                                }
  126.             }
  127. /*Altre Righe*/    for (a=0,b=1,c=2,d=3,n=0;d<9;a++,b++,c++,d++) {
  128.         if (mappa[n][a]==1 && mappa[n][b]==1 && mappa[n][d]==1  
  129.         && mappa[n-1][c]!=0 && mappa[n][c]==0) {
  130.                            mappa[n][c]=1; turno=0; inizio (); break;
  131.                            }
  132.        if (d==8 && n<9) {n++;a=-1;b=0;c=1;d=2; continue;}
  133.         }
  134.  
  135. ///////////////Attacco Orizzontale [VersoDestra]{Terzultimo Della Fila}/////////
  136. /*Prima Riga*/        for (a=0,b=1,c=2,d=3;d<9;a++,b++,c++,d++) {
  137.             if (mappa[0][a]==1 && mappa[0][c]==1 && mappa[0][d]==1 && mappa[0][b]==0) {
  138.                                mappa[0][b]=1; turno=0; inizio (); break;
  139.                                }
  140.             }
  141. /*Altre Righe*/    for (a=0,b=1,c=2,d=3,n=0;d<9;a++,b++,c++,d++) {
  142.         if (mappa[n][a]==1 && mappa[n][c]==1 && mappa[n][d]==1  
  143.         && mappa[n-1][b]!=0 && mappa[n][b]==0) {
  144.                            mappa[n][b]=1; turno=0; inizio (); break;
  145.                            }
  146.        if (d==8 && n<9) {n++;a=-1;b=0;c=1;d=2; continue;}
  147.         }
  148.  
  149. ///////////////Attacco Orizzontale [VersoSinistra]{Ultimo Della Fila}///////////
  150. /*Prima Riga*/        for (a=8,b=7,c=6,d=5;d>0;a--,b--,c--,d--) {
  151.             if (mappa[0][a]==1 && mappa[0][b]==1 && mappa[0][c]==1 && mappa[0][d]==0) {
  152.                                mappa[0][d]=1; turno=0; inizio (); break;
  153.                                }
  154.             }
  155. /*Altre Righe*/    for (a=8,b=7,c=6,d=5,n=1;d>0;a--,b--,c--,d--) {
  156.         if (mappa[n][a]==1 && mappa[n][b]==1 && mappa[n][c]==1  
  157.         && mappa[n-1][d]!=0 && mappa[n][d]==0) {
  158.                            mappa[n][d]=1; turno=0; inizio (); break;
  159.                            }
  160.        if (d==0 && n<9) {n++;a=9;b=8;c=7;d=6; continue;}
  161.         }
  162.  
  163. ///////////////Attacco Orizzontale [VersoSinistra]{Penultimo Della Fila}////////
  164. /*Prima Riga*/        for (a=8,b=7,c=6,d=5;d>0;a--,b--,c--,d--) {
  165.             if (mappa[0][a]==1 && mappa[0][b]==1 && mappa[0][d]==1 && mappa[0][c]==0) {
  166.                                mappa[0][c]=1; turno=0; inizio (); break;
  167.                                }
  168.             }
  169. /*Altre Righe*/    for (a=8,b=7,c=6,d=5,n=1;d>0;a--,b--,c--,d--) {
  170.         if (mappa[n][a]==1 && mappa[n][b]==1 && mappa[n][d]==1  
  171.         && mappa[n-1][c]!=0 && mappa[n][c]==0) {
  172.                            mappa[n][c]=1; turno=0; inizio (); break;
  173.                            }
  174.        if (d==0 && n<9) {n++;a=9;b=8;c=7;d=6; continue;}
  175.         }
  176.  
  177. ///////////////Attacco Orizzontale [VersoSinistra]{Terzultimo Della Fila}///////
  178. /*Prima Riga*/        for (a=8,b=7,c=6,d=5;d>0;a--,b--,c--,d--) {
  179.             if (mappa[0][a]==1 && mappa[0][c]==1 && mappa[0][d]==1 && mappa[0][b]==0) {
  180.                                mappa[0][b]=1; turno=0; inizio (); break;
  181.                                }
  182.             }
  183. /*Altre Righe*/    for (a=8,b=7,c=6,d=5,n=1;d>0;a--,b--,c--,d--) {
  184.         if (mappa[n][a]==1 && mappa[n][c]==1 && mappa[n][d]==1  
  185.         && mappa[n-1][b]!=0 && mappa[n][b]==0) {
  186.                            mappa[n][b]=1; turno=0; inizio (); break;
  187.                            }
  188.        if (d==0 && n<9) {n++;a=9;b=8;c=7;d=6; continue;}
  189.         }
  190.  
  191. ///////////////Attacco Diagonale [VersoDestra]{Ultimo Della Fila}///////////////
  192.     for (a=0,b=1,c=2,d=3,n=0;d<9;a++,b++,c++,d++) {
  193.         if (mappa[n][a]==1 && mappa[n+1][b]==1 && mappa[n+2][c]==1  
  194.         && mappa[n+2][d]!=0 && mappa[n+3][d]==0) {
  195.                            mappa[n+3][d]=1; turno=0; inizio (); break;
  196.                            }
  197.        if (d==8 && n<5) {n++;a=-1;b=0;c=1;d=2; continue;}
  198.         }
  199.  
  200. ///////////////Attacco Diagonale [VersoDestra]{Penultimo Della Fila}////////////
  201.     for (a=0,b=1,c=2,d=3,n=0;d<9;a++,b++,c++,d++) {
  202.         if (mappa[n][a]==1 && mappa[n+1][b]==1 && mappa[n+2][c]==0  
  203.         && mappa[n+1][c]!=0 && mappa[n+3][d]==1) {
  204.                            mappa[n+2][c]=1; turno=0; inizio (); break;
  205.                            }
  206.        if (d==8 && n<5) {n++;a=-1;b=0;c=1;d=2; continue;}
  207.         }
  208.  
  209. ///////////////Attacco Diagonale [VersoDestra]{Terzultimo Della Fila}///////////
  210.     for (a=0,b=1,c=2,d=3,n=0;d<9;a++,b++,c++,d++) {
  211.         if (mappa[n][a]==1 && mappa[n+1][b]==0 && mappa[n+2][c]==1  
  212.         && mappa[n+3][d]==1 && mappa[n][b]!=0) {
  213.                            mappa[n+1][b]=1; turno=0; inizio (); break;
  214.                            }
  215.        if (d==8 && n<5) {n++;a=-1;b=0;c=1;d=2; continue;}
  216.         }
  217.  
  218. ///////////////Attacco Diagonale [VersoSinistra]{Ultimo Della Fila}/////////////
  219.     for (a=8,b=7,c=6,d=5,n=0;d>-1;a--,b--,c--,d--) {
  220.         if (mappa[n][a]==1 && mappa[n+1][b]==1 && mappa[n+2][c]==1  
  221.         && mappa[n+2][d]!=0 && mappa[n+3][d]==0) {
  222.                            mappa[n+3][d]=1; turno=0; inizio (); break;
  223.                            }
  224.        if (d==0 && n<5) {n++;a=9;b=8;c=7;d=6; continue;}
  225.         }
  226.  
  227. ///////////////Attacco Diagonale [VersoSinistra]{Penultimo Della Fila}//////////
  228.     for (a=8,b=7,c=6,d=5,n=0;d>-1;a--,b--,c--,d--) {
  229.         if (mappa[n][a]==1 && mappa[n+1][b]==1 && mappa[n+2][c]==0  
  230.         && mappa[n+1][c]!=0 && mappa[n+3][d]==1) {
  231.                            mappa[n+2][c]=1; turno=0; inizio (); break;
  232.                            }
  233.        if (d==0 && n<5) {n++;a=9;b=8;c=7;d=6; continue;}
  234.         }
  235.  
  236. ///////////////Attacco Diagonale [VersoSinistra]{Terzultimo Della Fila}/////////
  237.     for (a=8,b=7,c=6,d=5,n=0;d>-1;a--,b--,c--,d--) {
  238.         if (mappa[n][a]==1 && mappa[n+1][b]==0 && mappa[n+2][c]==1  
  239.         && mappa[n][b]!=0 && mappa[n+3][d]==1) {
  240.                            mappa[n+1][b]=1; turno=0; inizio (); break;
  241.                            }
  242.        if (d==0 && n<5) {n++;a=9;b=8;c=7;d=6; continue;}
  243.         }
  244.  
  245. ////////////////////////////////////////////////////////////////////////////////
  246. ///////////////Mosse di Difesa//////////////////////////////////////////////////
  247. ////////////////////////////////////////////////////////////////////////////////
  248.  
  249. ///////////////Difesa Verticale/////////////////////////////////////////////////
  250.     for (a=0,b=1,c=2,d=3,n=0;d<9;a++,b++,c++,d++) {
  251.         if (mappa[a][n]==2 && mappa[b][n]==2 && mappa[c][n]==2  && mappa[d][n]==0) {
  252.                            mappa[d][n]=1; turno=0; inizio (); break;
  253.                            }
  254.        if (d==8 && n<9) {n++;a=-1;b=0;c=1;d=2; continue;}
  255.         }
  256.  
  257. ///////////////Difesa Orizzontale [VersoDestra]{Ultimo Della Fila}//////////////
  258. /*Prima Riga*/        for (a=0,b=1,c=2,d=3;d<9;a++,b++,c++,d++) {
  259.             if (mappa[0][a]==2 && mappa[0][b]==2 && mappa[0][c]==2 && mappa[0][d]==0) {
  260.                                mappa[0][d]=1; turno=0; inizio (); break;
  261.                                }
  262.             }
  263. /*Altre Righe*/    for (a=0,b=1,c=2,d=3,n=0;d<9;a++,b++,c++,d++) {
  264.         if (mappa[n][a]==2 && mappa[n][b]==2 && mappa[n][c]==2  
  265.         && mappa[n-1][d]!=0 && mappa[n][d]==0) {
  266.                            mappa[n][d]=1; turno=0; inizio (); break;
  267.                            }
  268.        if (d==8 && n<9) {n++;a=-1;b=0;c=1;d=2; continue;}
  269.         }
  270. ///////////////Difesa Orizzontale [VersoDestra]{Penultimo Della Fila}///////////
  271. /*Prima Riga*/        for (a=0,b=1,c=2,d=3;d<9;a++,b++,c++,d++) {
  272.             if (mappa[0][a]==2 && mappa[0][b]==2 && mappa[0][d]==2 && mappa[0][c]==0) {
  273.                                mappa[0][c]=1; turno=0; inizio (); break;
  274.                                }
  275.             }
  276. /*Altre Righe*/    for (a=0,b=1,c=2,d=3,n=0;d<9;a++,b++,c++,d++) {
  277.         if (mappa[n][a]==2 && mappa[n][b]==2 && mappa[n][d]==2  
  278.         && mappa[n-1][c]!=0 && mappa[n][c]==0) {
  279.                            mappa[n][c]=1; turno=0; inizio (); break;
  280.                            }
  281.        if (d==8 && n<9) {n++;a=-1;b=0;c=1;d=2; continue;}
  282.         }
  283.  
  284. ///////////////Difesa Orizzontale [VersoDestra]{Terzultimo Della Fila}//////////
  285. /*Prima Riga*/        for (a=0,b=1,c=2,d=3;d<9;a++,b++,c++,d++) {
  286.             if (mappa[0][a]==2 && mappa[0][c]==2 && mappa[0][d]==2 && mappa[0][b]==0) {
  287.                                mappa[0][b]=1; turno=0; inizio (); break;
  288.                                }
  289.             }
  290. /*Altre Righe*/    for (a=0,b=1,c=2,d=3,n=0;d<9;a++,b++,c++,d++) {
  291.         if (mappa[n][a]==2 && mappa[n][c]==2 && mappa[n][d]==2  
  292.         && mappa[n-1][b]!=0 && mappa[n][b]==0) {
  293.                            mappa[n][b]=1; turno=0; inizio (); break;
  294.                            }
  295.        if (d==8 && n<9) {n++;a=-1;b=0;c=1;d=2; continue;}
  296.         }
  297.  
  298. ///////////////Difesa Orizzontale [VersoSinistra]{Ultimo Della Fila}////////////
  299. /*Prima Riga*/        for (a=8,b=7,c=6,d=5;d>0;a--,b--,c--,d--) {
  300.             if (mappa[0][a]==2 && mappa[0][b]==2 && mappa[0][c]==2 && mappa[0][d]==0) {
  301.                                mappa[0][d]=1; turno=0; inizio (); break;
  302.                                }
  303.             }
  304. /*Altre Righe*/    for (a=8,b=7,c=6,d=5,n=1;d>0;a--,b--,c--,d--) {
  305.         if (mappa[n][a]==2 && mappa[n][b]==2 && mappa[n][c]==2  
  306.         && mappa[n-1][d]!=0 && mappa[n][d]==0) {
  307.                            mappa[n][d]=1; turno=0; inizio (); break;
  308.                            }
  309.        if (d==0 && n<9) {n++;a=9;b=8;c=7;d=6; continue;}
  310.         }
  311.  
  312. ///////////////Difesa Orizzontale [VersoSinistra]{Penultimo Della Fila}/////////
  313. /*Prima Riga*/        for (a=8,b=7,c=6,d=5;d>0;a--,b--,c--,d--) {
  314.             if (mappa[0][a]==2 && mappa[0][b]==2 && mappa[0][d]==2 && mappa[0][c]==0) {
  315.                                mappa[0][c]=1; turno=0; inizio (); break;
  316.                                }
  317.             }
  318. /*Altre Righe*/    for (a=8,b=7,c=6,d=5,n=1;d>0;a--,b--,c--,d--) {
  319.         if (mappa[n][a]==2 && mappa[n][b]==2 && mappa[n][d]==2  
  320.         && mappa[n-1][c]!=0 && mappa[n][c]==0) {
  321.                            mappa[n][c]=1; turno=0; inizio (); break;
  322.                            }
  323.        if (d==0 && n<9) {n++;a=9;b=8;c=7;d=6; continue;}
  324.         }
  325.  
  326. ///////////////Difesa Orizzontale [VersoSinistra]{Terzultimo Della Fila}////////
  327. /*Prima Riga*/        for (a=8,b=7,c=6,d=5;d>0;a--,b--,c--,d--) {
  328.             if (mappa[0][a]==2 && mappa[0][c]==2 && mappa[0][d]==2 && mappa[0][b]==0) {
  329.                                mappa[0][b]=1; turno=0; inizio (); break;
  330.                                }
  331.             }
  332. /*Altre Righe*/    for (a=8,b=7,c=6,d=5,n=1;d>0;a--,b--,c--,d--) {
  333.         if (mappa[n][a]==2 && mappa[n][c]==2 && mappa[n][d]==2  
  334.         && mappa[n-1][b]!=0 && mappa[n][b]==0) {
  335.                            mappa[n][b]=1; turno=0; inizio (); break;
  336.                            }
  337.        if (d==0 && n<9) {n++;a=9;b=8;c=7;d=6; continue;}
  338.         }
  339.  
  340.  
  341. ///////////////Difesa Diagonale [VersoDestra]{Ultimo Della Fila}////////////////
  342.     for (a=0,b=1,c=2,d=3,n=0;d<9;a++,b++,c++,d++) {
  343.         if (mappa[n][a]==2 && mappa[n+1][b]==2 && mappa[n+2][c]==2  
  344.         && mappa[n+2][d]!=0 && mappa[n+3][d]==0) {
  345.                            mappa[n+3][d]=1; turno=0; inizio (); break;
  346.                            }
  347.        if (d==8 && n<5) {n++;a=-1;b=0;c=1;d=2; continue;}
  348.         }
  349.  
  350. ///////////////Difesa Diagonale [VersoDestra]{Penultimo Della Fila}/////////////
  351.     for (a=0,b=1,c=2,d=3,n=0;d<9;a++,b++,c++,d++) {
  352.         if (mappa[n][a]==2 && mappa[n+1][b]==2 && mappa[n+2][c]==0  
  353.         && mappa[n+1][c]!=0 && mappa[n+3][d]==2) {
  354.                            mappa[n+2][c]=1; turno=0; inizio (); break;
  355.                            }
  356.        if (d==8 && n<5) {n++;a=-1;b=0;c=1;d=2; continue;}
  357.         }
  358.  
  359. ///////////////Difesa Diagonale [VersoDestra]{Terzultimo Della Fila}////////////
  360.     for (a=0,b=1,c=2,d=3,n=0;d<9;a++,b++,c++,d++) {
  361.         if (mappa[n][a]==2 && mappa[n+1][b]==0 && mappa[n+2][c]==2  
  362.         && mappa[n+3][d]==2 && mappa[n][b]!=0) {
  363.                            mappa[n+1][b]=1; turno=0; inizio (); break;
  364.                            }
  365.        if (d==8 && n<5) {n++;a=-1;b=0;c=1;d=2; continue;}
  366.         }
  367.  
  368. ///////////////Difesa Diagonale [VersoDestra]{Quartultimo Della Fila}////////////
  369. /*Altre Righe*/
  370.     for (a=0,b=1,c=2,d=3,n=1;d<9;a++,b++,c++,d++) {
  371.         if (mappa[n][a]==0 && mappa[n+1][b]==2 && mappa[n+2][c]==2  
  372.         && mappa[n+3][d]==2 && mappa[n-1][a]!=0) {
  373.                            mappa[n][a]=1; turno=0; inizio (); break;
  374.                            }
  375.        if (d==8 && n<5) {n++;a=-1;b=0;c=1;d=2; continue;}
  376.         }
  377. /*Prima Riga*/
  378.     for (a=0,b=1,c=2,d=3;d<9;a++,b++,c++,d++) {
  379.         if (mappa[0][a]==0 && mappa[1][b]==2 && mappa[2][c]==2 && mappa[3][d]==2) {
  380.                            mappa[0][a]=1; turno=0; inizio (); break;
  381.                            }
  382.         }
  383.  
  384. ///////////////Difesa Diagonale [VersoSinistra]{Ultimo Della Fila}//////////////
  385.     for (a=8,b=7,c=6,d=5,n=0;d>-1;a--,b--,c--,d--) {
  386.         if (mappa[n][a]==2 && mappa[n+1][b]==2 && mappa[n+2][c]==2  
  387.         && mappa[n+2][d]!=0 && mappa[n+3][d]==0) {
  388.                            mappa[n+3][d]=1; turno=0; inizio (); break;
  389.                            }
  390.        if (d==0 && n<5) {n++;a=9;b=8;c=7;d=6; continue;}
  391.         }
  392.  
  393. ///////////////Difesa Diagonale [VersoSinistra]{Penultimo Della Fila}//////////////
  394.     for (a=8,b=7,c=6,d=5,n=0;d>-1;a--,b--,c--,d--) {
  395.         if (mappa[n][a]==2 && mappa[n+1][b]==2 && mappa[n+2][c]==0  
  396.         && mappa[n+1][c]!=0 && mappa[n+3][d]==2) {
  397.                            mappa[n+2][c]=1; turno=0; inizio (); break;
  398.                            }
  399.        if (d==0 && n<5) {n++;a=9;b=8;c=7;d=6; continue;}
  400.         }
  401.  
  402. ///////////////Difesa Diagonale [VersoSinistra]{Terzultimo Della Fila}//////////////
  403.     for (a=8,b=7,c=6,d=5,n=0;d>-1;a--,b--,c--,d--) {
  404.         if (mappa[n][a]==2 && mappa[n+1][b]==0 && mappa[n+2][c]==2  
  405.         && mappa[n][b]!=0 && mappa[n+3][d]==2) {
  406.                            mappa[n+1][b]=1; turno=0; inizio (); break;
  407.                            }
  408.        if (d==0 && n<5) {n++;a=9;b=8;c=7;d=6; continue;}
  409.         }
  410.  
  411. ///////////////Difesa Diagonale [VersoSinistra]{Quartultimo Della Fila}//////////////
  412. /*Prima Riga*/
  413.     for (a=8,b=7,c=6,d=5;d>-1;a--,b--,c--,d--) {
  414.         if (mappa[0][a]==0 && mappa[1][b]==2 && mappa[2][c]==2 && mappa[3][d]==2) {
  415.                            mappa[0][a]=1; turno=0; inizio (); break;
  416.                            }
  417.         }
  418. /*Altre Righe*/
  419.     for (a=8,b=7,c=6,d=5,n=1;d>-1;a--,b--,c--,d--) {
  420.         if (mappa[n][a]==0 && mappa[n+1][b]==2 && mappa[n+2][c]==2  
  421.         && mappa[n-1][a]!=0 && mappa[n+3][d]==2) {
  422.                            mappa[n][a]=1; turno=0; inizio (); break;
  423.                            }
  424.        if (d==0 && n<5) {n++;a=9;b=8;c=7;d=6; continue;}
  425.         }
  426.  
  427. ///////////////Difesa Due Sole Vicine///////////////////////////////////////////
  428.     for (a=1,b=2,c=3;c<9;a++,b++,c++) {
  429.         if (mappa[0][a]==2 && mappa[0][b]==2 && mappa[0][c]==0) {
  430.                            mappa[0][c]=1; turno=0; inizio (); break;
  431.                            }
  432.         }
  433.  
  434. ///////////////Difesa Due Distanti Di Una Casella///////////////////////////////
  435.     for (a=1,b=3,c=2;b<9;a++,b++,c++) {
  436.         if (mappa[0][a]==2 && mappa[0][b]==2 && mappa[0][c]==0) {
  437.                            mappa[0][c]=1; turno=0; inizio (); break;
  438.                            }
  439.         }      
  440.  
  441. ////////////////////////////////////////////////////////////////////////////////
  442. ///////////////Mosse di Attacco/////////////////////////////////////////////////
  443. ////////////////////////////////////////////////////////////////////////////////
  444.  
  445. ///////////////Attacco Due Distanti Di Una Casella//////////////////////////////
  446. /*Prima Riga*/
  447.     for (a=1,b=3,c=2;b<9;a++,b++,c++) {
  448.         if (mappa[0][a]==1 && mappa[0][b]==1 && mappa[0][c]==0) {
  449.                            mappa[0][c]=1; turno=0; inizio (); break;
  450.                            }
  451.         }
  452. /*Altre Righe*/
  453.         for (n=1 ; n<9 ; n++) {
  454.             for (a=1,b=3,c=2;b<9;a++,b++,c++) {
  455.         if (mappa[n][a]==1 && mappa[n][b]==1 && mappa[n][c]==0 && mappa[n-1][c]!=0) {
  456.                            mappa[n][c]=1; turno=0; inizio (); break;
  457.                            }
  458.         }
  459.     }
  460.  
  461. ///////////////Attacco Due Sole Vicine(destra)//////////////////////////////////
  462. /*Prima Riga*/
  463.     for (a=1,b=2,c=3,d=0;c<9;a++,b++,c++) {
  464.         if (mappa[0][d]==0 && mappa[0][a]==1 && mappa[0][b]==1 && mappa[0][c]==0) {
  465.                            mappa[0][c]=1; turno=0; inizio (); break;
  466.                            }
  467.         }
  468. /*Altre Righe*/
  469.         for (int n=1;n<9;n++) {
  470.             for (a=1,b=2,c=3,d=0;c<8;a++,b++,c++) {
  471.         if (mappa[n][d]==0 && mappa[n][a]==1 && mappa[n][b]==1 && mappa[n][c]==0 && mappa[n-1][c]!=0) {
  472.                            mappa[n][c]=1; turno=0; inizio (); break;
  473.                            }
  474.         }
  475.     }
  476.  
  477. ///////////////Attacco Due Sole Vicine(sinistra)////////////////////////////////
  478. /*Prima Riga*/
  479.     for (a=1,b=2,c=3,d=4;c<9;a++,b++,c++) {
  480.         if (mappa[0][a]==0 && mappa[0][b]==1 && mappa[0][c]==1 && mappa[0][d]==0) {
  481.                            mappa[0][a]=1; turno=0; inizio (); break;
  482.                            }
  483.         }
  484. /*Altre Righe*/
  485.         for (int k=1;k<9;k++) {
  486.             for (a=1,b=2,c=3,d=4;c<8;a++,b++,c++) {
  487.         if (mappa[k][a]==0 && mappa[k][b]==1 && mappa[k][c]==1 && mappa[k-1][a]!=0 && mappa[k][d]==0) {
  488.                            mappa[k][a]=1; turno=0; inizio (); break;
  489.                            }
  490.         }
  491.     }
  492.  
  493. ///////////////Attacco Una Sola Con Niente A Due Distanze(destra)E Una Distanza(sinistra)//
  494.     for (a=0,b=1,c=2,d=3;d<9;a++,b++,c++,d++) {
  495.         if (mappa[0][a]==0 && mappa[0][b]==1 && mappa[0][c]==0 && mappa[0][d]==0) {
  496.                            mappa[0][d]=1; turno=0; inizio(); break;
  497.                            }
  498.         }
  499.  
  500. ///////////////Attacco Una Sola Con Niente A Una Distanza(destra)E Due Distanza(sinistra)//
  501.     for (a=0,b=1,c=2,d=3;d<9;a++,b++,c++,d++) {
  502.         if (mappa[0][a]==0 && mappa[0][b]==0 && mappa[0][c]==1 && mappa[0][d]==0) {
  503.                            mappa[0][a]=1; turno=0; inizio(); break;
  504.                            }
  505.         }
  506.  
  507. ///////////////Attacco Una Sola Con Niente Vicino///////////////////////////////
  508.     for (a=0,b=1,c=2;c<8;a++,b++,c++) {
  509.         if (mappa[0][a]==0 && mappa[0][b]==1 && mappa[0][c]==0) {
  510.                            mappa[0][c]=1; turno=0; inizio (); break;
  511.                            }
  512.         }
  513.  
  514. ///////////////Attacco Centrale Iniziale////////////////////////////////////////
  515.     if (mappa[0][4]==0) {mappa[0][4]=1; turno=0; inizio ();}
  516.  
  517. //////////Se non si deve difendere e non può attaccare fa una mossa CASUALE/////
  518.        CASO:
  519.             perdi++;
  520.          if (mappa[0][0]==0 && mappa[0][1]==0 && mappa[0][7]==0 && mappa[0][8]==0)
  521.            { a = rand() % 4 + 2; }
  522.            else { a = rand() % 9; }
  523.     for (int h=0;h<9;h++) {
  524.         if (mappa[h][a]==0) {
  525.     if (mappa[h+1][a+1]==2 && mappa[h+1][a+2]==2 && mappa[h+1][a+3]==2 && perdi < 1000 ||
  526.         mappa[h+1][a-1]==2 && mappa[h+1][a-2]==2 && mappa[h+1][a-3]==2 && perdi < 1000 ||
  527.         mappa[h+1][a-1]==2 && mappa[h+1][a+1]==2 && mappa[h+1][a+2]==2 && perdi < 1000 ||
  528.         mappa[h+1][a-2]==2 && mappa[h+1][a-1]==2 && mappa[h+1][a+1]==2 && perdi < 1000 ||
  529.        
  530.         mappa[h+2][a+1]==2 && mappa[h+3][a+2]==2 && mappa[h+4][a+3]==2 && perdi < 1000 ||
  531.         mappa[h][a-1]==2 && mappa[h+2][a+1]==2 && mappa[h+3][a+2]==2 && perdi < 1000 ||
  532.         mappa[h-1][a-2]==2 && mappa[h][a-1]==2 && mappa[h+2][a+1]==2 && perdi < 1000 ||
  533.         mappa[h-2][a-3]==2 && mappa[h-1][a-2]==2 && mappa[h][a-1]==2 && perdi < 1000 ||
  534.        
  535.         mappa[h+2][a-1]==2 && mappa[h+3][a-2]==2 && mappa[h+4][a-3]==2 && perdi < 1000 ||
  536.         mappa[h][a+1]==2 && mappa[h+2][a-1]==2 && mappa[h+3][a-2]==2 && perdi < 1000 ||
  537.         mappa[h-1][a+2]==2 && mappa[h][a+1]==2 && mappa[h+2][a-1]==2 && perdi < 1000 ||
  538.         mappa[h-2][a+3]==2 && mappa[h-1][a+2]==2 && mappa[h][a+1]==2 && perdi < 1000)
  539.                             {goto CASO;}
  540.         mappa[h][a] = 1; turno=0; perdi=-1; inizio (); break;
  541.                     }
  542.         }
  543.         perdi=-1;
  544.         goto CASO;
  545. }
  546.  
  547. void TrovaVincitore () {
  548.      //Orizzontale
  549.      for (int n = 0 ; n < 9 ; n++) {
  550.          for (int a=0,b=1,c=2,d=3 ; d<9 ; a++,b++,c++,d++) {
  551.              if (mappa[n][a]==2 && mappa[n][b]==2 && mappa[n][c]==2 && mappa[n][d]==2) {
  552.                                 cout << "\n\n\aHai vinto!\n\n";
  553.                                 system("Pause"); system("cls");
  554.                                 main ();
  555.                                 }
  556.              }
  557.          }
  558.      //Verticale
  559.      for (int n = 0 ; n < 9 ; n++) {
  560.          for (int a=0,b=1,c=2,d=3 ; d<9 ; a++,b++,c++,d++) {
  561.              if (mappa[a][n]==2 && mappa[b][n]==2 && mappa[c][n]==2 && mappa[d][n]==2) {
  562.                                 cout << "\n\n\aHai vinto!\n\n";
  563.                                 system("Pause"); system("cls");
  564.                                 main ();
  565.                                 }
  566.              }
  567.          }
  568.      //Diagonale [VersoDestra]
  569.      for (int n = 0 ; n < 5 ; n++) {
  570.          for (int a=0,b=1,c=2,d=3 ; d<9 ; a++,b++,c++,d++) {
  571.              if (mappa[n][a]==2 && mappa[n+1][b]==2 && mappa[n+2][c]==2 && mappa[n+3][d]==2) {
  572.                                 cout << "\n\n\aHai vinto!\n\n";
  573.                                 system("Pause"); system("cls");
  574.                                 main ();
  575.                                 }
  576.              }
  577.          }
  578.  
  579.      //Diagonale [VersoSinistra]
  580.      for (int n = 0 ; n < 5 ; n++) {
  581.          for (int a=5,b=6,c=7,d=8 ; a>0 ; a--,b--,c--,d--) {
  582.              if (mappa[n][d]==2 && mappa[n+1][c]==2 && mappa[n+2][b]==2 && mappa[n+3][a]==2) {
  583.                                 cout << "\n\n\aHai vinto!\n\n";
  584.                                 system("Pause"); system("cls");
  585.                                 main ();
  586.                                 }
  587.              }
  588.          }
  589. }
  590.  
  591. void TrovaVincitorePC () {
  592.      //Orizzontale
  593.      for (int n = 0 ; n < 9 ; n++) {
  594.          for (int a=0,b=1,c=2,d=3 ; d<9 ; a++,b++,c++,d++) {
  595.              if (mappa[n][a]==1 && mappa[n][b]==1 && mappa[n][c]==1 && mappa[n][d]==1) {
  596.                                 cout << "\n\n\aHai perso!\n\n";
  597.                                 system("Pause"); system("cls");
  598.                                 main ();
  599.                                 }
  600.              }
  601.          }
  602.      //Verticale
  603.      for (int n = 0 ; n < 9 ; n++) {
  604.          for (int a=0,b=1,c=2,d=3 ; d<9 ; a++,b++,c++,d++) {
  605.              if (mappa[a][n]==1 && mappa[b][n]==1 && mappa[c][n]==1 && mappa[d][n]==1) {
  606.                                 cout << "\n\n\aHai perso!\n\n";
  607.                                 system("Pause"); system("cls");
  608.                                 main ();
  609.                                 }
  610.              }
  611.          }
  612.      //Diagonale [VersoDestra]
  613.      for (int n = 0 ; n < 5 ; n++) {
  614.          for (int a=0,b=1,c=2,d=3 ; d<9 ; a++,b++,c++,d++) {
  615.              if (mappa[n][a]==1 && mappa[n+1][b]==1 && mappa[n+2][c]==1 && mappa[n+3][d]==1) {
  616.                                 cout << "\n\n\aHai perso!\n\n";
  617.                                 system("Pause"); system("cls");
  618.                                 main ();
  619.                                 }
  620.              }
  621.          }
  622.  
  623.      //Diagonale [VersoSinistra]
  624.      for (int n = 0 ; n < 5 ; n++) {
  625.          for (int a=5,b=6,c=7,d=8 ; a>0 ; a--,b--,c--,d--) {
  626.              if (mappa[n][d]==1 && mappa[n+1][c]==1 && mappa[n+2][b]==1 && mappa[n+3][a]==1) {
  627.                                 cout << "\n\n\aHai perso!\n\n";
  628.                                 system("Pause"); system("cls");
  629.                                 main ();
  630.                                 }
  631.              }
  632.          }
  633. }