asmodeus94

losowatorBTest

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