program X_O_program;
uses crt,sysutils;
type pozicii = (A1,A2,A3,B1,B2,B3,C1,C2,C3);
VAR
    izbor,kraj,x_o:STRING;
    igrac,brojac:byte;
    pozicija:ARRAY[pozicii] of STRING;
    pobednik:boolean;
    x,y:byte;
PROCEDURE nacrtaj_tabla();
    BEGIN
        Writeln('     1   2   3  ');
        Writeln;
        writeln('A  |   |   |   |');
        writeln('   -------------');
        writeln('B  |   |   |   |');
        writeln('   -------------');
        writeln('C  |   |   |   |');
        writeln('   -------------');
    END;
PROCEDURE popolni_tabla(izbor,x_o:STRING);
VAR x,y:byte;
        BEGIN
        case izbor of
            'A1':BEGIN gotoxy(6,6) ; pozicija[A1]:=x_o ; END;
            'A2':BEGIN gotoxy(10,6) ; pozicija[A2]:=x_o ;  END;
            'A3':BEGIN gotoxy(14,6) ; pozicija[A3]:=x_o ;  END;
            'B1':BEGIN gotoxy(6,8) ; pozicija[B1]:=x_o ;  END;
            'B2':BEGIN gotoxy(10,8) ; pozicija[B2]:=x_o ;  END;
            'B3':BEGIN gotoxy(14,8) ; pozicija[B3]:=x_o ;  END;
            'C1':BEGIN gotoxy(6,10) ; pozicija[C1]:=x_o ;  END;
            'C2':BEGIN gotoxy(10,10) ; pozicija[C2]:=x_o ;  END;
            'C3':BEGIN gotoxy(14,10) ; pozicija[C3]:=x_o ;  END;
          
        end;
                writeln(x_o);
        gotoxy(1,14);
    end;
PROCEDURE proveri_pobednik();
VAR x,y:byte;
    BEGIN
        IF ((pozicija[A1]='X') AND (pozicija[A2]='X') AND (pozicija[A3]='X'))
            THEN
                BEGIN
                    Writeln('Igracot 1 [X] e POBEDNIK!!!');
                    pobednik:=True;
                END
        ELSE IF ((pozicija[B1]='X') AND (pozicija[B2]='X') AND (pozicija[B3]='X'))
            THEN
                BEGIN
                    Writeln('Igracot 1 [X] e POBEDNIK!!!');
                    pobednik:=True;
                END
        ELSE IF ((pozicija[C1]='X') AND (pozicija[C2]='X') AND (pozicija[C3]='X'))
            THEN
                BEGIN
                    Writeln('Igracot 1 [X] e POBEDNIK!!!');
                    pobednik:=True;
                END
        ELSE IF ((pozicija[A1]='X') AND (pozicija[B2]='X') AND (pozicija[C3]='X'))
            THEN
                BEGIN
                    Writeln('Igracot 1 [X] e POBEDNIK!!!');
                    pobednik:=True;
                END
        ELSE IF ((pozicija[A3]='X') AND (pozicija[B2]='X') AND (pozicija[C1]='X'))
            THEN
                BEGIN
                    Writeln('Igracot 1 [X] e POBEDNIK!!!');
                    pobednik:=True;
                END
        ELSE IF ((pozicija[A1]='X') AND (pozicija[B1]='X') AND (pozicija[C1]='X'))
            THEN
                BEGIN
                    Writeln('Igracot 1 [X] e POBEDNIK!!!');
                    pobednik:=True;
                END
        ELSE IF ((pozicija[A2]='X') AND (pozicija[B2]='X') AND (pozicija[C2]='X'))
            THEN
                BEGIN
                    Writeln('Igracot 1 [X] e POBEDNIK!!!');
                    pobednik:=True;
                END
        ELSE IF ((pozicija[A3]='X') AND (pozicija[B3]='X') AND (pozicija[C3]='X'))
            THEN
                BEGIN
                    Writeln('Igracot 1 [X] e POBEDNIK!!!');
                    pobednik:=True;
                END
        ELSE IF ((pozicija[A1]='O') AND (pozicija[A2]='O') AND (pozicija[A3]='O'))
            THEN
                BEGIN
                    Writeln('Igracot 2 [O] e POBEDNIK!!!');
                    pobednik:=True;
                END
        ELSE IF ((pozicija[B1]='O') AND (pozicija[B2]='O') AND (pozicija[B3]='O'))
            THEN
                BEGIN
                    Writeln('Igracot 2 [O] e POBEDNIK!!!');
                    pobednik:=True;
                END
        ELSE IF ((pozicija[C1]='O') AND (pozicija[C2]='O') AND (pozicija[C3]='O'))
            THEN
                BEGIN
                    Writeln('Igracot 2 [O] e POBEDNIK!!!');
                    pobednik:=True;
                END
        ELSE IF ((pozicija[A1]='O') AND (pozicija[B2]='O') AND (pozicija[C3]='O'))
            THEN
                BEGIN
                    Writeln('Igracot 2 [O] e POBEDNIK!!!');
                    pobednik:=True;
                END
        ELSE IF ((pozicija[A3]='O') AND (pozicija[B2]='O') AND (pozicija[C1]='O'))
            THEN
                BEGIN
                    Writeln('Igracot 2 [O] e POBEDNIK!!!');
                    pobednik:=True;
                END
        ELSE IF ((pozicija[A1]='O') AND (pozicija[B1]='O') AND (pozicija[C1]='O'))
            THEN
                BEGIN
                    Writeln('Igracot 2 [O] e POBEDNIK!!!');
                    pobednik:=True;
                END
        ELSE IF ((pozicija[A2]='O') AND (pozicija[B2]='O') AND (pozicija[C2]='O'))
            THEN
                BEGIN
                    Writeln('Igracot 2 [O] e POBEDNIK!!!');
                    pobednik:=True;
                END
        ELSE IF ((pozicija[A3]='O') AND (pozicija[B3]='O') AND (pozicija[C3]='O'))
            THEN
                BEGIN
                    Writeln('Igracot 2 [O] e POBEDNIK!!!');
                    pobednik:=True;
                END;
    end;  
BEGIN
    repeat
    clrscr;
    Writeln('Dobredojdovte,uzhivajte vo igranjeto!');
    writeln;
    writeln;
    nacrtaj_tabla(); {Crtanje na polinja za igranje}
    writeln;
    writeln;
    brojac:=0;
    pobednik:=false;
    repeat
  
    pobednik:=false;
    igrac:=brojac mod 2;
    IF (igrac = 0)
        THEN
            BEGIN
                write('Igracot 1 [X] bira pole:');
                readln(izbor);
                                izbor:=UpperCase(izbor);
                x_o := 'X';
                popolni_tabla(izbor,x_o);
                TextColor(green);
                proveri_pobednik();
                TextColor(white);
            END
        ELSE
            BEGIN
                write('Igracot 2 [O] bira pole:');
                readln(izbor);
                                izbor:=UpperCase(izbor);
                x_o := 'O';
                popolni_tabla(izbor,x_o);
                TextColor(green);
                proveri_pobednik();
                TextColor(white);
            END;
  
    IF (brojac=8) AND (pobednik=false)
        THEN
            BEGIN
                gotoxy(1,14);
                writeln;
                writeln;
                TextColor(yellow);
                Writeln('Igrata e nereshena!!!');
                TextColor(white);
            END;
    brojac:=brojac+1;
    until pobednik OR (brojac=9);
    writeln;
    Write('Dali sakate da prodolzite so igrata [da/ne]:');
    readln(kraj);
    until (kraj='ne');
  
END.