Sono nuovo nel C.
Lo sto studiando da un anno a scuola, quindi ho cercato di sfornare questo programmino.
Allego il codice. Il programma è sicuramente poco comprensibile e mooooooooolto "incasinato", per questo mi affido a voi.
Il programma funziona alla perfezione, solo che ogni tanto, su windows, crasha.
Come posso risolvere?
#include<stdio.h>
#include<time.h>
int stampa(int x,int y);
int inserimento(void);
int controllo(void);
int x,y;
int contatore=0;
int main(void)
{
if(controllo()==1)
{
printf("VITTORIA!\n");
system("pause");
}
if(contatore%2)
{
inserimento();
stampa(x,y);
}
printf("\n\nInserisci la x e la y separate da uno spazio ");
scanf("%d %d",&x,&y);
if(x>2 || y>2)
{
printf("COORDINATE SBAGLIATE!");
main();
}
switch(x)
{
case 0:
break;
case 1:
x=2;
break;
case 2:
x=4;
break;
}
switch(y)
{
case 0:
break;
case 1:
y=2;
break;
case 2:
y=4;
break;
}
contatore++;
stampa(x,y);
return 0;
}
char tris[5][7];
int stampa(x,y)
{
FILE *fp;
int v=0,o=0;
fp=fopen("tris.txt","r");
if((tris[x][y]=='X' || tris[x][y]=='O') && contatore%2)
{
printf("Casella gia' occupata!");
contatore--;
main();
}
else
{
if(contatore%2)
tris[x][y]='X';
else
tris[x][y]='O';
}
while(v<5)
{
while(o<6)
{
if(tris[v][o]=='X' || tris[v][o]=='O')
{
printf("%c",tris[v][o]);
o++;
tris[v][o]=fgetc(fp);
}
else
{
tris[v][o]=fgetc(fp);
printf("%c",tris[v][o]);
o++;
}
}
o=0;
v++;
}
fclose(fp);
printf("\n\n");
controllo();
main();
}
int xa[3]={0,2,4};
int ya[3]={0,2,4};
int inserimento(void)
{
int i=0;
srand(time(NULL));
x=xa[rand()%3];
y=ya[rand()%3];
if(tris[x][y]!='O' && tris[x][y]!='X')
tris[x][y]='O';
else
inserimento();
contatore++;
stampa(x,y);
}
int controllo()
{
if((tris[0][0]==tris[0][2] && tris[0][2]==tris[0][4]) && (tris[0][0]=='X' || tris[0][0]=='O') )
{
printf("TRIS!\n");
return 1;
}
if((tris[2][0]==tris[2][2] && tris[2][2]==tris[2][4]) && (tris[2][0]=='X' || tris[2][0]=='O') )
{
printf("TRIS!");
return 1;
}
if((tris[4][0]==tris[4][2] && tris[4][2]==tris[4][4]) && (tris[4][0]=='X' || tris[4][0]=='O') )
{
printf("TRIS!");
return 1;
}
if((tris[0][0]==tris[2][0] && tris[2][0]==tris[4][0]) && (tris[0][0]=='X' || tris[0][0]=='O') )
{
printf("TRIS!");
return 1;
}
if((tris[0][2]==tris[2][2] && tris[2][2]==tris[4][2]) && (tris[0][2]=='X' || tris[0][2]=='O') )
{
printf("TRIS!");
return 1;
}
if((tris[0][4]==tris[2][4] && tris[2][4]==tris[4][4]) && (tris[0][4]=='X' || tris[0][4]=='O') )
{
printf("TRIS!");
return 1;
}
if((tris[0][0]==tris[2][2] && tris[2][2]==tris[4][4]) && (tris[0][0]=='X' || tris[0][0]=='O') )
{
printf("TRIS!");
return 1;
}
if((tris[0][4]==tris[2][2] && tris[2][2]==tris[4][0]) && (tris[0][4]=='X' || tris[0][4]=='O') )
{
printf("TRIS!");
return 1;
}
if((tris[0][0]==tris[0][1]==tris[0][2]==tris[1][0]==tris[1][2]==tris[1][4]==tris[2][0]==tris[2][2]==tris[2][4]) && (tris[0][0]!='X' && tris[0][0]!='O'))
{
printf("PATTA");
system("PAUSE");
}
}