#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
//-------------------------------
char Griglia[10];
int vincita=0;
//-------------------------------
void DisegnaGriglia();
void Clear();
void PulisciGriglia();
void MossaComputer();
void MossaGiocatore();
int TestaVincita();
int TestaPericolo();
//-------------------------------
int main(int argc, char *argv[]){
char t;
srand(time(NULL));
inizio:
Clear();
PulisciGriglia();
DisegnaGriglia();
while(vincita==0){
if(Griglia[0]==0) {MossaComputer();Griglia[0]=1;}
if(Griglia[0]==1) {MossaGiocatore();Griglia[0]=0;}
Clear();
DisegnaGriglia();
vincita = TestaVincita();
}
if (vincita==1){
printf("\nHai perso!\n");
getch();
}
if (vincita==2){
printf("\nHai vinto!\n");
getch();
}
if (vincita==3){
printf("\nPareggio!\n");
getch();
}
return 0;
}
void DisegnaGriglia(){
printf("\n.---.---.---.\n| %c | %c | %c |\n|---|---|---|\n| %c | %c | %c |\n|---|---|---|\n| %c | %c | %c |\n\'---\'---\'---\'",
Griglia[1],Griglia[2],Griglia[3],Griglia[4],Griglia[5],Griglia[6],Griglia[7],Griglia[8],Griglia[9]);
return;
}
void Clear(){
system("cls");
return;
}
void PulisciGriglia(){
Griglia[1]='a';
Griglia[2]='b';
Griglia[3]='c';
Griglia[4]='d';
Griglia[5]='e';
Griglia[6]='f';
Griglia[7]='g';
Griglia[8]='h';
Griglia[9]='i';
Griglia[0]=rand()%2;
return;
}
void MossaComputer(){
srand(time(NULL));
int caselle;
int num;
int per;
per = TestaPericolo();
if (per==0){
if (Griglia[1]=='a') caselle+=1;
if (Griglia[2]=='b') caselle+=1;
if (Griglia[3]=='c') caselle+=1;
if (Griglia[4]=='d') caselle+=1;
if (Griglia[5]=='e') caselle+=1;
if (Griglia[6]=='f') caselle+=1;
if (Griglia[7]=='g') caselle+=1;
if (Griglia[8]=='h') caselle+=1;
if (Griglia[9]=='i') caselle+=1;
num = (rand()%caselle)+1;
caselle=0;
if (Griglia[1]=='a') caselle+=1;
if (num==caselle) Griglia[num]='x';
if (Griglia[2]=='b') caselle+=1;
if (num==caselle) Griglia[num]='x';
if (Griglia[3]=='c') caselle+=1;
if (num==caselle) Griglia[num]='x';
if (Griglia[4]=='d') caselle+=1;
if (num==caselle) Griglia[num]='x';
if (Griglia[5]=='e') caselle+=1;
if (num==caselle) Griglia[num]='x';
if (Griglia[6]=='f') caselle+=1;
if (num==caselle) Griglia[num]='x';
if (Griglia[7]=='g') caselle+=1;
if (num==caselle) Griglia[num]='x';
if (Griglia[8]=='h') caselle+=1;
if (num==caselle) Griglia[num]='x';
if (Griglia[9]=='i') caselle+=1;
if (num==caselle) Griglia[num]='x';
}else{
scie:
if (Griglia[per]=='o') {per=((per+1)%9); if (per==0) per=1; goto scie;}else{
Griglia[per]='x';}
}
return;
}
void MossaGiocatore(){
char key;
for(;;){
if (_kbhit()){
key = getch();
if (key=='a' || key=='A') { if (Griglia[1]=='a') Griglia[1]='o'; }
if (key=='b' || key=='B') { if (Griglia[2]=='b') Griglia[2]='o'; }
if (key=='c' || key=='C') { if (Griglia[3]=='c') Griglia[3]='o'; }
if (key=='d' || key=='D') { if (Griglia[4]=='d') Griglia[4]='o'; }
if (key=='e' || key=='E') { if (Griglia[5]=='e') Griglia[5]='o'; }
if (key=='f' || key=='F') { if (Griglia[6]=='f') Griglia[6]='o'; }
if (key=='g' || key=='G') { if (Griglia[7]=='g') Griglia[7]='o'; }
if (key=='h' || key=='H') { if (Griglia[8]=='h') Griglia[8]='o'; }
if (key=='i' || key=='I') { if (Griglia[9]=='i') Griglia[9]='o'; }
return;
}
_sleep(1);
}//for(;;)
return;
}
int TestaPericolo(){
if (Griglia[1]=='o' && Griglia[2]=='o') return 3;
if (Griglia[2]=='o' && Griglia[3]=='o') return 1;
if (Griglia[3]=='o' && Griglia[1]=='o') return 2;
if (Griglia[4]=='o' && Griglia[5]=='o') return 6;
if (Griglia[4]=='o' && Griglia[6]=='o') return 5;
if (Griglia[5]=='o' && Griglia[6]=='o') return 4;
if (Griglia[7]=='o' && Griglia[8]=='o') return 9;
if (Griglia[8]=='o' && Griglia[9]=='o') return 7;
if (Griglia[9]=='o' && Griglia[7]=='o') return 8;
if (Griglia[1]=='o' && Griglia[4]=='o') return 7;
if (Griglia[1]=='o' && Griglia[7]=='o') return 4;
if (Griglia[7]=='o' && Griglia[4]=='o') return 1;
if (Griglia[2]=='o' && Griglia[5]=='o') return 8;
if (Griglia[5]=='o' && Griglia[8]=='o') return 2;
if (Griglia[8]=='o' && Griglia[2]=='o') return 5;
if (Griglia[3]=='o' && Griglia[6]=='o') return 9;
if (Griglia[6]=='o' && Griglia[9]=='o') return 3;
if (Griglia[9]=='o' && Griglia[3]=='o') return 6;
if (Griglia[1]=='o' && Griglia[5]=='o') return 9;
if (Griglia[5]=='o' && Griglia[9]=='o') return 1;
if (Griglia[9]=='o' && Griglia[1]=='o') return 5;
if (Griglia[3]=='o' && Griglia[5]=='o') return 7;
if (Griglia[5]=='o' && Griglia[7]=='o') return 3;
if (Griglia[7]=='o' && Griglia[3]=='o') return 5;
//=============================================\\
if (Griglia[1]=='x' && Griglia[2]=='x') return 3;
if (Griglia[2]=='x' && Griglia[3]=='x') return 1;
if (Griglia[3]=='x' && Griglia[1]=='x') return 2;
if (Griglia[4]=='x' && Griglia[5]=='x') return 6;
if (Griglia[4]=='x' && Griglia[6]=='x') return 5;
if (Griglia[5]=='x' && Griglia[6]=='x') return 4;
if (Griglia[7]=='x' && Griglia[8]=='x') return 9;
if (Griglia[8]=='x' && Griglia[9]=='x') return 7;
if (Griglia[9]=='x' && Griglia[7]=='x') return 8;
if (Griglia[1]=='x' && Griglia[4]=='x') return 7;
if (Griglia[1]=='x' && Griglia[7]=='x') return 4;
if (Griglia[7]=='x' && Griglia[4]=='x') return 1;
if (Griglia[2]=='x' && Griglia[5]=='x') return 8;
if (Griglia[5]=='x' && Griglia[8]=='x') return 2;
if (Griglia[8]=='x' && Griglia[2]=='x') return 5;
if (Griglia[3]=='x' && Griglia[6]=='x') return 9;
if (Griglia[6]=='x' && Griglia[9]=='x') return 3;
if (Griglia[9]=='x' && Griglia[3]=='x') return 6;
if (Griglia[1]=='x' && Griglia[5]=='x') return 9;
if (Griglia[5]=='x' && Griglia[9]=='x') return 1;
if (Griglia[9]=='x' && Griglia[1]=='x') return 5;
if (Griglia[3]=='x' && Griglia[5]=='x') return 7;
if (Griglia[5]=='x' && Griglia[7]=='x') return 3;
if (Griglia[7]=='x' && Griglia[3]=='x') return 5;
return 0;
}
int TestaVincita(){
if (Griglia[1]=='o' && Griglia[2]=='o' && Griglia[3]=='o') return 2;
if (Griglia[4]=='o' && Griglia[5]=='o' && Griglia[6]=='o') return 2;
if (Griglia[7]=='o' && Griglia[8]=='o' && Griglia[9]=='o') return 2;
if (Griglia[1]=='o' && Griglia[4]=='o' && Griglia[7]=='o') return 2;
if (Griglia[2]=='o' && Griglia[5]=='o' && Griglia[8]=='o') return 2;
if (Griglia[3]=='o' && Griglia[6]=='o' && Griglia[9]=='o') return 2;
if (Griglia[1]=='o' && Griglia[5]=='o' && Griglia[9]=='o') return 2;
if (Griglia[3]=='o' && Griglia[5]=='o' && Griglia[7]=='o') return 2;
if (Griglia[1]=='x' && Griglia[2]=='x' && Griglia[3]=='x') return 1;
if (Griglia[4]=='x' && Griglia[5]=='x' && Griglia[6]=='x') return 1;
if (Griglia[7]=='x' && Griglia[8]=='x' && Griglia[9]=='x') return 1;
if (Griglia[1]=='x' && Griglia[4]=='x' && Griglia[7]=='x') return 1;
if (Griglia[2]=='x' && Griglia[5]=='x' && Griglia[8]=='x') return 1;
if (Griglia[3]=='x' && Griglia[6]=='x' && Griglia[9]=='x') return 1;
if (Griglia[1]=='x' && Griglia[5]=='x' && Griglia[9]=='x') return 1;
if (Griglia[3]=='x' && Griglia[5]=='x' && Griglia[7]=='x') return 1;
if (Griglia[1]!='a' && Griglia[2]!='b' &&
Griglia[3]!='c' && Griglia[4]!='d' &&
Griglia[5]!='e' && Griglia[6]!='f' &&
Griglia[7]!='g' && Griglia[8]!='h' && Griglia[9]!='i') return 3;
return 0;
}