#include <iostream>
#include <ctime>
using namespace std;
#define RIGHE 9
#define COLONNE 9
int inizio (); //La funzione che coordina tutte le altre.
void disegna (); //Questa funzione serve per disegnare il campo di gioco.
int InserisciPC (); //Il PC inserisce la pedina.
int InserisciTu (); //Tu inserisci la pedina.
void TrovaVincitore (); //Questa funzione vede se tu hai vinto.
void TrovaVincitorePC (); //Questa funzione vede se tu hai perso.
char mappa[RIGHE][COLONNE];
int turno; //0 = Turno Tuo / 1 = Turno Suo
int pezzo; //La colonna dove inserisci il pezzo
int perdi=-1;
int main () {
//Inizializzazione mappa
for (int n = 0 ; n < 9 ; n++) {
for (int a = 0 ; a < 9 ; a++) {
mappa[n][a]=0;
}
}
int scegli, Start;
cout << " NEW Forza4!\n";
cout << " By Black Shadow";
cout << "\n\n\n(1)-(Gioca)\n(2)-(Istruzioni)\n(3)-(Esci)\n\n\n";
cin >> scegli;
switch (scegli) {
case 1:
cout << "\n\n(1)-(Inizio-Io)\n(2)-(Inizia-PC)\n\nChi deve iniziare?\n\n";
cin >> Start;
(Start==1) ? turno=0 : turno=1;
inizio ();
case 2:
cout << "Questo e' il gioco di Forza 4!\n\n"; system("Pause"); system("cls"); scegli=0; main ();
case 3:
cout << "Grazie per aver giocato a NEW Forza 4!\n\n"; exit (1);
default:
cout << "Devi inserire 1, 2 o 3!\n\n"; system("Pause"); system("cls"); scegli=0; main ();
}
system("Pause");
}
int inizio () {
disegna (); //Disegna il campo
TrovaVincitore (); //Vede se tu hai vinto
TrovaVincitorePC (); //Vede se ha vinto il PC
if (turno==0) {InserisciTu ();} //Vede se è il tuo turno
else if (turno==1) { InserisciPC ();} //o quello del PC
}
void disegna () { //Disegna il campo di gioco
system("cls");
cout << endl << "-------------------------------------" << endl;
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] << " | ";
cout << endl << "-------------------------------------" << endl;
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] << " | ";
cout << endl << "-------------------------------------" << endl;
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] << " | ";
cout << endl << "-------------------------------------" << endl;
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] << " | ";
cout << endl << "-------------------------------------" << endl;
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] << " | ";
cout << endl << "-------------------------------------" << endl;
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] << " | ";
cout << endl << "-------------------------------------" << endl;
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] << " | ";
cout << endl << "-------------------------------------" << endl;
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] << " | ";
cout << endl << "-------------------------------------" << endl;
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] << " | ";
cout << endl << "-------------------------------------" << endl;
cout << " 0 1 2 3 4 5 6 7 8\n\n";
}
int InserisciTu () {
cout << "Scegli una colonna (0-8) : ";
do cin >> pezzo;
while (pezzo < 0 || pezzo > 8);
for (int h=0;h<9;h++) {
if (mappa[h][pezzo]==0) { mappa[h][pezzo] = 2; turno=1; inizio (); break;}
}
cout << "\n\nQuesta colonna è piena!\n\n";
InserisciTu ();
}
int InserisciPC () {
cout << "Giocata del computer:";
int a,b,c,d,n;
srand((unsigned)time( NULL )); // inizializza la funzione rand()
////////////////////////////////////////////////////////////////////////////////
///////////////Mosse di Attacco Vincenti////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
///////////////Attacco Verticale/////////////////////////////////////////////////
for (a=0,b=1,c=2,d=3,n=0;d<9;a++,b++,c++,d++) {
if (mappa[a][n]==1 && mappa[b][n]==1 && mappa[c][n]==1 && mappa[d][n]==0) {
mappa[d][n]=1; turno=0; inizio (); break;
}
if (d==8 && n<9) {n++;a=-1;b=0;c=1;d=2; continue;}
}
///////////////Attacco Orizzontale [VersoDestra]{Ultimo Della Fila}/////////////
/*Prima Riga*/ for (a=0,b=1,c=2,d=3;d<9;a++,b++,c++,d++) {
if (mappa[0][a]==1 && mappa[0][b]==1 && mappa[0][c]==1 && mappa[0][d]==0) {
mappa[0][d]=1; turno=0; inizio (); break;
}
}
/*Altre Righe*/ for (a=0,b=1,c=2,d=3,n=0;d<9;a++,b++,c++,d++) {
if (mappa[n][a]==1 && mappa[n][b]==1 && mappa[n][c]==1
&& mappa[n-1][d]!=0 && mappa[n][d]==0) {
mappa[n][d]=1; turno=0; inizio (); break;
}
if (d==8 && n<9) {n++;a=-1;b=0;c=1;d=2; continue;}
}
///////////////Attacco Orizzontale [VersoDestra]{Penultimo Della Fila}//////////
/*Prima Riga*/ for (a=0,b=1,c=2,d=3;d<9;a++,b++,c++,d++) {
if (mappa[0][a]==1 && mappa[0][b]==1 && mappa[0][d]==1 && mappa[0][c]==0) {
mappa[0][c]=1; turno=0; inizio (); break;
}
}
/*Altre Righe*/ for (a=0,b=1,c=2,d=3,n=0;d<9;a++,b++,c++,d++) {
if (mappa[n][a]==1 && mappa[n][b]==1 && mappa[n][d]==1
&& mappa[n-1][c]!=0 && mappa[n][c]==0) {
mappa[n][c]=1; turno=0; inizio (); break;
}
if (d==8 && n<9) {n++;a=-1;b=0;c=1;d=2; continue;}
}
///////////////Attacco Orizzontale [VersoDestra]{Terzultimo Della Fila}/////////
/*Prima Riga*/ for (a=0,b=1,c=2,d=3;d<9;a++,b++,c++,d++) {
if (mappa[0][a]==1 && mappa[0][c]==1 && mappa[0][d]==1 && mappa[0][b]==0) {
mappa[0][b]=1; turno=0; inizio (); break;
}
}
/*Altre Righe*/ for (a=0,b=1,c=2,d=3,n=0;d<9;a++,b++,c++,d++) {
if (mappa[n][a]==1 && mappa[n][c]==1 && mappa[n][d]==1
&& mappa[n-1][b]!=0 && mappa[n][b]==0) {
mappa[n][b]=1; turno=0; inizio (); break;
}
if (d==8 && n<9) {n++;a=-1;b=0;c=1;d=2; continue;}
}
///////////////Attacco Orizzontale [VersoSinistra]{Ultimo Della Fila}///////////
/*Prima Riga*/ for (a=8,b=7,c=6,d=5;d>0;a--,b--,c--,d--) {
if (mappa[0][a]==1 && mappa[0][b]==1 && mappa[0][c]==1 && mappa[0][d]==0) {
mappa[0][d]=1; turno=0; inizio (); break;
}
}
/*Altre Righe*/ for (a=8,b=7,c=6,d=5,n=1;d>0;a--,b--,c--,d--) {
if (mappa[n][a]==1 && mappa[n][b]==1 && mappa[n][c]==1
&& mappa[n-1][d]!=0 && mappa[n][d]==0) {
mappa[n][d]=1; turno=0; inizio (); break;
}
if (d==0 && n<9) {n++;a=9;b=8;c=7;d=6; continue;}
}
///////////////Attacco Orizzontale [VersoSinistra]{Penultimo Della Fila}////////
/*Prima Riga*/ for (a=8,b=7,c=6,d=5;d>0;a--,b--,c--,d--) {
if (mappa[0][a]==1 && mappa[0][b]==1 && mappa[0][d]==1 && mappa[0][c]==0) {
mappa[0][c]=1; turno=0; inizio (); break;
}
}
/*Altre Righe*/ for (a=8,b=7,c=6,d=5,n=1;d>0;a--,b--,c--,d--) {
if (mappa[n][a]==1 && mappa[n][b]==1 && mappa[n][d]==1
&& mappa[n-1][c]!=0 && mappa[n][c]==0) {
mappa[n][c]=1; turno=0; inizio (); break;
}
if (d==0 && n<9) {n++;a=9;b=8;c=7;d=6; continue;}
}
///////////////Attacco Orizzontale [VersoSinistra]{Terzultimo Della Fila}///////
/*Prima Riga*/ for (a=8,b=7,c=6,d=5;d>0;a--,b--,c--,d--) {
if (mappa[0][a]==1 && mappa[0][c]==1 && mappa[0][d]==1 && mappa[0][b]==0) {
mappa[0][b]=1; turno=0; inizio (); break;
}
}
/*Altre Righe*/ for (a=8,b=7,c=6,d=5,n=1;d>0;a--,b--,c--,d--) {
if (mappa[n][a]==1 && mappa[n][c]==1 && mappa[n][d]==1
&& mappa[n-1][b]!=0 && mappa[n][b]==0) {
mappa[n][b]=1; turno=0; inizio (); break;
}
if (d==0 && n<9) {n++;a=9;b=8;c=7;d=6; continue;}
}
///////////////Attacco Diagonale [VersoDestra]{Ultimo Della Fila}///////////////
for (a=0,b=1,c=2,d=3,n=0;d<9;a++,b++,c++,d++) {
if (mappa[n][a]==1 && mappa[n+1][b]==1 && mappa[n+2][c]==1
&& mappa[n+2][d]!=0 && mappa[n+3][d]==0) {
mappa[n+3][d]=1; turno=0; inizio (); break;
}
if (d==8 && n<5) {n++;a=-1;b=0;c=1;d=2; continue;}
}
///////////////Attacco Diagonale [VersoDestra]{Penultimo Della Fila}////////////
for (a=0,b=1,c=2,d=3,n=0;d<9;a++,b++,c++,d++) {
if (mappa[n][a]==1 && mappa[n+1][b]==1 && mappa[n+2][c]==0
&& mappa[n+1][c]!=0 && mappa[n+3][d]==1) {
mappa[n+2][c]=1; turno=0; inizio (); break;
}
if (d==8 && n<5) {n++;a=-1;b=0;c=1;d=2; continue;}
}
///////////////Attacco Diagonale [VersoDestra]{Terzultimo Della Fila}///////////
for (a=0,b=1,c=2,d=3,n=0;d<9;a++,b++,c++,d++) {
if (mappa[n][a]==1 && mappa[n+1][b]==0 && mappa[n+2][c]==1
&& mappa[n+3][d]==1 && mappa[n][b]!=0) {
mappa[n+1][b]=1; turno=0; inizio (); break;
}
if (d==8 && n<5) {n++;a=-1;b=0;c=1;d=2; continue;}
}
///////////////Attacco Diagonale [VersoSinistra]{Ultimo Della Fila}/////////////
for (a=8,b=7,c=6,d=5,n=0;d>-1;a--,b--,c--,d--) {
if (mappa[n][a]==1 && mappa[n+1][b]==1 && mappa[n+2][c]==1
&& mappa[n+2][d]!=0 && mappa[n+3][d]==0) {
mappa[n+3][d]=1; turno=0; inizio (); break;
}
if (d==0 && n<5) {n++;a=9;b=8;c=7;d=6; continue;}
}
///////////////Attacco Diagonale [VersoSinistra]{Penultimo Della Fila}//////////
for (a=8,b=7,c=6,d=5,n=0;d>-1;a--,b--,c--,d--) {
if (mappa[n][a]==1 && mappa[n+1][b]==1 && mappa[n+2][c]==0
&& mappa[n+1][c]!=0 && mappa[n+3][d]==1) {
mappa[n+2][c]=1; turno=0; inizio (); break;
}
if (d==0 && n<5) {n++;a=9;b=8;c=7;d=6; continue;}
}
///////////////Attacco Diagonale [VersoSinistra]{Terzultimo Della Fila}/////////
for (a=8,b=7,c=6,d=5,n=0;d>-1;a--,b--,c--,d--) {
if (mappa[n][a]==1 && mappa[n+1][b]==0 && mappa[n+2][c]==1
&& mappa[n][b]!=0 && mappa[n+3][d]==1) {
mappa[n+1][b]=1; turno=0; inizio (); break;
}
if (d==0 && n<5) {n++;a=9;b=8;c=7;d=6; continue;}
}
////////////////////////////////////////////////////////////////////////////////
///////////////Mosse di Difesa//////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
///////////////Difesa Verticale/////////////////////////////////////////////////
for (a=0,b=1,c=2,d=3,n=0;d<9;a++,b++,c++,d++) {
if (mappa[a][n]==2 && mappa[b][n]==2 && mappa[c][n]==2 && mappa[d][n]==0) {
mappa[d][n]=1; turno=0; inizio (); break;
}
if (d==8 && n<9) {n++;a=-1;b=0;c=1;d=2; continue;}
}
///////////////Difesa Orizzontale [VersoDestra]{Ultimo Della Fila}//////////////
/*Prima Riga*/ for (a=0,b=1,c=2,d=3;d<9;a++,b++,c++,d++) {
if (mappa[0][a]==2 && mappa[0][b]==2 && mappa[0][c]==2 && mappa[0][d]==0) {
mappa[0][d]=1; turno=0; inizio (); break;
}
}
/*Altre Righe*/ for (a=0,b=1,c=2,d=3,n=0;d<9;a++,b++,c++,d++) {
if (mappa[n][a]==2 && mappa[n][b]==2 && mappa[n][c]==2
&& mappa[n-1][d]!=0 && mappa[n][d]==0) {
mappa[n][d]=1; turno=0; inizio (); break;
}
if (d==8 && n<9) {n++;a=-1;b=0;c=1;d=2; continue;}
}
///////////////Difesa Orizzontale [VersoDestra]{Penultimo Della Fila}///////////
/*Prima Riga*/ for (a=0,b=1,c=2,d=3;d<9;a++,b++,c++,d++) {
if (mappa[0][a]==2 && mappa[0][b]==2 && mappa[0][d]==2 && mappa[0][c]==0) {
mappa[0][c]=1; turno=0; inizio (); break;
}
}
/*Altre Righe*/ for (a=0,b=1,c=2,d=3,n=0;d<9;a++,b++,c++,d++) {
if (mappa[n][a]==2 && mappa[n][b]==2 && mappa[n][d]==2
&& mappa[n-1][c]!=0 && mappa[n][c]==0) {
mappa[n][c]=1; turno=0; inizio (); break;
}
if (d==8 && n<9) {n++;a=-1;b=0;c=1;d=2; continue;}
}
///////////////Difesa Orizzontale [VersoDestra]{Terzultimo Della Fila}//////////
/*Prima Riga*/ for (a=0,b=1,c=2,d=3;d<9;a++,b++,c++,d++) {
if (mappa[0][a]==2 && mappa[0][c]==2 && mappa[0][d]==2 && mappa[0][b]==0) {
mappa[0][b]=1; turno=0; inizio (); break;
}
}
/*Altre Righe*/ for (a=0,b=1,c=2,d=3,n=0;d<9;a++,b++,c++,d++) {
if (mappa[n][a]==2 && mappa[n][c]==2 && mappa[n][d]==2
&& mappa[n-1][b]!=0 && mappa[n][b]==0) {
mappa[n][b]=1; turno=0; inizio (); break;
}
if (d==8 && n<9) {n++;a=-1;b=0;c=1;d=2; continue;}
}
///////////////Difesa Orizzontale [VersoSinistra]{Ultimo Della Fila}////////////
/*Prima Riga*/ for (a=8,b=7,c=6,d=5;d>0;a--,b--,c--,d--) {
if (mappa[0][a]==2 && mappa[0][b]==2 && mappa[0][c]==2 && mappa[0][d]==0) {
mappa[0][d]=1; turno=0; inizio (); break;
}
}
/*Altre Righe*/ for (a=8,b=7,c=6,d=5,n=1;d>0;a--,b--,c--,d--) {
if (mappa[n][a]==2 && mappa[n][b]==2 && mappa[n][c]==2
&& mappa[n-1][d]!=0 && mappa[n][d]==0) {
mappa[n][d]=1; turno=0; inizio (); break;
}
if (d==0 && n<9) {n++;a=9;b=8;c=7;d=6; continue;}
}
///////////////Difesa Orizzontale [VersoSinistra]{Penultimo Della Fila}/////////
/*Prima Riga*/ for (a=8,b=7,c=6,d=5;d>0;a--,b--,c--,d--) {
if (mappa[0][a]==2 && mappa[0][b]==2 && mappa[0][d]==2 && mappa[0][c]==0) {
mappa[0][c]=1; turno=0; inizio (); break;
}
}
/*Altre Righe*/ for (a=8,b=7,c=6,d=5,n=1;d>0;a--,b--,c--,d--) {
if (mappa[n][a]==2 && mappa[n][b]==2 && mappa[n][d]==2
&& mappa[n-1][c]!=0 && mappa[n][c]==0) {
mappa[n][c]=1; turno=0; inizio (); break;
}
if (d==0 && n<9) {n++;a=9;b=8;c=7;d=6; continue;}
}
///////////////Difesa Orizzontale [VersoSinistra]{Terzultimo Della Fila}////////
/*Prima Riga*/ for (a=8,b=7,c=6,d=5;d>0;a--,b--,c--,d--) {
if (mappa[0][a]==2 && mappa[0][c]==2 && mappa[0][d]==2 && mappa[0][b]==0) {
mappa[0][b]=1; turno=0; inizio (); break;
}
}
/*Altre Righe*/ for (a=8,b=7,c=6,d=5,n=1;d>0;a--,b--,c--,d--) {
if (mappa[n][a]==2 && mappa[n][c]==2 && mappa[n][d]==2
&& mappa[n-1][b]!=0 && mappa[n][b]==0) {
mappa[n][b]=1; turno=0; inizio (); break;
}
if (d==0 && n<9) {n++;a=9;b=8;c=7;d=6; continue;}
}
///////////////Difesa Diagonale [VersoDestra]{Ultimo Della Fila}////////////////
for (a=0,b=1,c=2,d=3,n=0;d<9;a++,b++,c++,d++) {
if (mappa[n][a]==2 && mappa[n+1][b]==2 && mappa[n+2][c]==2
&& mappa[n+2][d]!=0 && mappa[n+3][d]==0) {
mappa[n+3][d]=1; turno=0; inizio (); break;
}
if (d==8 && n<5) {n++;a=-1;b=0;c=1;d=2; continue;}
}
///////////////Difesa Diagonale [VersoDestra]{Penultimo Della Fila}/////////////
for (a=0,b=1,c=2,d=3,n=0;d<9;a++,b++,c++,d++) {
if (mappa[n][a]==2 && mappa[n+1][b]==2 && mappa[n+2][c]==0
&& mappa[n+1][c]!=0 && mappa[n+3][d]==2) {
mappa[n+2][c]=1; turno=0; inizio (); break;
}
if (d==8 && n<5) {n++;a=-1;b=0;c=1;d=2; continue;}
}
///////////////Difesa Diagonale [VersoDestra]{Terzultimo Della Fila}////////////
for (a=0,b=1,c=2,d=3,n=0;d<9;a++,b++,c++,d++) {
if (mappa[n][a]==2 && mappa[n+1][b]==0 && mappa[n+2][c]==2
&& mappa[n+3][d]==2 && mappa[n][b]!=0) {
mappa[n+1][b]=1; turno=0; inizio (); break;
}
if (d==8 && n<5) {n++;a=-1;b=0;c=1;d=2; continue;}
}
///////////////Difesa Diagonale [VersoDestra]{Quartultimo Della Fila}////////////
/*Altre Righe*/
for (a=0,b=1,c=2,d=3,n=1;d<9;a++,b++,c++,d++) {
if (mappa[n][a]==0 && mappa[n+1][b]==2 && mappa[n+2][c]==2
&& mappa[n+3][d]==2 && mappa[n-1][a]!=0) {
mappa[n][a]=1; turno=0; inizio (); break;
}
if (d==8 && n<5) {n++;a=-1;b=0;c=1;d=2; continue;}
}
/*Prima Riga*/
for (a=0,b=1,c=2,d=3;d<9;a++,b++,c++,d++) {
if (mappa[0][a]==0 && mappa[1][b]==2 && mappa[2][c]==2 && mappa[3][d]==2) {
mappa[0][a]=1; turno=0; inizio (); break;
}
}
///////////////Difesa Diagonale [VersoSinistra]{Ultimo Della Fila}//////////////
for (a=8,b=7,c=6,d=5,n=0;d>-1;a--,b--,c--,d--) {
if (mappa[n][a]==2 && mappa[n+1][b]==2 && mappa[n+2][c]==2
&& mappa[n+2][d]!=0 && mappa[n+3][d]==0) {
mappa[n+3][d]=1; turno=0; inizio (); break;
}
if (d==0 && n<5) {n++;a=9;b=8;c=7;d=6; continue;}
}
///////////////Difesa Diagonale [VersoSinistra]{Penultimo Della Fila}//////////////
for (a=8,b=7,c=6,d=5,n=0;d>-1;a--,b--,c--,d--) {
if (mappa[n][a]==2 && mappa[n+1][b]==2 && mappa[n+2][c]==0
&& mappa[n+1][c]!=0 && mappa[n+3][d]==2) {
mappa[n+2][c]=1; turno=0; inizio (); break;
}
if (d==0 && n<5) {n++;a=9;b=8;c=7;d=6; continue;}
}
///////////////Difesa Diagonale [VersoSinistra]{Terzultimo Della Fila}//////////////
for (a=8,b=7,c=6,d=5,n=0;d>-1;a--,b--,c--,d--) {
if (mappa[n][a]==2 && mappa[n+1][b]==0 && mappa[n+2][c]==2
&& mappa[n][b]!=0 && mappa[n+3][d]==2) {
mappa[n+1][b]=1; turno=0; inizio (); break;
}
if (d==0 && n<5) {n++;a=9;b=8;c=7;d=6; continue;}
}
///////////////Difesa Diagonale [VersoSinistra]{Quartultimo Della Fila}//////////////
/*Prima Riga*/
for (a=8,b=7,c=6,d=5;d>-1;a--,b--,c--,d--) {
if (mappa[0][a]==0 && mappa[1][b]==2 && mappa[2][c]==2 && mappa[3][d]==2) {
mappa[0][a]=1; turno=0; inizio (); break;
}
}
/*Altre Righe*/
for (a=8,b=7,c=6,d=5,n=1;d>-1;a--,b--,c--,d--) {
if (mappa[n][a]==0 && mappa[n+1][b]==2 && mappa[n+2][c]==2
&& mappa[n-1][a]!=0 && mappa[n+3][d]==2) {
mappa[n][a]=1; turno=0; inizio (); break;
}
if (d==0 && n<5) {n++;a=9;b=8;c=7;d=6; continue;}
}
///////////////Difesa Due Sole Vicine///////////////////////////////////////////
for (a=1,b=2,c=3;c<9;a++,b++,c++) {
if (mappa[0][a]==2 && mappa[0][b]==2 && mappa[0][c]==0) {
mappa[0][c]=1; turno=0; inizio (); break;
}
}
///////////////Difesa Due Distanti Di Una Casella///////////////////////////////
for (a=1,b=3,c=2;b<9;a++,b++,c++) {
if (mappa[0][a]==2 && mappa[0][b]==2 && mappa[0][c]==0) {
mappa[0][c]=1; turno=0; inizio (); break;
}
}
////////////////////////////////////////////////////////////////////////////////
///////////////Mosse di Attacco/////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
///////////////Attacco Due Distanti Di Una Casella//////////////////////////////
/*Prima Riga*/
for (a=1,b=3,c=2;b<9;a++,b++,c++) {
if (mappa[0][a]==1 && mappa[0][b]==1 && mappa[0][c]==0) {
mappa[0][c]=1; turno=0; inizio (); break;
}
}
/*Altre Righe*/
for (n=1 ; n<9 ; n++) {
for (a=1,b=3,c=2;b<9;a++,b++,c++) {
if (mappa[n][a]==1 && mappa[n][b]==1 && mappa[n][c]==0 && mappa[n-1][c]!=0) {
mappa[n][c]=1; turno=0; inizio (); break;
}
}
}
///////////////Attacco Due Sole Vicine(destra)//////////////////////////////////
/*Prima Riga*/
for (a=1,b=2,c=3,d=0;c<9;a++,b++,c++) {
if (mappa[0][d]==0 && mappa[0][a]==1 && mappa[0][b]==1 && mappa[0][c]==0) {
mappa[0][c]=1; turno=0; inizio (); break;
}
}
/*Altre Righe*/
for (int n=1;n<9;n++) {
for (a=1,b=2,c=3,d=0;c<8;a++,b++,c++) {
if (mappa[n][d]==0 && mappa[n][a]==1 && mappa[n][b]==1 && mappa[n][c]==0 && mappa[n-1][c]!=0) {
mappa[n][c]=1; turno=0; inizio (); break;
}
}
}
///////////////Attacco Due Sole Vicine(sinistra)////////////////////////////////
/*Prima Riga*/
for (a=1,b=2,c=3,d=4;c<9;a++,b++,c++) {
if (mappa[0][a]==0 && mappa[0][b]==1 && mappa[0][c]==1 && mappa[0][d]==0) {
mappa[0][a]=1; turno=0; inizio (); break;
}
}
/*Altre Righe*/
for (int k=1;k<9;k++) {
for (a=1,b=2,c=3,d=4;c<8;a++,b++,c++) {
if (mappa[k][a]==0 && mappa[k][b]==1 && mappa[k][c]==1 && mappa[k-1][a]!=0 && mappa[k][d]==0) {
mappa[k][a]=1; turno=0; inizio (); break;
}
}
}
///////////////Attacco Una Sola Con Niente A Due Distanze(destra)E Una Distanza(sinistra)//
for (a=0,b=1,c=2,d=3;d<9;a++,b++,c++,d++) {
if (mappa[0][a]==0 && mappa[0][b]==1 && mappa[0][c]==0 && mappa[0][d]==0) {
mappa[0][d]=1; turno=0; inizio(); break;
}
}
///////////////Attacco Una Sola Con Niente A Una Distanza(destra)E Due Distanza(sinistra)//
for (a=0,b=1,c=2,d=3;d<9;a++,b++,c++,d++) {
if (mappa[0][a]==0 && mappa[0][b]==0 && mappa[0][c]==1 && mappa[0][d]==0) {
mappa[0][a]=1; turno=0; inizio(); break;
}
}
///////////////Attacco Una Sola Con Niente Vicino///////////////////////////////
for (a=0,b=1,c=2;c<8;a++,b++,c++) {
if (mappa[0][a]==0 && mappa[0][b]==1 && mappa[0][c]==0) {
mappa[0][c]=1; turno=0; inizio (); break;
}
}
///////////////Attacco Centrale Iniziale////////////////////////////////////////
if (mappa[0][4]==0) {mappa[0][4]=1; turno=0; inizio ();}
//////////Se non si deve difendere e non può attaccare fa una mossa CASUALE/////
CASO:
perdi++;
if (mappa[0][0]==0 && mappa[0][1]==0 && mappa[0][7]==0 && mappa[0][8]==0)
{ a = rand() % 4 + 2; }
else { a = rand() % 9; }
for (int h=0;h<9;h++) {
if (mappa[h][a]==0) {
if (mappa[h+1][a+1]==2 && mappa[h+1][a+2]==2 && mappa[h+1][a+3]==2 && perdi < 1000 ||
mappa[h+1][a-1]==2 && mappa[h+1][a-2]==2 && mappa[h+1][a-3]==2 && perdi < 1000 ||
mappa[h+1][a-1]==2 && mappa[h+1][a+1]==2 && mappa[h+1][a+2]==2 && perdi < 1000 ||
mappa[h+1][a-2]==2 && mappa[h+1][a-1]==2 && mappa[h+1][a+1]==2 && perdi < 1000 ||
mappa[h+2][a+1]==2 && mappa[h+3][a+2]==2 && mappa[h+4][a+3]==2 && perdi < 1000 ||
mappa[h][a-1]==2 && mappa[h+2][a+1]==2 && mappa[h+3][a+2]==2 && perdi < 1000 ||
mappa[h-1][a-2]==2 && mappa[h][a-1]==2 && mappa[h+2][a+1]==2 && perdi < 1000 ||
mappa[h-2][a-3]==2 && mappa[h-1][a-2]==2 && mappa[h][a-1]==2 && perdi < 1000 ||
mappa[h+2][a-1]==2 && mappa[h+3][a-2]==2 && mappa[h+4][a-3]==2 && perdi < 1000 ||
mappa[h][a+1]==2 && mappa[h+2][a-1]==2 && mappa[h+3][a-2]==2 && perdi < 1000 ||
mappa[h-1][a+2]==2 && mappa[h][a+1]==2 && mappa[h+2][a-1]==2 && perdi < 1000 ||
mappa[h-2][a+3]==2 && mappa[h-1][a+2]==2 && mappa[h][a+1]==2 && perdi < 1000)
{goto CASO;}
mappa[h][a] = 1; turno=0; perdi=-1; inizio (); break;
}
}
perdi=-1;
goto CASO;
}
void TrovaVincitore () {
//Orizzontale
for (int n = 0 ; n < 9 ; n++) {
for (int a=0,b=1,c=2,d=3 ; d<9 ; a++,b++,c++,d++) {
if (mappa[n][a]==2 && mappa[n][b]==2 && mappa[n][c]==2 && mappa[n][d]==2) {
cout << "\n\n\aHai vinto!\n\n";
system("Pause"); system("cls");
main ();
}
}
}
//Verticale
for (int n = 0 ; n < 9 ; n++) {
for (int a=0,b=1,c=2,d=3 ; d<9 ; a++,b++,c++,d++) {
if (mappa[a][n]==2 && mappa[b][n]==2 && mappa[c][n]==2 && mappa[d][n]==2) {
cout << "\n\n\aHai vinto!\n\n";
system("Pause"); system("cls");
main ();
}
}
}
//Diagonale [VersoDestra]
for (int n = 0 ; n < 5 ; n++) {
for (int a=0,b=1,c=2,d=3 ; d<9 ; a++,b++,c++,d++) {
if (mappa[n][a]==2 && mappa[n+1][b]==2 && mappa[n+2][c]==2 && mappa[n+3][d]==2) {
cout << "\n\n\aHai vinto!\n\n";
system("Pause"); system("cls");
main ();
}
}
}
//Diagonale [VersoSinistra]
for (int n = 0 ; n < 5 ; n++) {
for (int a=5,b=6,c=7,d=8 ; a>0 ; a--,b--,c--,d--) {
if (mappa[n][d]==2 && mappa[n+1][c]==2 && mappa[n+2][b]==2 && mappa[n+3][a]==2) {
cout << "\n\n\aHai vinto!\n\n";
system("Pause"); system("cls");
main ();
}
}
}
}
void TrovaVincitorePC () {
//Orizzontale
for (int n = 0 ; n < 9 ; n++) {
for (int a=0,b=1,c=2,d=3 ; d<9 ; a++,b++,c++,d++) {
if (mappa[n][a]==1 && mappa[n][b]==1 && mappa[n][c]==1 && mappa[n][d]==1) {
cout << "\n\n\aHai perso!\n\n";
system("Pause"); system("cls");
main ();
}
}
}
//Verticale
for (int n = 0 ; n < 9 ; n++) {
for (int a=0,b=1,c=2,d=3 ; d<9 ; a++,b++,c++,d++) {
if (mappa[a][n]==1 && mappa[b][n]==1 && mappa[c][n]==1 && mappa[d][n]==1) {
cout << "\n\n\aHai perso!\n\n";
system("Pause"); system("cls");
main ();
}
}
}
//Diagonale [VersoDestra]
for (int n = 0 ; n < 5 ; n++) {
for (int a=0,b=1,c=2,d=3 ; d<9 ; a++,b++,c++,d++) {
if (mappa[n][a]==1 && mappa[n+1][b]==1 && mappa[n+2][c]==1 && mappa[n+3][d]==1) {
cout << "\n\n\aHai perso!\n\n";
system("Pause"); system("cls");
main ();
}
}
}
//Diagonale [VersoSinistra]
for (int n = 0 ; n < 5 ; n++) {
for (int a=5,b=6,c=7,d=8 ; a>0 ; a--,b--,c--,d--) {
if (mappa[n][d]==1 && mappa[n+1][c]==1 && mappa[n+2][b]==1 && mappa[n+3][a]==1) {
cout << "\n\n\aHai perso!\n\n";
system("Pause"); system("cls");
main ();
}
}
}
}