Can somebody help me with my program? lazarus / 64-FPC development ---------------------------------------------------------------------- smiljo · 2015-02-28 17:56 Can somebody help me with my code,i made it but something is not like i want,when start the program and the it is everything good,but when it ask me if i want to continue with the program and i sad yes(da),then after the first input of element it say who is the winner,for to have winner there must 3 elements depending where are inserted.. Code: [Select]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. ---------------------------------------------------------------------- eny · 2015-02-28 19:56 http://forum.codecall.net/topic/76296-a-short-tic-tac-toe- implementation-in-pascaldelphi/ ---------------------------------------------------------------------- Eugene Loza · 2015-02-28 19:59 Reset pozicija variable to its default before a new game. At this point you still have 'pozicija' from the previous game (i.e. a winning combination for one of the players). You may get a weird behavior if you do not reset the variables. Moreover, you should have got a compiler 'warning' about it. P.S. The code is very non-optimal and hard-to-read, which is often a source of errors and bugs. Try the example from the message above. ---------------------------------------------------------------------- smiljo · 2015-03-01 17:19 That was the problem,thank you very much,as for the code i have 17 years and now i starting with programming,i hope i will be good programmer in the future