PROGRAM STUPIDTENIS;
VAR I,J:INTEGER;
    OI,OJ:INTEGER;
    V,OV:INTEGER;
    A,B:INTEGER;
    FLAG:INTEGER;
    T,D:INTEGER;
    P1,P2:INTEGER;
    KEY,ch:CHAR;
    LEVEL,SCORE,GMOD:INTEGER;
    ZED:ARRAY[1..36] OF INTEGER;


FUNCTION DIRECT(I:INTEGER):INTEGER;
BEGIN
 DIRECT:=0;
 IF I>0 THEN DIRECT:=1;
 IF I<0 THEN DIRECT:=-1;
END;

PROCEDURE PAUSE(DELAY:INTEGER);
VAR H:INTEGER;
BEGIN
 FOR H:= 1 TO DELAY DO ;
END;

PROCEDURE KRESLI(I,J,C:INTEGER);
BEGIN 
 DRAW(I,J,I,J,C);
END;

PROCEDURE CIRCLE(I,J,C:INTEGER);
BEGIN
 DRAW(I-1,J-2,I+1,J-2,C);
 DRAW(I-1,J+2,I+1,J+2,C);
 DRAW(I-2,J-1,I-2,J+1,C);
 DRAW(I+2,J-1,I+2,J+1,C);
END;

PROCEDURE CIHLA(I,J,C:INTEGER);
BEGIN
 DRAW(I,J,I+19,J,C);
 DRAW(I,J+4,I+19,J+4,C);
 DRAW(I,J+1,I,J+3,C);
 DRAW(I+19,J+1,I+19,J+3,C);
END;

PROCEDURE VUZEK(I,C:INTEGER);
BEGIN 
  DRAW(I,55,I+20,55,C);
  DRAW(I,57,I+20,57,C);
  DRAW(I,56,I+20,56,C);
END;

procedure Acko(x,y,c:integer);
begin
 draw(x+1,y,x+5,y,c);
 draw(x+1,y+6,x+5,y+6,c);
 draw(x,y+1,x,y+11,c);
 draw(x+6,y+1,x+6,y+11,c);
end;

procedure Pecko(x,y,c:integer);
begin
 draw(x,y,x+5,y,c);
 draw(x+1,y+6,x+5,y+6,c);
 draw(x,y+1,x,y+11,c);
 draw(x+6,y+1,x+6,y+5,c);
end;

procedure Ucko(x,y,c:integer);
begin
 draw(x+1,y+11,x+5,y+11,c);
 draw(x,y,x,y+10,c);
 draw(x+6,y,x+6,y+10,c);
end;

procedure Zetko (x,y,c:integer);
begin
 draw(x,y,x+6,y,c);
 draw(x,y+11,x+6,y+11,c);
 draw(x,y+10,x+6,y+1,c);
end;

procedure Pauza(x,y,c:integer);
begin
 Pecko(x,y,c);
 Acko(x+9,y,c);
 Ucko(x+18,y,c);
 Zetko(x+27,y,c);
 Acko(x+36,y,c);
end;


BEGIN
 WRITELN;
 WRITELN('    Portfolio Arkanoid v0.918 beta');
 WRITELN('    ------------------------------');
 WRITELN('          <Q> <- ____ -> <P>');
 WRITELN('   <SPACE> ... Pauza  <X> ... Konec'); 
 WRITELN;
 WRITELN('          BaR design    1998');
 WRITELN;
 WRITE('   Zmackni <C> chces-li pokracovat');
 REPEAT UNTIL INKEY='c';
 I:=120;
 V:=110;
