Recent

Author Topic: Can somebody help me with my program?  (Read 3595 times)

smiljo

  • Newbie
  • Posts: 2
Can somebody help me with my program?
« on: February 28, 2015, 06:56:31 pm »
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

  • Hero Member
  • *****
  • Posts: 1634
All posts based on: Win10 (Win64); Lazarus 2.0.10 'stable' (x64) unless specified otherwise...

Eugene Loza

  • Hero Member
  • *****
  • Posts: 674
    • My games in Pascal
Re: Can somebody help me with my program?
« Reply #2 on: February 28, 2015, 08:59:41 pm »
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.
My FOSS games in FreePascal&CastleGameEngine: https://decoherence.itch.io/ (Sources: https://gitlab.com/EugeneLoza)

smiljo

  • Newbie
  • Posts: 2
Re: Can somebody help me with my program?
« Reply #3 on: March 01, 2015, 06:19:49 pm »
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  :D

 

TinyPortal © 2005-2018