rendered paste body/*******************************************************/// TIC TAC TOE with computer AI //// Coded by PRATIK ANAND //// Modified by Haritosh Joshi //// Beta testing by Prateek Jain //// // /******************************************************/#include<iostream.h>#include<conio.h>#include<stdio.h>#include<stdlib.h>int flag=0;void display(char a[][3]);void check(char a[3][3],char stat){int i=0,j=0;if ((a[0][0]==a[1][1] && a[1][1]==a[2][2] && a[0][0]!='_') || (a[0][2]==a[1][1] && a[1][1]==a[2][0] && a[0][2]!='_'))if (stat=='u'){cout<<"\n\nYou have won";display(a);getch();exit(0);}else if (stat=='a'){cout<<"\n\nComputer has won";display(a);getch();exit(0);}for(i=0;i<3;i++) if ((((a[i][j]==a[i][j+1]) && (a[i][j]==a[i][j+2])) && (a[i][j]!='_'))) { if (stat=='u') flag=1; else if (stat=='a') flag=2; goto condition; }for(i=0;i<3;i++) if ((a[j][i]==a[j+1][i] && a[j][i]==a[j+2][i]) && a[j][i]!='_') { if (stat=='u') flag=1; else if (stat=='a') flag=2; } condition: if (flag==1) { cout<<"You have won"; display(a); getch(); exit(0); } else if (flag==2) { cout<<"Computer has won"; display(a); getch(); exit(0); } }void user(char a[3][3]){if (flag) return;int row,col;sub:cout<<"\nEnter row and column no. b/w 1 and 3 :";cin>>row>>col;if (a[row-1][col-1]=='_')a[row-1][col-1]='x';else{cout<<"\n\nPlease enter a proper choice ";goto sub;}check(a,'u');}void ai(char a[3][3]){int i,j,k,l;if (flag) return;if (a[0][0]==a[1][1] && a[0][0]!='_') //diag { if(a[2][2]=='_') {a[2][2]='o'; goto final;} } else if (a[0][0]==a[2][2] && a[0][0]!='_') //diag { if(a[1][1]=='_') {a[1][1]='o'; goto final; } } else if (a[1][1]==a[2][2] && a[1][1]!='_') //diag { if(a[0][0]=='_') {a[0][0]='o'; goto final;} } else if (a[0][2]==a[1][1] && a[0][2]!='_') //diag { if(a[2][0]=='_') { a[2][0]='o'; goto final; } } else if (a[0][2]==a[2][0] && a[0][2]!='_') //diag { if(a[2][2]=='_') {a[1][1]='o'; goto final;} } else if (a[1][1]==a[2][0] && a[1][1]!='_') //diag { if(a[2][2]=='_') { a[0][2]='o'; goto final;} } //------------------------------------ for(i=0;i<3;i++) //for row for(j=0;j<3;j++) { if((a[i][j]=='x' && a[i][j+2]=='x') || (a[i][j]=='o' && a[i][j+2]=='o')) { if(a[i][j+1]=='_') { a[i][j+1]='o'; goto final; } } else if((a[i][j]=='x' && a[i][j+1]=='x') || (a[i][j]=='o' && a[i][j+1]=='o')) { if(a[i][j+2]=='_') {a[i][j+2]='o'; goto final;} } else if((a[i][j+1]=='x'&& a[i][j+2]=='x') || (a[i][j+1]=='o' && a[i][j+2]=='o')) { if(a[i][j]=='_') {a[i][j]='o'; goto final;} } } for(i=0;i<3;i++) //for col for(j=0;j<3;j++) { if((a[j][i]=='x' && a[j+2][i]=='x') || (a[j][i]=='o' && a[j+2][i]=='o')) { if(a[j+1][i]=='_') {a[j+1][i]='o'; goto final;} } else if((a[j][i]=='x' && a[j+1][i]=='x') || (a[j][i]=='o' && a[j+1][i]=='o') ) { if(a[j+2][i]=='_') {a[j+2][i]='o'; goto final;} } else if((a[j+1][i]=='x'&& a[j+2][i]=='x') || (a[j+1][i]=='o' && a[j+2][i]=='o')) { if(a[j][i]=='_') a[j][i]='o'; goto final; }} sub:randomize(); k=random(3); l=random(3); if(a[k][l]=='_') a[k][l]='o'; else goto sub; final: check(a,'a'); }void display(char a[][3]) { cout<<"\n"; for(int i=0;i<3;i++) { for(int j=0;j<3;j++) cout<<a[i][j]<<"\t"; cout<<endl; } }int draw(char a[][3]) { int tt=1; for(int i=0;i<3;i++) for(int j=0;j<3;j++) { if(a[i][j]=='_') tt=0; } return tt; }void main(){ clrscr(); char a[3][3]; for(int i=0;i<3;i++) for(int j=0;j<3;j++) a[i][j]='_'; while(flag!=1 || flag!=2) { cout<<"user :"; user(a); display(a); if(draw(a)){cout<<"Draw";break;} cout<<"comp :"; ai(a); display(a); if(draw(a)){cout<<"Draw";break;} } getch();}