REPEAT
 WRITELN;
 WRITELN;
 WRITELN;
 WRITELN;
 WRITELN;
 WRITELN;
 WRITELN;
 WRITELN;
 GMOD:=0;
 WRITE('Vloz obtiznost (1-9):');
 KEY:= INKEY;
 CASE KEY OF
   '1': BEGIN LEVEL:=1; A:=1; B:=1; END;
   '2': BEGIN LEVEL:=2; A:=-2; B:=1; END;
   '3': BEGIN LEVEL:=3; A:=-2; B:=2; END;
   '4': BEGIN LEVEL:=4; A:=3; B:=2; END;
   '5': BEGIN LEVEL:=5; A:=-3; B:=3; END;
   '6': BEGIN LEVEL:=6; A:=4; B:=3; END;
   '7': BEGIN LEVEL:=7; A:=4; B:=4; END;
   '8': BEGIN LEVEL:=8; A:=-5; B:=4; END;
   '9': BEGIN LEVEL:=9; A:=5; B:=5; END;
   '0': BEGIN LEVEL:=10; A:=2; B:=2; GMOD:=1; END;
 END;
 SETMODE(4);
 J:=49;
 OI:=I;
 OJ:=J;
  V:=I-10;
 OV:=V;
 FLAG:=1;
 T:=0;
 SCORE:=0;
 IF (I MOD 2) = 0 THEN A:=-A; 
 DRAW(0,0,239,0,1);
 DRAW(0,0,0,52,1);
 DRAW(239,0,239,52,1);

 FOR P1:= 1 TO 36 DO ZED[P1]:=1;
 FOR P1:= 0 TO 11 DO
  FOR P2:= 1 TO 3 DO
   CIHLA(P1*20,P2*5+10,1);
 
 VUZEK(V,1);
 CIRCLE(I,J,1);
 PAUSE(20000);

 REPEAT
  V:=V+T;
  CIRCLE(I,J,1);
  CIRCLE(OI,OJ,0);
  CIRCLE(I,J,1);

  VUZEK(V,1);
  VUZEK(OV,0);
  OV:=V;
  VUZEK(V,1);

  OI:=I; 
  OJ:=J;
  IF I>233 THEN A:=-A;
  IF I<5 THEN A:=-A;
  IF J<5 THEN B:=-B;
  IF J>51 THEN
   IF I>V  THEN
    IF I<V+20 THEN BEGIN
     IF GMOD=1 THEN A:=A-DIRECT(V-I+10);
     B:=-B;
    END;
  IF J>56 THEN FLAG:=0;

  P1:=I/20; P2:=(J-2-10)/5;
  D:=(P2-1)*12+P1+1;
  IF D<37 THEN BEGIN
   IF D>0 THEN BEGIN
    IF ZED[D]=1 THEN BEGIN
     ZED[D]:=0;
     CIHLA(P1*20,P2*5+10,0);
     B:=-B;
     SCORE:=SCORE+1;
    END;
   END;
  END;

  P1:=(I-2)/20; P2:=(J-10)/5;
  D:=(P2-1)*12+P1+1;
  IF D<37 THEN BEGIN
   IF D>0 THEN BEGIN
    IF ZED[D]=1 THEN BEGIN
     ZED[D]:=0;
     CIHLA(P1*20,P2*5+10,0);
     A:=-A;
     SCORE:=SCORE+1;
    END;
   END;
  END;

  P1:=I/20; P2:=(J+2-10)/5;
  D:=(P2-1)*12+P1+1;
  IF D<37 THEN BEGIN
   IF D>0 THEN BEGIN
    IF ZED[D]=1 THEN BEGIN
     ZED[D]:=0;
     CIHLA(P1*20,P2*5+10,0);
     B:=-B;
     SCORE:=SCORE+1;
    END;
   END;
  END;

  P1:=(I+2)/20; P2:=(J-10)/5;
  D:=(P2-1)*12+P1+1;
  IF D<37 THEN BEGIN
   IF D>0 THEN BEGIN
    IF ZED[D]=1 THEN BEGIN
     ZED[D]:=0;
     CIHLA(P1*20,P2*5+10,0);
     A:=-A;
     SCORE:=SCORE+1;
    END;
   END;
  END;
 
  IF SCORE=36 THEN FLAG:=0; 
  I:=I+A;
  J:=J+B;
  IF KEYPRESSED THEN BEGIN
   KEY:=INKEY;
   IF KEY = CHR(27) THEN FLAG:=0
   ELSE
    if (KEY='x') or (KEY='p') or
       (KEY='q') or (KEY=' ') then
     CASE KEY OF
       'x': FLAG:=0;
       'p': T:=T+1;
       'q': T:=T-1;  
       ' ': begin
             Pauza(98,2,1); 
             repeat
             until keypressed;
             ch:=inkey;
             Pauza(98,2,0);
            end;
     END
    else ;
  END;
 UNTIL FLAG<>1;  
 SETMODE(7);
 IF SCORE < 36 THEN
  BEGIN
   WRITELN('Zrusil jsi jenom ',SCORE,' cihel.');
   WRITELN('Smula co? Priste to ale bude stejne!');
  END
 ELSE WRITELN('Nahoda! Priste uz to nedas.'); 
 WRITE('Tak co? Chces hrat znova? (A/N)');
UNTIL INKEY <>'a';
END.
