Vi riposto il codice
#include<stdio.h>
#include<math.h>
#include<time.h>
int main()
{
int i, j, win, a, stop; // xu, yu: coordinate che inserisce l'utente xpc, ypc: coordinate generate dal pc
char m[3][3];
srand(time(NULL));
printf("TRIS\nX : utente\nO : computer\n\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
m[i][j]=' ';
printf(" %c |", m[i][j]);
}
printf("\n------------\n");
}
system("pause");
stop=1;
win=2;
while(win==2)
{
do
{
do //inserimento utente
{
printf("Inserire la coordinata di riga: ");
scanf("%d", &i);
} while((i<0)||(i>2));
do
{
printf("Inserire la coordinata di colonna: ");
scanf("%d", &j);
} while((j<0)||(j>2));
} while(m[i][j]!=' '); //controllo se le coordinate sono libere
m[i][j]='X';
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
if(m[i][j]=='O') //vittoria pc
{
if(m[(i+1)%3][j]=='O') //controllo da parte del pc se ci sono due O sulla stessa riga ed ha quindi possibilità di vincere
{
if(m[(i+2)%3][j]=' ') //controllo se lo spazio in cui devo inserire la O è libero
{
m[(i+2)%3][j]='O';
win=0;
}
}
else if(m[i][(j+1)%3]=='O') //controllo da parte del pc se ci sono due O sulla stessa colonna ed ha quindi possibilità di vincere
{
if(m[i][(j+1)%3]=' ') //controllo se lo spazio in cui devo inserire la O è libero
{
m[i][(j+1)%3]='O';
win=0;
}
}
stop=0;
}
else if((m[i][j]=='O')&&(i=j)) //controllo da parte del pc se ci sono due O sulla stessa diagonale ed ha quindi possibilità di vincere
{
if(m[(i+1)%3][(j+1)%3]=='O')
{
if(m[(i+1)%3][(j+1)%3]=' ') //controllo se lo spazio in cui devo inserire la O è libero
{
m[(i+1)%3][(j+1)%3]='O';
win=0;
}
stop=0;
}
}
else if(m[i][j]=='X')
{
if(m[(i+1)][j]=='X') //controllo da parte del pc se ci sono due X sulla stessa riga e deve quindi bloccare l'utente
{
if(m[(i+2)%3][j]==' ')
{
m[(i+2)%3][j]='O'; //controllo se lo spazio in cui devo inserire la O è libero
}
}
else if(m[i][(j+1)%3]=='X') //controllo da parte del pc se ci sono due X sulla stessa colonna e deve quindi bloccare l'utente
{
if(m[i][(j+2)%3]==' ')
{
m[i][(j+2)%3]='O'; //controllo se lo spazio in cui devo inserire la O è libero
}
}
stop=0;
}
else if((m[i][j]=='X')&&(i=j)) //controllo da parte del pc se ci sono due X sulla stessa diagonale e deve quindi bloccare l'utente
{
if(m[(i+1)%3][(j+1)%3]=='X')
{
if(m[(i+2)%3][(j+2)%3]==' ')
{
m[(i+2)%3][(j+2)%3]='O'; //controllo se lo spazio in cui devo inserire la O è libero
}
}
stop=0;
}
}
}
if(stop) //se pc non deve impedire vittoria o vincere muove a caso controllando che non ci siano già O o X
{
do
{
i=rand()%3;
j=rand()%3;
} while(m[i][j]!=' ');
m[i][j]='O';
}
for(i=0;i<3;i++) //stampa della matrice
{
for(j=0;j<3;j++)
{
printf(" %c |", m[i][j]);
}
printf("\n------------\n");
}
if(win==0)
{
printf("\n\nChe peccato! PC ha vinto!");
}
else if(win==1)
{
printf("\n\nComplimenti! Hai vinto!");
}
system("pause");
system("cls");
}
printf("\n\n\n\n");
system("pause");
return 0;
}
Continua a non andare