asmodeus94

losowatorB

Jan 11th, 2013
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 24.19 KB | None | 0 0
  1. program los;
  2. uses crt,dos;
  3. type
  4. rekordziki = record
  5. nazwa : string;
  6. zKim : char;
  7. end;
  8. type
  9. rekordziki2 = record
  10. nazwa : string;
  11. grupa : char;
  12. ileGra : byte;
  13. end;
  14. type
  15. graczeZmag = record
  16. nick : string;
  17. grupa : char;
  18. punkty : byte;
  19. end;
  20. type
  21. meczePo = record
  22. nick1,nick2 : string;
  23. wygral : byte;
  24. end;
  25. const dl=10;abcW='ABCDEFGHIJKLMNOPRSTUVWXYZabcedfghijklmnoprstuvwxyz*';
  26. var
  27. t,tZ,tMZ : text;
  28. wynG{do wynikow graczy},mWyn{do wynikow meczy} : text; {wyniki graczy; potrzebne do uzycia dwoch procedur (wypisnie, zrobienie odstepu)}
  29. linia,abc: string;
  30. wyborLicz : byte; {menu wartosc}
  31. ilUcz,losG,i,jestP,ileMaByc,bylo,jest,ileJest,grOst,skNa,c,x1,x2,podU : byte;
  32. dlZ1,modOdst : byte; {robienie odstepu w pliku wynikiGraczy.txt}
  33. ilRozM : byte; {dla wynikiMecze.txt - odstep}
  34. gr : char;
  35. gracz : array [1..100] of rekordziki;
  36. graczG : array [1..100] of rekordziki2;
  37. graczeZ : array [1..100] of graczeZmag; {nick,grupa;}
  38. mecze : array [1..150] of meczePo; {nick1,nick2;ktoWygral;}
  39. menuT : array [1..dl] of string;
  40. { Spr. ilosc graczy}
  41. procedure sprIlGr;
  42. begin
  43. assign(t,'gracze.txt');
  44. reset(t);
  45. ilUcz:=0;
  46. REPEAT
  47. readln(t,linia);
  48. if linia<>'' then begin ilUcz:=ilUcz+1;gracz[ilUcz].nazwa:=linia;end;
  49. UNTIL eof(t);
  50. close(t);
  51. end;
  52. { / }
  53. procedure sprF;
  54. begin
  55. if fSearch('config','')='' then MkDir('config');
  56. end;
  57. {losowator grup i meczy}
  58. procedure losowator;
  59. begin
  60. assign(t,'gracze.txt');
  61. reset(t);
  62. ilUcz:=0;
  63. REPEAT
  64. readln(t,linia);
  65. if linia<>'' then begin ilUcz:=ilUcz+1;gracz[ilUcz].nazwa:=linia;end;
  66. UNTIL eof(t);
  67. close(t);
  68. write('Ile osob maja miec grupy? Wpisz: ');readln(ileMaByc);
  69. if ilUcz<ileMaByc then begin
  70.    write('Liczba graczy nie pozwala na stworzenie ani jednej druzyny!');delay(2000);halt;
  71. end;
  72. for i:=1 to ilUcz do begin abc[i]:=abcW[i];gracz[i].zKim:='!';end;
  73. randomize;
  74. jestP:=0;i:=1;
  75. assign(t,'grupyIMecze.txt');
  76. rewrite(t);
  77. jestP:=0;
  78. ileJest:=0;
  79. sprF;
  80. assign(tZ,'config\graczeZ.txt');
  81. rewrite(tZ);
  82. REPEAT
  83. bylo:=0;jestP:=jestP+1;
  84. gr:=abc[jestP];
  85. if jestP>1 then writeln(t,'###################');
  86. if ileMaByc=ilUcz then gr:='*' ELSE writeln(t,'GRUPA ',gr);
  87.    REPEAT
  88.    jest:=0;
  89.          REPEAT
  90.                losG:=random(ilUcz)+1;
  91.                if gracz[losG].zKim='!' then begin
  92.                   gracz[losG].zKim:=gr;jest:=1;bylo:=bylo+1;ileJest:=ileJest+1;
  93.                   graczG[ileJest].nazwa:=gracz[losG].nazwa;
  94.                   graczG[ileJest].grupa:=gracz[losG].zKim;
  95.                   writeln(t,graczG[ileJest].nazwa);
  96.                   writeln(tZ,graczG[ileJest].nazwa);writeln(tZ,graczG[ileJest].grupa);writeln(tZ,'0');
  97.                end;
  98.          UNTIL jest=1;
  99.    UNTIL bylo=ileMaByc;
  100. UNTIL jestP = ilUcz div ileMaByc;
  101. grOst:=0;
  102. if ilUcz mod ileMaByc <>0 then begin
  103. writeln(t,'###################');
  104. writeln(t,'GRUPA ',abc[(ilUcz div ileMaByc)+1]);
  105.    for i:=1 to ilUcz do begin
  106.        if gracz[i].zKim='!' then begin
  107.           ileJest:=ileJest+1;grOst:=grOst+1;skNa:=ileJest-grOst+1;graczG[ileJest].nazwa:=gracz[i].nazwa;graczG[ileJest].grupa:=abcW[jestP+1];
  108.           writeln(t,graczG[ileJest].nazwa);
  109.           writeln(tZ,graczG[ileJest].nazwa);writeln(tZ,graczG[ileJest].grupa);writeln(tZ,'0');
  110.        end;
  111.    end;
  112. end;
  113. close(t);
  114. close(tZ);
  115. i:=0;
  116. append(t);
  117. writeln(t,'@@@@@@@@@@@@@@@@@@');
  118. writeln(t,'Losowania meczy:');
  119. close(t);
  120. sprF;
  121. assign(tMZ,'config\mecze.txt');
  122. rewrite(tMZ);
  123. close(tMZ);
  124. REPEAT
  125. append(t);
  126. if i>0 then writeln(t,'###################');
  127. if ileMaByc=ilUcz then gr:='*' ELSE writeln(t,'GRUPA ',abc[i+1]);
  128. close(t);
  129.       for x1:=1+i*ileMabyc to ileMaByc*i+ileMaByc do begin
  130.           for x2:=1+i*ileMabyc to ileMaByc*i+ileMaByc do begin
  131.               if (x1<>x2)AND(graczG[x1].ileGra<ileMaByc-1)AND(graczG[x2].ileGra<ileMaByc-1) then begin
  132.                  graczG[x1].ileGra:=graczG[x1].ileGra+1;
  133.                  graczG[x2].ileGra:=graczG[x2].ileGra+1;
  134.                  append(t);
  135.                  writeln(t,graczG[x1].nazwa,' VS ',graczG[x2].nazwa);
  136.                  close(t);
  137.                  append(tMZ);
  138.                  writeln(tMZ,graczG[x1].nazwa);writeln(tMZ,graczG[x2].nazwa);writeln(tMZ,'0');
  139.                  close(tMZ);
  140.               end;
  141.           end;
  142.       end;
  143. i:=i+1;
  144. UNTIL i = ilUcz div ileMaByc;
  145. if ilUcz mod ileMaByc <>0 then begin
  146. append(t);
  147. writeln(t,'###################');
  148. writeln(t,'GRUPA ',abc[i+1]);
  149. close(t);
  150.       for x1:=skNa to skNa+grOst do begin
  151.           for x2:=skNa to skNa+grOst do begin
  152.               if (x1<>x2)AND(graczG[x1].ileGra<grOst-1)AND(graczG[x2].ileGra<grOst-1) then begin
  153.                  graczG[x1].ileGra:=graczG[x1].ileGra+1;
  154.                  graczG[x2].ileGra:=graczG[x2].ileGra+1;
  155.                  append(t);
  156.                  writeln(t,graczG[x1].nazwa,' VS ',graczG[x2].nazwa);
  157.                  close(t);
  158.                  append(tMZ);
  159.                  writeln(tMZ,graczG[x1].nazwa);writeln(tMZ,graczG[x2].nazwa);writeln(tMZ,'0');
  160.                  close(tMZ);
  161.               end;
  162.           end;
  163.       end;
  164. end;
  165. end;
  166. { / }
  167. procedure wyswietlGr;
  168. const ile=10;
  169. var licz,modB,bylL : byte;
  170. begin
  171. licz:=0;modB:=0;bylL:=0;
  172. for c:=1 to ilUcz do begin
  173.     if gracz[c].nazwa<>'' then begin
  174.     licz:=licz+1;
  175.        if licz=ile+1 then begin
  176.           licz:=1;modB:=modB+20;
  177.        end;
  178.        if licz=ile then bylL:=1;
  179.     gotoxy(1+modB,licz);write(c,'. ',gracz[c].nazwa);
  180.     end ELSE break;
  181. end;
  182. textcolor(red);
  183. if bylL=0 then gotoxy(1,licz+1) ELSE gotoxy(1,ile+1);
  184. write('Licznik: ',c);textcolor(7);
  185. end;
  186. procedure przesun(d : byte);
  187. begin
  188. for c:=d to ilUcz do begin
  189.     gracz[c]:=gracz[c+1];
  190. end;
  191. end;
  192. procedure wywalGr(id : byte);
  193. var usu : byte;
  194. begin usu:=0;
  195. for c:=1 to ilUcz do begin
  196.     if c=id then begin
  197.        gracz[ilUcz+1].nazwa:='';gracz[ilUcz+1].zKim:='!';przesun(c);usu:=1;ilUcz:=ilUcz+1;
  198.     end;
  199. end;
  200. if usu=1 then begin
  201.    assign(t,'gracze.txt');rewrite(t);
  202.    for c:=1 to ilUcz+1 do begin
  203.        writeln(t,gracz[c].nazwa);
  204.    end;
  205. close(t);
  206. end;
  207. end;
  208. procedure dodajGr;
  209. var nickPod : string;
  210. begin
  211. write('Podaj nick uczestnika: ');readln(nickPod);
  212. gracz[ilUcz+1].nazwa:=nickPod;gracz[ilUcz+1].zKim:='!';
  213. append(t);
  214. writeln(t,gracz[ilUcz+1].nazwa);
  215. close(t);
  216. end;
  217. procedure skopGW(para : byte);
  218. var sW : text;
  219. begin
  220. c:=0;
  221. if fSearch('config\graczeZ.txt','')<>'' then begin
  222. sprF;
  223. assign(sW,'config\graczeZ.txt');
  224. case para of
  225. 1: begin
  226. reset(sW);
  227.    REPEAT
  228.    c:=c+1;
  229.    readln(sW,graczeZ[c].nick);
  230.    readln(sW,graczeZ[c].grupa);
  231.    readln(sW,graczeZ[c].punkty);
  232.    UNTIL eof(sW);
  233.    end;
  234. 2: begin
  235. rewrite(sW);
  236. c:=1;
  237.    while(graczeZ[c].nick<>'') do begin
  238.    writeln(sW,graczeZ[c].nick);
  239.    writeln(sW,graczeZ[c].grupa);
  240.    writeln(sW,graczeZ[c].punkty);
  241.    c:=c+1;
  242.    end;
  243.    end;
  244. end;
  245. close(sW);
  246. end;
  247. end;
  248. procedure skopMW(para : byte);
  249. var sW : text;
  250. begin
  251. c:=0;
  252. if fSearch('config\mecze.txt','')<>'' then begin
  253. sprF;
  254. assign(sW,'config\mecze.txt');
  255. case para of
  256. 1: begin
  257. reset(sW);
  258.    REPEAT
  259.    c:=c+1;
  260.    readln(sW,mecze[c].nick1);
  261.    readln(sW,mecze[c].nick2);
  262.    readln(sW,mecze[c].wygral);
  263.    UNTIL eof(sW);
  264.    ilRozM:=c;
  265.    end;
  266. 2: begin
  267. rewrite(sW);
  268. c:=1;
  269.    while(mecze[c].nick1<>'') do begin
  270.    writeln(sW,mecze[c].nick1);
  271.    writeln(sW,mecze[c].nick2);
  272.    writeln(sW,mecze[c].wygral);
  273.    c:=c+1;
  274.    end;
  275. end;
  276. end;
  277. close(sW);
  278. end;
  279. end;
  280. procedure odstepZrob(ktorOpc,jakaDl : byte);
  281. var z : byte;
  282. begin
  283. dlZ1:=0;
  284. case ktorOpc of
  285. 1: begin
  286.    for z:=1 to 25-jakaDl-modOdst do begin
  287.        write(wynG,' ');dlZ1:=dlZ1+1;
  288.    end;
  289. end;
  290. 2: begin
  291.    for z:=1 to (24-5-dlZ1-10-6) div 2 do begin
  292.        write(wynG,' ');
  293.    end;
  294. end;
  295. 3: begin
  296.    for z:=1 to 40-jakaDl do begin
  297.        write(mWyn,' ');
  298.    end;
  299. end;
  300. end;
  301. end;
  302. function policzIleM(wJednejGrupie:real):real; {funkcja liczaca ilosc meczy na grupe}
  303. begin
  304. policzIleM:=(wJednejGrupie/2)*(wJednejGrupie-1);
  305. end;
  306. procedure meczPoDo;
  307. const ile=60;
  308. var licz,modB,kM,jW,mGran,jestMIle,grany,roze,ileWGr,akOsWGr,nrGr,mod100 : byte;
  309. wygTM,bC : string;
  310. odGrupy : char;
  311. begin
  312. skopGW(1);
  313. ileWGr:=0;
  314. for c:=1 to ilUcz do begin
  315.     if graczeZ[c].grupa='A' then ileWGr:=ileWGr+1 ELSE break;
  316. end;
  317. skopMW(1);
  318. c:=1;licz:=0;modB:=0;modOdst:=0;mGran:=0;jestMIle:=0;grany:=0;roze:=0;akOsWGr:=0;nrGr:=1;
  319. assign(mWyn,'wynikiMecze.txt');rewrite(mWyn);
  320. while(mecze[c].nick1<>'') do begin
  321. grany:=grany+1;
  322.     licz:=licz+1;
  323.     gotoxy(1+modB,licz);
  324.        if licz=ile then begin
  325.           licz:=0;modB:=modB+35;jestMIle:=1;
  326.        end;
  327.        if mecze[c].wygral<>0 then begin
  328.            if mecze[c].wygral=1 then begin roze:=roze+1;
  329.               textcolor(lightgreen);write(c,'. ',mecze[c].nick1);textcolor(7);write(' VS ');textcolor(red);write(mecze[c].nick2);
  330.               wygTM:=mecze[c].nick1;
  331.            end;
  332.            if mecze[c].wygral=2 then begin roze:=roze+1;
  333.               textcolor(red);write(c,'. ',mecze[c].nick1);textcolor(7);write(' VS ');textcolor(lightgreen);write(mecze[c].nick2);
  334.               wygTM:=mecze[c].nick2;
  335.            end;
  336.       end ELSE begin
  337.     write(c,'. ',mecze[c].nick1);write(' VS ',mecze[c].nick2);
  338.     end;
  339.     textcolor(7);
  340.     if graczeZ[1].grupa='*' then odGrupy:='*' ELSE odGrupy:=abcW[nrGr];
  341. write(' (',odGrupy,')');
  342. bc:=mecze[c].nick1+' VS '+mecze[c].nick2;
  343. write(mWyn,c,'. ',mecze[c].nick1,' VS ',mecze[c].nick2);
  344.    if c div 10 > 0 then modOdst:=1;
  345.    if (ilRozM div 100>0)AND(c<100) then mod100:=1 ELSE mod100:=0;
  346.    if mecze[c].wygral<>0 then begin
  347.    mGran:=mGran+1;
  348.       odstepZrob(3,length(bc)+2+modOdst-mod100);write(mWyn,'(',odGrupy,') ');writeln(mWyn,'--------------------------- ',wygTM);
  349.    end ELSE begin odstepZrob(3,length(bc)+2+modOdst-mod100);writeln(mWyn,'(',odGrupy,') ');end;
  350. c:=c+1;
  351.     akOsWGr:=akOsWGr+1;
  352.     if akOsWGR=policzIleM(ileWGr) then begin nrGr:=nrGr+1;akOsWGr:=0;end;
  353. end;
  354. writeln(mWyn,'Rozegranych bitew: ',roze,'/',grany);
  355. close(mWyn);
  356. if jestMIle=1 then gotoxy(1,ile+1) ELSE gotoxy(1,licz+1);textbackground(white);textcolor(lightblue);writeln('Meczy rozegranych: ',mGran);textcolor(7);textbackground(0);
  357. write('Mecz nr (0 - wyjscie): ');readln(kM);
  358. if kM<>0 then begin write('Wygral: ');readln(jW);
  359. mecze[kM].wygral:=jW;skopMW(2);clrscr;meczPoDo
  360. end;
  361. end;
  362. procedure zliczPunkty;
  363. var c1 : byte;nickWyg : string;
  364. begin
  365. c:=1;
  366. while(graczeZ[c].nick<>'')do begin graczeZ[c].punkty:=0;c:=c+1; end;
  367. c:=1;
  368. while(mecze[c].nick1<>'') do begin
  369.    if mecze[c].wygral<>0 then begin
  370.       if mecze[c].wygral=1 then nickWyg:=mecze[c].nick1;
  371.       if mecze[c].wygral=2 then nickWyg:=mecze[c].nick2;
  372.       c1:=1;
  373.       while(graczeZ[c1].nick<>'')do begin
  374.          if graczeZ[c1].nick=nickWyg then begin
  375.             graczeZ[c1].punkty:=graczeZ[c1].punkty+1;
  376.          end;
  377.       c1:=c1+1;
  378.       end;
  379.    end;
  380. c:=c+1;
  381. end;
  382. end;
  383. procedure punktyGraczy;
  384. type
  385. wyszliR = record
  386. nick : string;
  387. idGr : byte;
  388. wD,grupa : char;
  389. end;
  390. label powrot;
  391. var c1,dlN,wyborGr,licznik,bylD,jakisJest,zazn,wyszCzyD,dogrJ,zaznD,lit,wKtorM,ileBylo : byte;
  392. wyszli : array [1..100] of wyszliR;
  393. sch : graczeZmag;
  394. wyborZn,znakGr,litJ: char;
  395. pNick,wer,prob : string;
  396. wyszZ,wyszD,dogr : text;
  397. begin randomize;
  398. skopMW(1);skopGW(1);
  399. zliczPunkty;
  400. skopGW(2);licznik:=0;
  401. if fSearch('config\wyszD.txt','')<>'' then begin
  402. sprF;
  403. assign(wyszD,'config\wyszD.txt');
  404. reset(wyszD);
  405. readln(wyszD,prob);
  406. if prob<>'' then begin
  407. reset(wyszD);
  408.    REPEAT
  409.    licznik:=licznik+1;
  410.          readln(wyszD,wyszli[licznik].nick);
  411.          readln(wyszD,wyszli[licznik].idGr);
  412.          readln(wyszD,wyszli[licznik].wD);
  413.          readln(wyszD,wyszli[licznik].grupa);
  414.    UNTIL eof(wyszD);
  415. end;
  416. close(wyszD);
  417. end;
  418. if graczeZ[1].nick<>'' then begin {sortowanie}
  419.  if graczeZ[1].grupa='*' then begin
  420.        for c:=1 to ilUcz-1 do begin
  421.            for c1:=1 to ilUcz-1 do begin
  422.                if graczeZ[c1].punkty<graczeZ[c1+1].punkty then begin
  423.                   sch:=graczeZ[c1];graczeZ[c1]:=graczeZ[c1+1];graczeZ[c1+1]:=sch;
  424.            end;
  425.        end;
  426.    end;
  427.  
  428.  end ELSE begin {sortowanie jak sa grupy}wKtorM:=0;lit:=1;
  429.                 REPEAT
  430.                       ileBylo:=0;
  431.                       litJ:=abcW[lit];
  432.                       for c:=1+wKtorM to ilUcz do begin
  433.                           if graczeZ[c].grupa=litJ then begin ileBylo:=ileBylo+1;wKtorM:=wKtorM+1;end ELSE break;
  434.                       end;
  435.                       for c:=1 to ileBylo-1 do begin
  436.                           for c1:=wKtorM-ileBylo+1 to wKtorM-ileBylo+ileBylo-1 do begin
  437.                              if graczeZ[c1].punkty<graczeZ[c1+1].punkty then begin
  438.                                 sch:=graczeZ[c1];graczeZ[c1]:=graczeZ[c1+1];graczeZ[c1+1]:=sch;
  439.                              end;
  440.                           end;
  441.                       end;
  442.                       lit:=lit+1;
  443.                 UNTIL lit=50;
  444.           end;
  445.  for c:=1 to ilUcz do begin
  446.         for c1:=1 to ilUcz do begin
  447.             if graczeZ[c].nick=wyszli[c1].nick then begin
  448.            wyszli[c1].idGr:=c;
  449.            end;
  450.         end;
  451.    end;
  452. end;
  453. wyborGr:=1;zaznD:=0;
  454. powrot:
  455. bylD:=0;zazn:=0;
  456. for c:=1 to ilUcz do begin
  457.     if graczeZ[c].nick<>'' then begin
  458.     if graczeZ[c].punkty=0 then textcolor(red);
  459.     if wyszli[c].wD='w' then zazn:=zazn+1;
  460.     gotoxy(1,c);
  461.        for c1:=1 to ilUcz do begin
  462.            if wyszli[c1].idGr=c then begin
  463.               if wyszli[c1].wD='w' then textcolor(green);
  464.               if wyszli[c1].wD='d' then textcolor(3);
  465.            break;end;
  466.        end;
  467.     if c=wyborGr then textcolor(yellow);
  468.     write(c,'. ',graczeZ[c].nick,': ');if graczeZ[c].punkty div 10>0 then gotoxy(21,c) ELSE gotoxy(22,c);write(graczeZ[c].punkty);gotoxy(24,c);write('-------------------------- ',graczeZ[c].grupa);
  469.     pNick:=graczeZ[c].nick;
  470.     textcolor(7);
  471.     end ELSE break;
  472. end;
  473. REPEAT
  474. wyborZn:=readkey;
  475. UNTIL (wyborZn='w')OR(wyborZn='W')OR(wyborZn='s')OR(wyborZn='S')OR(wyborZn=#13)OR(wyborZn='z')OR(wyborZn='Z');
  476. case wyborZn of
  477. 'w','W':begin wyborGr:=wyborGr-1; end;
  478. 's','S':begin wyborGr:=wyborGr+1; end;
  479. #13: begin
  480. for c:=1 to licznik do begin
  481.     if wyborGr=wyszli[c].idGr then begin
  482.        if wyszli[c].wD='w' then zazn:=zazn-1;
  483.        if wyszli[c].wD='d' then zaznD:=zaznD-1;
  484.        wyszli[c].nick:='';wyszli[c].idGr:=0;wyszli[c].wD:='!';wyszli[licznik].grupa:='!';bylD:=1;
  485.     end;
  486. end;
  487. if bylD=0 then begin
  488. REPEAT
  489. gotoxy(54,wyborGr);textbackground(blue);write('w - wyszedl; d - dogrywka');textbackground(0);
  490. wyborZn:=readkey;
  491. UNTIL (wyborZn='w')OR(wyborZn='W')OR(wyborZn='d')OR(wyborZn='D');
  492. if (wyborZn='w')OR(wyborZn='W') then wyszCzyD:=1;
  493. if (wyborZn='d')OR(wyborZn='D') then wyszCzyD:=2;
  494. if wyszCzyD=1 then begin zazn:=zazn+1;licznik:=licznik+1;wyszli[licznik].nick:=graczeZ[wyborGr].nick;wyszli[licznik].idGr:=wyborGr;wyszli[licznik].wD:='w';wyszli[licznik].grupa:=graczeZ[wyborGr].grupa;end;
  495. if wyszCzyD=2 then begin zaznD:=zaznD+1;licznik:=licznik+1;wyszli[licznik].nick:=graczeZ[wyborGr].nick;wyszli[licznik].idGr:=wyborGr;wyszli[licznik].wD:='d';wyszli[licznik].grupa:=graczeZ[wyborGr].grupa;end;
  496. {if zazn<ilUcz div 2 then begin zazn:=zazn+1;licznik:=licznik+1;wyszli[licznik].nick:=graczeZ[wyborGr].nick;wyszli[licznik].idGr:=wyborGr;wyszli[licznik].wD:='w';end;end ELSE zazn:=zazn-1;
  497. end ELSE begin licznik:=licznik+1;wyszli[licznik].nick:=graczeZ[wyborGr].nick;wyszli[licznik].idGr:=wyborGr;wyszli[licznik].wD:='d';end;}
  498. end; end;
  499. end;
  500. if (wyborZn<>'z')AND(wyborZn<>'Z') then begin
  501.   if wyborGr=0 then wyborGr:=ilUcz;
  502.   if wyborGr=ilUcz+1 then wyborGr:=1;
  503.   for c:=1 to ilUcz do begin
  504.       gotoxy(54,c);write('                           ');
  505.   end;
  506.   gotoxy(54,wyborGr);textbackground(blue);write('Zaznaczono: ',zazn);textbackground(0);
  507.   goto powrot;
  508. end ELSE begin jakisJest:=0;
  509.               for c:=1 to ilUcz do begin
  510.                  if wyszli[c].wD='w' then begin jakisJest:=1;break;end;
  511.               end;
  512.               if jakisJest=1 then begin
  513.                  assign(wyszZ,'wyszli.txt');
  514.                  rewrite(wyszZ);
  515.                  for c:=1 to ilUcz do begin
  516.                      if (wyszli[c].nick<>'')AND(wyszli[c].wD='w') then writeln(wyszZ,wyszli[c].nick);
  517.                  end;
  518.                  close(wyszZ);
  519.               end;
  520.          end;
  521. modOdst:=0;
  522. assign(wynG,'wynikiGraczy.txt');
  523. rewrite(wynG);
  524. for c:=1 to ilUcz do begin
  525.     if graczeZ[c].nick<>'' then begin
  526.        for c1:=1 to ilUcz do begin
  527.            if wyszli[c1].idGr=c then begin
  528.               if wyszli[c1].wD='w' then wer:='WYSZEDL' ELSE wer:='DOGRYWKA';
  529.            break;end ELSE wer:='';
  530.        end;
  531.     pNick:=graczeZ[c].nick;
  532.     dlN:=length(pNick);
  533.     if c div 10>0 then modOdst:=1;
  534.     for c1:=1 to ilUcz do begin
  535.            if wyszli[c1].idGr=c then begin
  536.               if wyszli[c1].wD='w' then wer:='WYSZEDL' ELSE wer:='DOGRYWKA';
  537.            break;end ELSE wer:='';
  538.     end;
  539.     end ELSE break;
  540. write(wynG,c,'. ',graczeZ[c].nick,': ');if graczeZ[c].punkty div 10>0 then odstepZrob(1,dlN+1) ELSE odstepZrob(1,dlN);write(wynG,graczeZ[c].punkty);odstepZrob(2,dlZ1);writeln(wynG,'-------------------------- ',graczeZ[c].grupa,' ',wer);
  541. end;
  542. close(wynG);
  543. if (zazn>0)OR(zaznD>0) then begin
  544. sprF;
  545. assign(wyszD,'config\wyszD.txt');
  546. rewrite(wyszD);
  547. for c:=1 to ilUcz do begin
  548.     if wyszli[c].nick<>'' then begin
  549.        writeln(wyszD,wyszli[c].nick);
  550.        writeln(wyszD,wyszli[c].idGr);
  551.        writeln(wyszD,wyszli[c].wD);
  552.        writeln(wyszD,wyszli[c].grupa);
  553.     end;
  554. end;
  555. close(wyszD);
  556. end;
  557. dogrJ:=0;
  558. for c:=1 to ilUcz do begin
  559.     if wyszli[c].wD='d' then begin dogrJ:=1;break;end;
  560. end;
  561. if dogrJ=1 then begin
  562. sprF;
  563. assign(dogr,'config\dogrGr.txt');rewrite(dogr);close(dogr);
  564.    c1:=0;
  565.    REPEAT
  566.    c1:=c1+1;
  567.          znakGr:=abcW[c1];
  568.          for c:=1 to ilUcz do begin
  569.              if (wyszli[c].grupa=znakGr)AND(wyszli[c].wD='d') then begin
  570.                 append(dogr);
  571.                 writeln(dogr,wyszli[c].nick);
  572.                 writeln(dogr,wyszli[c].grupa);
  573.                 close(dogr);
  574.              end;
  575.          end;
  576.    UNTIL c1=51;
  577. end;
  578. end;
  579. procedure sprMGr;
  580. var
  581. gral,nGral,idGr,nrM,wyg : byte;
  582. nickGrM : string;
  583. label graczM,wyborGr;
  584. begin
  585. if (fSearch('config\graczeZ.txt','')<>'')AND(fSearch('config\mecze.txt','')<>'') then begin
  586. skopGW(1);skopMW(1);
  587. wyborGr:clrscr;writeln('Podaj id gracza: ');
  588. for c:=1 to ilUcz do begin
  589.     writeln(c,'. ',gracz[c].nazwa);
  590. end;
  591. gotoxy(19,1);
  592. readln(idGr);
  593. graczM:
  594. for c:=1 to ilUcz do begin
  595.     if c=idGr then begin nickGrM:=gracz[c].nazwa;break;end;
  596. end;
  597. for c:=1 to ilUcz do begin
  598.     if graczeZ[c].nick=nickGrM then begin
  599.        clrscr;writeln('Nick: ',nickGrM);writeln('Punkty: ',graczeZ[c].punkty);break;
  600.     end;
  601. end;
  602. c:=1;
  603. gral:=0;
  604. while(mecze[c].nick1<>'') do begin
  605.    if ((mecze[c].wygral<>0)AND((mecze[c].nick1=nickGrM)OR(mecze[c].nick2=nickGrM))) then begin
  606.       if gral=0 then begin writeln('Gral nastepujace mecze:');gral:=1;end;
  607.       if mecze[c].wygral=1 then begin
  608.          textcolor(lightgreen);write(c,'. ',mecze[c].nick1);textcolor(7);write(' VS ');textcolor(red);writeln(mecze[c].nick2);textcolor(7);
  609.       end;
  610.       if mecze[c].wygral=2 then begin
  611.          textcolor(red);write(c,'. ',mecze[c].nick1);textcolor(7);write(' VS ');textcolor(lightgreen);writeln(mecze[c].nick2);textcolor(7);
  612.       end;
  613.    end;
  614.    c:=c+1;
  615. end;
  616. c:=1;nGral:=0;
  617. while(mecze[c].nick1<>'') do begin
  618.    if ((mecze[c].wygral=0)AND((mecze[c].nick1=nickGrM)OR(mecze[c].nick2=nickGrM))) then begin
  619.        if nGral=0 then begin writeln('NIE gral nastepujacych meczy:');nGral:=1;end;
  620.        writeln(c,'. ',mecze[c].nick1,' VS ',mecze[c].nick2);
  621.    end;
  622.    c:=c+1;
  623. end;
  624. end ELSE begin write('Baza wynikow graczy i meczy nie istnieje!');readkey;end;
  625. if idGr<>0 then begin
  626.    write('Ktory mecz edytowac? (0 - zaden): ');readln(nrM);
  627.    if nrM<>0 then begin
  628.       write('Wygral (3 - anuluj): ');
  629.       REPEAT
  630.          readln(wyg);
  631.       UNTIL (wyg=0)OR(wyg=1)OR(wyg=2)OR(wyg=3);
  632.       if wyg<>3 then begin mecze[nrM].wygral:=wyg;
  633.       zliczPunkty;
  634.       skopMW(2);skopGW(2);goto graczM;end;
  635.    end ELSE goto wyborGr;
  636. if idGr<>0 then begin if wyg<>3 then readkey;sprMGr;end;
  637. end;
  638. end;
  639. procedure dogrywka;
  640. type
  641. p = record
  642. nick : string;
  643. grupa : char;
  644. ile : byte;
  645. end;
  646. var
  647. c1,y,pier,bylGr,zP,ilR,pM,doK : byte;
  648. lGr : array [1..100] of p;
  649. dogrW,dogrL: text;
  650. znGr : char;
  651. abc : string;
  652. begin
  653. if fSearch('config\dogrGr.txt','')<>'' then begin
  654.       sprF;
  655.       assign(dogrW,'config\dogrGr.txt');
  656.       reset(dogrW);
  657.       c:=0;
  658.       REPEAT
  659.       c:=c+1;
  660.       readln(dogrW,lGr[c].nick);
  661.       readln(dogrW,lGr[c].grupa);
  662.       UNTIL eof(dogrW);
  663.       close(dogrW);
  664.       assign(dogrL,'dogrywkaMecze.txt');
  665.       rewrite(dogrL);
  666.       c1:=0;bylGr:=0;abc:='';
  667.       REPEAT
  668.       pier:=0;ilR:=0;zp:=0;
  669.       c1:=c1+1;
  670.       znGr:=abcW[c1];
  671.          for c:=1 to ilUcz do begin
  672.              if (lGr[c].grupa=znGr)AND(pier=1) then begin
  673.                 ilR:=ilR+1;
  674.                 writeln(dogrL,lGr[c].nick);
  675.                 lGr[zp].ile:=ilR;
  676.              end;
  677.              if (lGr[c].grupa=znGr)AND(pier=0) then begin
  678.                 bylGr:=bylGr+1;zp:=c;ilR:=ilR+1;
  679.                 if bylGr=1 then writeln(dogrL,'DOGRYWKI:');
  680.                 abc:=abc+abcW[c1];
  681.                 if bylGr>1 then writeln(dogrL,'###################');
  682.                 if lGr[1].grupa<>'*' then writeln(dogrL,'GRUPA ',abcW[c1]);
  683.                 writeln(dogrL,lGr[c].nick);
  684.                 pier:=1;
  685.              end;
  686.          end;
  687.       UNTIL c1=51;
  688.       writeln(dogrL,'@@@@@@@@@@@@@@@@@@');
  689.       writeln(dogrL,'Losowania meczy:');
  690.       c1:=0;doK:=0;pM:=0;
  691.       REPEAT
  692.          c1:=c1+1;
  693.          doK:=doK+lGr[1+pM].ile;
  694.          if lGr[pM+1].nick<>'' then begin
  695.             if c1>1 then writeln(dogrL,'###################');
  696.             if lGr[1].grupa<>'*' then writeln(dogrL,'GRUPA ',abc[c1]);
  697.          end;
  698.          for c:=doK-lGr[1+pM].ile+1 to doK-1 do begin
  699.          pM:=pM+1;
  700.              for y:=c+1 to doK+lGr[1+pM].ile do begin
  701.                  writeln(dogrL,lGr[c].nick,' VS ',lGr[y].nick);
  702.              end;
  703.          end;
  704.          pM:=pM+1;
  705.       UNTIL c1=length(abc);
  706.       close(dogrL);
  707.       end;
  708. end;
  709. {*******************MENU************************}
  710. procedure tabMenu;
  711. begin
  712. menuT[1]:='Sprawdz ilosc graczy';                {+}
  713. menuT[2]:='Wyswielt graczy';                     {+}
  714. menuT[3]:='Usun gracza';                         {+}
  715. menuT[4]:='Dodaj gracza';                        {+}
  716. menuT[5]:='Wlacz losowanie';                     {+}
  717. menuT[6]:='Wyswietl mecze / ustaw wynik';        {+}
  718. menuT[7]:='Punkty graczy';                       {+}
  719. menuT[8]:='Sprawdz mecze gracza';                {+}
  720. menuT[9]:='Dogrywka';                            {+}
  721. menuT[10]:='Wylacz';
  722. end;
  723. procedure wysM;
  724. var tekstP : string;
  725. begin
  726. tekstP:='MENU';
  727. gotoxy((80-length(tekstP)) div 2,8);textbackground(blue);write(tekstP);textbackground(0);
  728. for c:=1 to dl do begin
  729. gotoxy((80-length(menuT[c])) div 2,8+c);
  730.     if c=wyborLicz then textcolor(red) ELSE textcolor(7);
  731.     write(menuT[c]);
  732. end;
  733. textcolor(7);gotoxy(1,1);
  734. end;
  735. procedure menu;
  736. var znak : char;
  737. begin
  738. REPEAT
  739. if ilUcz=0 then begin writeln('Najpierw wklej do pliku gracze.txt liste graczy (jeden nick na jedna linijke)');readkey;halt;end;wysM;sprIlGr;{*test sm}
  740. znak:=readkey;
  741.    case znak of
  742.    'w','W':begin wyborLicz:=wyborLicz-1; end;
  743.    's','S':begin wyborLicz:=wyborLicz+1; end;
  744.    end;
  745.    if wyborLicz=0 then wyborLicz:=dl;
  746.    if wyborLicz=dl+1 then wyborLicz:=1;
  747. UNTIL znak=#13;
  748. if wyborLicz=dl then halt;
  749. if wyborLicz=1 then begin writeln('                  Liczba graczy bioracych udzial w turnieju: ',ilUcz);readkey;end;
  750. if wyborLicz=2 then begin clrscr;wyswietlGr;readkey;end;
  751. if wyborLicz=3 then begin write('Podaj id gracza, ktorego chcesz usunac: ');readln(podU);wywalGr(podU);end;
  752. if wyborLicz=4 then begin dodajGr;end;
  753. if wyborLicz=5 then begin losowator;end;
  754. if wyborLicz=6 then begin clrscr;meczPoDo;end;
  755. if wyborLicz=7 then begin clrscr;punktyGraczy;end;
  756. if wyborLicz=8 then begin sprMGr;end;
  757. if wyborLicz=9 then begin dogrywka;end;
  758. clrscr;
  759. menu;
  760. end;
  761. {******************/MENU************************}
  762. begin clrscr;
  763. if fSearch('gracze.txt','') = '' then begin
  764.    assign(t,'gracze.txt');
  765.    rewrite(t);
  766.    close(t);
  767.    writeln('Najpierw wklej do pliku gracze.txt liste graczy (jeden nick na jedna linijke)');readkey;halt;
  768. end;
  769. tabMenu;sprIlGr;wyborLicz:=1;menu;
  770. end.
Advertisement
Add Comment
Please, Sign In to add comment