| Displaying  Source Code(s)  
 
 
          
            |  |  |  
            | 
              
                | Graphic Tictactoe 
 --------------------------------------------------------------------------------
 
 Description : The first ever tictactoe playing artificial 
                intelligence. None has defeated this computer 'A.I.' . The game 
                is very flexible. Either the user or the 'A.I.' can start the 
                game. User is free to select his own symbol
 
 #include<iostream.h>
 #include<conio.h>
 #include<graphics.h>
 #include<stdlib.h>
 #include<string.h>
 #include<dos.h>
 
 void*message;
 int select(int mult)
 {
 union REGS inregs, outregs ;
 int bli=1,use=1,key=34,i;
 settextstyle(2,0,5);
 while(key!=28)
 {
 if(bli>0)
 {
 use=bli;
 setfillstyle(1,0);
 bli=0-bli;
 }
 else if(bli<0)
 {
 use=0-bli;
 setfillstyle(1,8);
 bli=0-bli;
 }
 floodfill(221,111+use*40,15);
 delay(100);
 if(bli<0)
 {
 key=kbhit();
 if(kbhit())
 {
 inregs.h.ah = 0 ;
 int86(22, &inregs, &outregs) ;
 key=outregs.h.ah;
 }
 }
 if((key==72)&&(use>1))
 {
 bli=use-1;
 }
 if((key==80)&&(use<mult))
 {
 bli=use+1;
 }
 }
 if(bli<0)
 bli=0-bli;
 return(bli);
 }
 void box(char mes[50])
 { putimage(5,5,message,0);
 settextstyle(0,0,1);
 outtextxy(20,30,mes);
 }
 void draw(char mn[3][3])
 {
 char as[3][3][3];
 char num[9][3];
 for(int i=0;i<10;i++)
 { strcpy(num[i]," ");
 num[i][0]=char(49+i);
 }
 for(i=0;i<3;i++)
 for(int j=0;j<3;j++)
 strcpy(as[i][j]," ");
 for(i=0;i<3;i++)
 { for(j=0;j<3;j++)
 {as[i][j][0]=mn[i][j];}
 }
 clearviewport();
 setcolor(15);
 rectangle(0,0,639,479);
 setfillstyle(1,8);
 settextstyle(0,0,1);
 for(i=0;i<3;i++)
 {
 rectangle(192,117+i*85,267,192+i*85);
 outtextxy(260,185+i*85,num[0+i*3]);
 rectangle(277,117+i*85,352,192+i*85);
 outtextxy(345,185+i*85,num[1+i*3]);
 rectangle(362,117+i*85,437,192+i*85);
 outtextxy(430,185+i*85,num[2+i*3]);
 }
 floodfill(500,430,15);
 setcolor(15);
 settextstyle(1,0,4);
 for(i=0;i<3;i++)
 {
 outtextxy(221,135+i*85,as[i][0]);
 outtextxy(306,135+i*85,as[i][1]);
 outtextxy(391,135+i*85,as[i][2]);
 }
 }
 void main()
 {
 clrscr();
 int gd=DETECT,gm;
 initgraph(&gd,&gm,"");
 message=malloc(imagesize(5,5,634,55));
 setcolor(15);
 rectangle(5,5,634,55);
 setfillstyle(1,RED);
 floodfill(30,30,15);
 outtextxy(10,10,"Message:-");
 getimage(5,5,634,55,message);
 char col[3][3],input,madu,comps,hums,mess[70]={"computer has 
                selected
 the
 symbol . Press any key to continue.."};
 int
 exii,dang[8],my[8],hard,many,result,guess=7,bre,mad=2,count=0,dont=0,play[
 8],p,q,end=0,note,inpu,first,use;
 do
 {guess=7;mad=2;count=0;dont=0;end=0;result=0;
 for(int i=0;i<8;i++)
 play[i]=0;
 many=0;exii=1;
 clearviewport();
 setcolor(15);
 rectangle(0,0,639,479);
 rectangle(20,320,620,460);
 rectangle(220,150,390,180);
 rectangle(240,155,370,175);
 setfillstyle(1,8);
 floodfill(100,100,15);
 setcolor(15);
 settextstyle(4,0,4);
 outtextxy(200,50,"TIC TAC TOE");
 settextstyle(3,0,1);
 outtextxy(40,290,"How to play :-");
 outtextxy(35,330,"In this Game, you may select your symbol. You 
                must
 try
 attain");
 outtextxy(26,350,"three of your symbols in a line. if you suceed 
                you
 are
 the winner.");
 outtextxy(35,370," But at the same time you should prevent the 
                computer
 from");
 outtextxy(35,390,"getting three of its symbols in a line. To 
                play enter
 the number");
 outtextxy(32,410,"associated with the place where you want to 
                play.
 Press
 any key");
 outtextxy(35,430,"to start");
 settextstyle(2,0,6);
 outtextxy(258,155,"Start Game");
 select(1);
 hard=2;
 for(int j=0;j<8;j++)
 {dang[j]=0;my[j]=0;play[j]=0;}
 for(j=0;j<3;j++)
 {
 for(int k=0;k<3;k++)
 col[j][k]=' ';
 }
 draw(col);
 box("Please type in your symbol");
 hums=getche();
 if((hums!='X')&&(hums!='x')
 )
 comps='X';
 else
 comps='0';
 mess[33]=comps;
 box(mess);
 getch();
 randomize();
 first=(int(rand()%100));
 if(hard==2)guess=(int(rand()%100));
 else guess=5;
 if((first%4)>=2)
 {use=guess%3;box("Computer has the first chance to play!");}
 else
 {use=3;
 mad=0;box("You have the first chance to play!");}
 delay(2000);
 do
 {
 for(int j=0;j<8;j++)
 {dang[j]=0;my[j]=0;}
 count++;
 mad++;bre=0;
 if((end!=1)&&(mad!=1))
 {
 switch(use)
 {
 case 0:{ switch(count)
 {
 case 1: col[2][2]=comps;break;
 case 2: {if(col[1][1]==hums)
 {col[0][0]=comps;play[0]=1;}
 else if((col[2][0]==hums)||(col[2][1]==hums))
 {col[0][2]=comps;play[1]=1;}
 else if((col[0][1]==hums))
 {col[0][2]=comps;play[3]=1;}
 else if((col[1][0]==hums))
 {col[2][0]=comps;play[4]=1;}
 else if((col[0][2]==hums)||(col[1][2]==hums))
 {col[2][0]=comps;play[2]=1;}
 else if (col[0][0]==hums)
 {col[0][2]=comps;play[3]=1;}
 else dont=1;
 }break;
 case 3:{if(play[0]==1)
 dont=1;
 else if((play[1]==1)&&(col[1][2]==hums))
 {col[0][0]=comps;}
 else if((play[2]==1)&&(col[2][1]==hums))
 {col[0][0]=comps;}
 else if((play[3]==1)&&((col[2][1]==hums)||(col[1][2]==hums)))
 {col[2][0]=comps;}
 else if((play[4]==1)&&(col[2][1]==hums))
 {col[0][2]=comps;}
 else
 dont=1;
 }break;
 case 4:dont=1;break;
 }
 }break;
 case 1:{switch(count)
 { case 1:col[0][1]=comps;break;
 case 2:{if(col[2][0]==hums)
 col[0][0]=comps;
 else if(col[1][0]==hums)
 col[0][0]=comps;
 else if(col[0][2]==hums)
 col[1][0]=comps;
 else if(col[1][2]==hums)
 col[0][2]=comps;
 else if(col[0][0]==hums)
 col[1][2]=comps;
 else if(col[2][2]==hums)
 col[0][2]=comps;
 else if(q<=1)
 col[2][2]=comps;
 else
 col[2][0]=comps;
 } break;
 case 3:dont=1;
 }
 
 }break;
 case 2:{switch(count)
 { case 1:col[1][1]=comps;break;
 case 2:dont=1;
 }
 }break;
 case 3:{dont=1;
 }break;
 }
 if(dont==1)
 {
 for(int i=0,l=2;i<3;i++,l--)
 {
 if(col[i][i]==hums)
 dang[0]++;
 else if(col[i][i]==comps)
 my[0]++;
 if(col[i][l]==hums)
 dang[1]++;
 else if(col[i][l]==comps)
 my[1]++;
 }
 for(j=0;j<3;j++)
 {
 for(int k=0;k<3;k++)
 {
 if(col[j][k]==hums)
 dang[j+2]++;
 else if(col[j][k]==comps)
 my[j+2]++;
 if(col[k][j]==hums)
 dang[j+5]++;
 else if(col[k][j]==comps)
 my[j+5]++;
 }
 }
 for(int j=0;j<8;j++)
 {
 if((my[j]==3)||(dang[j]==3)||(count==5))
 end=1;
 if((dang[j]==2)&&(my[j]!=0))
 dang[j]=0;
 if((my[j]==2)&&(dang[j]==0))
 {my[j]=3;bre=1;}
 }
 if(bre==1)
 {for(j=0;j<8;j++)
 dang[j]=0;
 }
 if((dang[0]==2)||(my[0]==3))
 {
 for(int i=0;i<3;i++)
 { if(col[i][i]==' ')
 col[i][i]=comps;
 
 }}
 else if((dang[1]==2)||(my[1]==3))
 {
 for(int i=0,l=2;i<3;i++,l--)
 { if(col[i][l]==' ')
 col[i][l]=comps;
 }}
 
 else
 if((dang[2]==2)||(my[2]==3)||(dang[3]==2)||(my[3]==3)||(dang[4]==2)||(my[4
 ]==3))
 {
 for(j=0;j<3;j++)
 {if((dang[j+2]==2)||(my[j+2]==3))
 for(int k=0;k<3;k++)
 {if(col[j][k]==' ')
 {col[j][k]=comps;bre=1;}}
 }
 }
 else
 if((dang[5]==2)||(my[5]==3)||(dang[6]==2)||(my[6]==3)||(dang[7]==2)||(my[7
 ]==3))
 {
 for(int j=0;j<3;j++)
 {if((dang[j+5]==2)||(my[j+5]==3))
 for(int k=0;k<3;k++)
 {if(col[k][j]==' ')
 {col[k][j]=comps;bre=1;}}
 }
 }
 else if(col[1][1]==' ')
 col[1][1]=comps;
 else if((use==2)&&(col[2][2]==' '))
 col[2][2]=comps;
 else if((use==2)&&(col[0][2]==' '))
 col[0][2]=comps;
 else
 if((((col[0][0]==hums)&&(col[2][2]==hums))||((col[0][2]==hums)&&(col[2][0]
 ==hums)))&&(col[1][2]==' '))
 col[1][2]=comps;
 else
 if((col[1][1]!=hums)&&((col[0][0]==hums)||(col[2][2]==hums))&&((col[0][1]=
 =hums)||(col[1][2]==hums))&&(col[0][2]==' '))
 col[0][2]=comps;
 else
 if((col[1][1]!=hums)&&((col[0][0]==hums)||(col[2][2]==hums))&&((col[1][0]=
 =hums)||(col[2][1]==hums))&&(col[2][0]==' '))
 col[2][0]=comps;
 else
 if((col[1][1]!=hums)&&((col[0][2]==hums)||(col[2][0]==hums))&&((col[2][1]=
 =hums)||(col[1][2]==hums))&&(col[2][2]==' '))
 col[2][2]=comps;
 else
 if((col[1][1]!=hums)&&((col[0][2]==hums)||(col[2][0]==hums))&&((col[0][1]=
 =hums)||(col[1][0]==hums))&&(col[0][0]==' '))
 col[0][0]=comps;
 else if((col[1][1]!=comps)&&(col[2][2]==' '))
 col[2][2]=comps;
 else if((col[1][1]!=comps)&&(col[0][2]==' '))
 col[0][2]=comps;
 else if(col[0][0]==' ')
 col[0][0]=comps;
 else if(col[2][2]==' ')
 col[2][2]=comps;
 else if(col[0][1]==' ')
 col[0][1]=comps;
 else if(col[1][2]==' ')
 col[1][2]=comps;
 else if(col[0][2]==' ')
 col[0][2]=comps;
 else if(col[2][0]==' ')
 col[2][0]=comps;
 else if(col[1][0]==' ')
 col[1][0]=comps;
 else if(col[2][1]==' ')
 col[2][1]=comps;
 }
 for(int i=0;i<8;i++)
 {if(my[i]==3)
 end=1;
 }
 }
 star:
 draw(col);
 box(" ");
 if(end!=1)
 {
 box("play");
 madu=getche();
 if((int(madu)<49)||(int(madu)>57))
 {box("INVALID ENTRY!");for(long double 
                jk=0;jk<99999999;jk++);goto
 star;}
 inpu=int(madu)-48;
 p=(inpu-1)/3;
 switch(inpu%3)
 {case 0:q=2;break;
 case 1:q=0;break;
 case 2:q=1;break;
 }
 if(col[p][q]!=' ')
 {box("Space is already occupied!");for(long double
 jk=0;jk<99999999;jk++);goto star;}
 col[p][q]=hums;
 }
 for(j=0;j<8;j++)
 {dang[j]=0;my[j]=0;}
 for(int i=0,l=2;i<3;i++,l--)
 {
 if(col[i][i]==hums)
 dang[0]++;
 else if(col[i][i]==comps)
 my[0]++;
 if(col[i][l]==hums)
 dang[1]++;
 else if(col[i][l]==comps)
 my[1]++;
 }
 for(j=0;j<3;j++)
 {
 for(int k=0;k<3;k++)
 {
 if(col[j][k]==hums)
 dang[j+2]++;
 else if(col[j][k]==comps)
 my[j+2]++;
 if(col[k][j]==hums)
 dang[j+5]++;
 else if(col[k][j]==comps)
 my[j+5]++;
 }
 }
 for(j=0;j<8;j++)
 {if((my[j]==3)||(dang[j]==3))
 end=1;
 }
 }while((end!=1));
 draw(col);
 for(int asd=0;asd<6;asd++)
 {many=many+1;
 if((my[0]==3)||(dang[0]==3))
 {exii=0;
 if(many%2==1)
 for(int m=0,n=0;m<3;m++,n++)
 { setfillstyle(1,BLUE);floodfill(193+m*85,118+n*85,15); }
 else
 for(int m=0,n=0;m<3;m++,n++)
 { setfillstyle(1,BLACK);floodfill(193+m*85,118+n*85,15); }}
 else if((my[1]==3)||(dang[1]==3))
 {exii=0;
 if(many%2==1)
 for(int m=0,n=2;m<3;m++,n--)
 { setfillstyle(1,BLUE);floodfill(193+m*85,118+n*85,15); }
 else
 for(int m=0,n=2;m<3;m++,n--)
 { setfillstyle(1,BLACK);floodfill(193+m*85,118+n*85,15); }}
 else for(j=2;j<8;j++)
 {if(((my[j]==3)||(dang[j]==3))&&(j<5))
 {exii=0;
 if(many%2==1)
 for(int m=0,n=j-2;m<3;m++)
 { setfillstyle(1,BLUE);floodfill(193+m*85,118+n*85,15); }
 else
 for(int m=0,n=j-2;m<3;m++)
 { setfillstyle(1,BLACK);floodfill(193+m*85,118+n*85,15); }}
 else if((my[j]==3)||(dang[j]==3))
 {exii=0;
 if(many%2==1)
 for(int m=0,n=j-5;m<3;m++)
 { setfillstyle(1,BLUE);floodfill(193+n*85,118+m*85,15); }
 else
 for(int m=0,n=j-5;m<3;m++)
 { setfillstyle(1,BLACK);floodfill(193+n*85,118+m*85,15); }}
 }
 for(long double jk=0;jk<9999999;jk++);
 if(exii==1)break;
 }
 for(int m=0;m<8;m++)
 { if(my[m]==3)
 result=1;
 }
 for(m=0;m<8;m++)
 { if(dang[m]==3)
 result=2; }
 switch(result)
 {case 1:box("You loose! Want to try again(y/n)");break;
 case 2:box("You win! Want to try again(y/n)");break;
 default:box("The game is draw! Want to try again(y/n)");break;
 }
 input=getche();
 }while(input=='Y'||input=='y');
 clearviewport();
 outtextxy(80,150,"This game is developed by Anand ts. Watch out! 
                coming
 soon");
 outtextxy(170,175,"from the same developer `The Gunman'!");
 for(long double mas=0;mas<=99999999;mas++);
 exit(0);
 }
 
 |  |  |