asmodeus94

wieze

Apr 16th, 2012
185
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 3.57 KB | None | 0 0
  1. program kolka;
  2. uses crt,dos;
  3. const n = 5;i = 3;zap = 1;
  4. var k : array [1..n,1..i] of byte;
  5. ktora,naKtora,ds,wygral,ostatnio,ilRuchy : byte;
  6. Hour,Min,Sec,HSec : word;
  7. globalCzas,aktualnyCzas : longint;
  8. przebieg,zacheta : string;
  9. startP : char;
  10. procedure numeracja;
  11. var d,licznik : byte;
  12. begin
  13. licznik:=0;d:=ds;
  14. REPEAT
  15. licznik:=licznik+1;
  16. gotoxy(ds+d,n+3);write(licznik);
  17. d:=d+20;
  18. UNTIL licznik=i;
  19. end;
  20. procedure krecha;
  21. var y,x,d,licznik : byte;
  22. begin d:=ds;licznik:=0;
  23. REPEAT
  24. for y:=1 to n+1 do begin
  25. gotoxy(10+d,y);write('|');
  26. end;
  27. for x:=1 to y+1 do begin
  28.     gotoxy(10-x+d,y);write('x');gotoxy(10+x+d,y);write('x');
  29. end;
  30. d:=d+20;
  31. licznik:=licznik+1;
  32. UNTIL licznik = i;
  33. end;
  34. procedure wieze;
  35. var x,y,d,licznik : byte;
  36. begin d:=ds;licznik:=1;
  37. REPEAT
  38. for y:=1 to n do begin
  39.     for x:=1 to k[y,licznik] do begin
  40.          gotoxy(10-x+d,y);write('O');
  41.          gotoxy(10+x+d,y);write('O');
  42.     end;
  43. end;
  44. d:=d+20;
  45. licznik:=licznik+1;
  46. UNTIL licznik = i+1;
  47. end;
  48. procedure sciaganie;
  49. var a,b : byte;aktualnie,pom,pom1 : string;
  50. begin
  51. for a:=1 to n do begin
  52.            if k[a,ktora]<>0 then break;
  53.        end;
  54. for b:=n downto 1 do begin
  55.     if b=n then begin
  56.        if k[b,naKtora]=0 then begin
  57.           k[b,naKtora]:=k[a,ktora];k[a,ktora]:=0;
  58.        end;
  59.     end;
  60.     if (k[b,naKtora]>k[a,ktora])AND(b>1)AND(k[b-1,naKtora]=0) then begin
  61.        k[b-1,naKtora]:=k[a,ktora];k[a,ktora]:=0;
  62.        str(ktora,pom);str(naKtora,pom1);
  63.        if ilRuchy>0 then aktualnie:=';'+pom+','+pom1 ELSE aktualnie:=pom+','+pom1;
  64.     end;
  65. end;
  66. przebieg:=przebieg+aktualnie;
  67. end;
  68. procedure generujKolka;
  69. var x : byte;
  70. begin
  71. for x:=1 to n do begin
  72.     k[x,zap]:=x;
  73. end;
  74. end;
  75. procedure Timer;
  76. var czas : longint;
  77. begin
  78. getTime(Hour,Min,Sec,HSec);
  79. if wygral = 1 then begin wygral:=0;globalCzas:=Hour*3600+min*60+sec;end;
  80. czas:=Hour*3600+min*60+sec;
  81. aktualnyCzas:=czas-globalCzas;
  82. end;
  83. function minimum : longint;
  84. var x : byte;wynik : longint;
  85. begin
  86. x:=0;wynik:=1;
  87. REPEAT
  88. wynik:=wynik*2;
  89. x:=x+1;
  90. UNTIL x=n;
  91. minimum:=wynik-1;
  92. end;
  93. procedure weryf;
  94. var x,y,d,jest : byte;werdykt : string;srSR,akC,IR : real;
  95. begin d:=ds;
  96. for x:=1 to i do begin
  97. jest:=0;
  98.     for y:=1 to n do begin
  99.         if k[y,x]<>0 then jest:=jest+1;
  100.     end;
  101. if (jest=n)AND(x<>ostatnio) then begin
  102. wygral:=1;ostatnio:=x;textcolor(red);gotoxy(ds+d,n+2);write('Ok');textcolor(7);
  103. gotoxy(1,13);writeln('Zajelo ci to ',aktualnyCzas,' sekund. Wykonales ',ilRuchy,' ruchow.');
  104. if ilRuchy=minimum then werdykt:='udalo ci sie' ELSE werdykt:='nie udalo ci sie';
  105.  writeln('Minimalna ilosc ruchow, jaka mogles wykonac wynosi ',minimum,' - ',werdykt,'.');
  106.  IR:=ilRuchy;akC:=aktualnyCzas;srSR:=akC/IR;
  107.  write('Srednie wykonianie jednego ruchu to ',srSR:aktualnyCzas div ilRuchy+1:2,' sek.');
  108. ilRuchy:=0;gotoxy(1,20);write('Przebieg: ',przebieg);przebieg:='';krecha;wieze;numeracja;readkey;clrscr;Timer;end;
  109. d:=d+20;
  110. end;
  111. end;
  112. begin clrscr;generujKolka;
  113. ds:=10;wygral:=1;ostatnio:=zap;ilRuchy:=0;
  114. krecha;wieze;numeracja;
  115. 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;
  116. REPEAT
  117. Timer;weryf;krecha;wieze;numeracja;gotoxy(1,20);write('Przebieg: ',przebieg);
  118. gotoxy(1,15);write('Z ktorej chcesz sciagnac?: ');REPEAT readln(ktora);UNTIL (0<=ktora)AND(ktora<=i);
  119. if ktora<>0 then begin gotoxy(1,16);write('Na ktora chcesz wlozyc?: ');
  120. REPEAT readln(naKtora);UNTIL (0<=naKtora)AND(naKtora<=i)AND(ktora<>naKtora);end;
  121. sciaganie;
  122. ilRuchy:=ilRuchy+1;
  123. clrscr;
  124. UNTIL (ktora=0)OR(naKtora=0);
  125. end.
Advertisement
Add Comment
Please, Sign In to add comment