Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program kolka;
- uses crt,dos;
- const n = 5;i = 3;zap = 1;
- var k : array [1..n,1..i] of byte;
- ktora,naKtora,ds,wygral,ostatnio,ilRuchy : byte;
- Hour,Min,Sec,HSec : word;
- globalCzas,aktualnyCzas : longint;
- przebieg,zacheta : string;
- startP : char;
- procedure numeracja;
- var d,licznik : byte;
- begin
- licznik:=0;d:=ds;
- REPEAT
- licznik:=licznik+1;
- gotoxy(ds+d,n+3);write(licznik);
- d:=d+20;
- UNTIL licznik=i;
- end;
- procedure krecha;
- var y,x,d,licznik : byte;
- begin d:=ds;licznik:=0;
- REPEAT
- for y:=1 to n+1 do begin
- gotoxy(10+d,y);write('|');
- end;
- for x:=1 to y+1 do begin
- gotoxy(10-x+d,y);write('x');gotoxy(10+x+d,y);write('x');
- end;
- d:=d+20;
- licznik:=licznik+1;
- UNTIL licznik = i;
- end;
- procedure wieze;
- var x,y,d,licznik : byte;
- begin d:=ds;licznik:=1;
- REPEAT
- for y:=1 to n do begin
- for x:=1 to k[y,licznik] do begin
- gotoxy(10-x+d,y);write('O');
- gotoxy(10+x+d,y);write('O');
- end;
- end;
- d:=d+20;
- licznik:=licznik+1;
- UNTIL licznik = i+1;
- end;
- procedure sciaganie;
- var a,b : byte;aktualnie,pom,pom1 : string;
- begin
- for a:=1 to n do begin
- if k[a,ktora]<>0 then break;
- end;
- for b:=n downto 1 do begin
- if b=n then begin
- if k[b,naKtora]=0 then begin
- k[b,naKtora]:=k[a,ktora];k[a,ktora]:=0;
- end;
- end;
- if (k[b,naKtora]>k[a,ktora])AND(b>1)AND(k[b-1,naKtora]=0) then begin
- k[b-1,naKtora]:=k[a,ktora];k[a,ktora]:=0;
- str(ktora,pom);str(naKtora,pom1);
- if ilRuchy>0 then aktualnie:=';'+pom+','+pom1 ELSE aktualnie:=pom+','+pom1;
- end;
- end;
- przebieg:=przebieg+aktualnie;
- end;
- procedure generujKolka;
- var x : byte;
- begin
- for x:=1 to n do begin
- k[x,zap]:=x;
- end;
- end;
- procedure Timer;
- var czas : longint;
- begin
- getTime(Hour,Min,Sec,HSec);
- if wygral = 1 then begin wygral:=0;globalCzas:=Hour*3600+min*60+sec;end;
- czas:=Hour*3600+min*60+sec;
- aktualnyCzas:=czas-globalCzas;
- end;
- function minimum : longint;
- var x : byte;wynik : longint;
- begin
- x:=0;wynik:=1;
- REPEAT
- wynik:=wynik*2;
- x:=x+1;
- UNTIL x=n;
- minimum:=wynik-1;
- end;
- procedure weryf;
- var x,y,d,jest : byte;werdykt : string;srSR,akC,IR : real;
- begin d:=ds;
- for x:=1 to i do begin
- jest:=0;
- for y:=1 to n do begin
- if k[y,x]<>0 then jest:=jest+1;
- end;
- if (jest=n)AND(x<>ostatnio) then begin
- wygral:=1;ostatnio:=x;textcolor(red);gotoxy(ds+d,n+2);write('Ok');textcolor(7);
- gotoxy(1,13);writeln('Zajelo ci to ',aktualnyCzas,' sekund. Wykonales ',ilRuchy,' ruchow.');
- if ilRuchy=minimum then werdykt:='udalo ci sie' ELSE werdykt:='nie udalo ci sie';
- writeln('Minimalna ilosc ruchow, jaka mogles wykonac wynosi ',minimum,' - ',werdykt,'.');
- IR:=ilRuchy;akC:=aktualnyCzas;srSR:=akC/IR;
- write('Srednie wykonianie jednego ruchu to ',srSR:aktualnyCzas div ilRuchy+1:2,' sek.');
- ilRuchy:=0;gotoxy(1,20);write('Przebieg: ',przebieg);przebieg:='';krecha;wieze;numeracja;readkey;clrscr;Timer;end;
- d:=d+20;
- end;
- end;
- begin clrscr;generujKolka;
- ds:=10;wygral:=1;ostatnio:=zap;ilRuchy:=0;
- krecha;wieze;numeracja;
- zacheta:='Nacisnij klawisz enter, aby zaczac';gotoxy(40-length(zacheta)div 2,15);textcolor(red);write(zacheta);textcolor(7);REPEAT startP:=readkey;UNTIL startP=#13;clrscr;
- REPEAT
- Timer;weryf;krecha;wieze;numeracja;gotoxy(1,20);write('Przebieg: ',przebieg);
- gotoxy(1,15);write('Z ktorej chcesz sciagnac?: ');REPEAT readln(ktora);UNTIL (0<=ktora)AND(ktora<=i);
- if ktora<>0 then begin gotoxy(1,16);write('Na ktora chcesz wlozyc?: ');
- REPEAT readln(naKtora);UNTIL (0<=naKtora)AND(naKtora<=i)AND(ktora<>naKtora);end;
- sciaganie;
- ilRuchy:=ilRuchy+1;
- clrscr;
- UNTIL (ktora=0)OR(naKtora=0);
- end.
Advertisement
Add Comment
Please, Sign In to add comment