Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program los;
- uses crt,dos;
- type
- rekordziki = record
- nazwa : string;
- zKim : char;
- end;
- type
- rekordziki2 = record
- nazwa : string;
- grupa : char;
- ileGra : byte;
- end;
- type
- graczeZmag = record
- nick : string;
- grupa : char;
- punkty : byte;
- end;
- type
- meczePo = record
- nick1,nick2 : string;
- wygral : byte;
- end;
- const dl=10;abcW='ABCDEFGHIJKLMNOPRSTUVWXYZabcedfghijklmnoprstuvwxyz*';
- var
- t,tZ,tMZ : text;
- f : file; {do usuwania plikow}
- wynG{do wynikow graczy},mWyn{do wynikow meczy} : text; {wyniki graczy; potrzebne do uzycia dwoch procedur (wypisnie, zrobienie odstepu)}
- linia,abc: string;
- wyborLicz : byte; {menu wartosc}
- odpMenu : byte; {dla dekoracji}
- ilUcz,losG,i,jestP,ileMaByc,bylo,jest,ileJest,grOst,skNa,c,x1,x2,podU : byte;
- dlZ1,modOdst : byte; {robienie odstepu w pliku wynikiGraczy.txt}
- ilRozM : byte; {dla wynikiMecze.txt - odstep}
- gr : char;
- gracz : array [1..100] of rekordziki;
- graczG : array [1..100] of rekordziki2;
- graczeZ : array [1..100] of graczeZmag; {nick,grupa;}
- mecze : array [1..150] of meczePo; {nick1,nick2;ktoWygral;}
- menuT : array [1..dl] of string;
- { Spr. ilosc graczy}
- procedure sprIlGr;
- begin
- assign(t,'gracze.txt');
- reset(t);
- ilUcz:=0;
- REPEAT
- readln(t,linia);
- if linia<>'' then begin ilUcz:=ilUcz+1;gracz[ilUcz].nazwa:=linia;end;
- UNTIL eof(t);
- close(t);
- end;
- { / }
- procedure sprF;
- begin
- if fSearch('config','')='' then MkDir('config');
- end;
- {losowator grup i meczy}
- procedure losowator;
- var czyLosowac : integer;
- pierwRaz : byte;
- begin pierwRaz:=1;
- assign(t,'gracze.txt');
- reset(t);
- ilUcz:=0;
- REPEAT
- readln(t,linia);
- if linia<>'' then begin ilUcz:=ilUcz+1;gracz[ilUcz].nazwa:=linia;end;
- UNTIL eof(t);
- close(t);
- if fSearch('config\graczeZ.txt','')<>'' then begin
- czyLosowac:=0;
- pierwRaz:=0;
- writeln('Aktualnie sa juz stworzone grupy. Czy chcesz mimo to kontynowac?');
- REPEAT
- gotoxy(1,2);write(' ');
- gotoxy(1,2);write('0 - nie; 1 - tak: ');read(czyLosowac);
- UNTIL (czyLosowac=0)OR(czyLosowac=1);
- end;
- if (czyLosowac=1)OR(pierwRaz=1) then begin
- write('Ile osob maja miec grupy? Wpisz: ');readln(ileMaByc);
- if ilUcz<ileMaByc then begin
- write('Liczba graczy nie pozwala na stworzenie ani jednej druzyny!');delay(2000);halt;
- end;
- for i:=1 to ilUcz do begin abc[i]:=abcW[i];gracz[i].zKim:='!';end;
- randomize;
- jestP:=0;i:=1;
- assign(t,'grupyIMecze.txt');
- rewrite(t);
- jestP:=0;
- ileJest:=0;
- sprF;
- assign(tZ,'config\graczeZ.txt');
- rewrite(tZ);
- REPEAT
- bylo:=0;jestP:=jestP+1;
- gr:=abc[jestP];
- if jestP>1 then writeln(t,'###################');
- if ileMaByc=ilUcz then gr:='*' ELSE writeln(t,'GRUPA ',gr);
- REPEAT
- jest:=0;
- REPEAT
- losG:=random(ilUcz)+1;
- if gracz[losG].zKim='!' then begin
- gracz[losG].zKim:=gr;jest:=1;bylo:=bylo+1;ileJest:=ileJest+1;
- graczG[ileJest].nazwa:=gracz[losG].nazwa;
- graczG[ileJest].grupa:=gracz[losG].zKim;
- writeln(t,graczG[ileJest].nazwa);
- writeln(tZ,graczG[ileJest].nazwa);writeln(tZ,graczG[ileJest].grupa);writeln(tZ,'0');
- end;
- UNTIL jest=1;
- UNTIL bylo=ileMaByc;
- UNTIL jestP = ilUcz div ileMaByc;
- grOst:=0;
- if ilUcz mod ileMaByc <>0 then begin
- writeln(t,'###################');
- writeln(t,'GRUPA ',abc[(ilUcz div ileMaByc)+1]);
- for i:=1 to ilUcz do begin
- if gracz[i].zKim='!' then begin
- ileJest:=ileJest+1;grOst:=grOst+1;skNa:=ileJest-grOst+1;graczG[ileJest].nazwa:=gracz[i].nazwa;graczG[ileJest].grupa:=abcW[jestP+1];
- writeln(t,graczG[ileJest].nazwa);
- writeln(tZ,graczG[ileJest].nazwa);writeln(tZ,graczG[ileJest].grupa);writeln(tZ,'0');
- end;
- end;
- end;
- close(t);
- close(tZ);
- i:=0;
- append(t);
- writeln(t,'@@@@@@@@@@@@@@@@@@');
- writeln(t,'Mecze do rozegrania:');
- close(t);
- sprF;
- assign(tMZ,'config\mecze.txt');
- rewrite(tMZ);
- close(tMZ);
- REPEAT
- append(t);
- if i>0 then writeln(t,'###################');
- if ileMaByc=ilUcz then gr:='*' ELSE writeln(t,'GRUPA ',abc[i+1]);
- close(t);
- for x1:=1+i*ileMabyc to ileMaByc*i+ileMaByc do begin
- for x2:=1+i*ileMabyc to ileMaByc*i+ileMaByc do begin
- if (x1<>x2)AND(graczG[x1].ileGra<ileMaByc-1)AND(graczG[x2].ileGra<ileMaByc-1) then begin
- graczG[x1].ileGra:=graczG[x1].ileGra+1;
- graczG[x2].ileGra:=graczG[x2].ileGra+1;
- append(t);
- writeln(t,graczG[x1].nazwa,' VS ',graczG[x2].nazwa);
- close(t);
- append(tMZ);
- writeln(tMZ,graczG[x1].nazwa);writeln(tMZ,graczG[x2].nazwa);writeln(tMZ,'0');
- close(tMZ);
- end;
- end;
- end;
- i:=i+1;
- UNTIL i = ilUcz div ileMaByc;
- if ilUcz mod ileMaByc <>0 then begin
- append(t);
- writeln(t,'###################');
- writeln(t,'GRUPA ',abc[i+1]);
- close(t);
- for x1:=skNa to skNa+grOst do begin
- for x2:=skNa to skNa+grOst do begin
- if (x1<>x2)AND(graczG[x1].ileGra<grOst-1)AND(graczG[x2].ileGra<grOst-1) then begin
- graczG[x1].ileGra:=graczG[x1].ileGra+1;
- graczG[x2].ileGra:=graczG[x2].ileGra+1;
- append(t);
- writeln(t,graczG[x1].nazwa,' VS ',graczG[x2].nazwa);
- close(t);
- append(tMZ);
- writeln(tMZ,graczG[x1].nazwa);writeln(tMZ,graczG[x2].nazwa);writeln(tMZ,'0');
- close(tMZ);
- end;
- end;
- end;
- end;
- end;
- end;
- { / }
- procedure wyswietlGr;
- var licz,modB,bylL,ile : byte;
- begin
- ile:=10;
- if ilUcz>40 then ile:=20;
- licz:=0;modB:=0;bylL:=0;
- for c:=1 to ilUcz do begin
- if gracz[c].nazwa<>'' then begin
- licz:=licz+1;
- if licz=ile+1 then begin
- licz:=1;modB:=modB+20;
- end;
- if licz=ile then bylL:=1;
- gotoxy(1+modB,licz);write(c,'. ',gracz[c].nazwa);
- end ELSE break;
- end;
- textcolor(red);
- if bylL=0 then gotoxy(1,licz+1) ELSE gotoxy(1,ile+1);
- write('Licznik: ',c);textcolor(7);
- end;
- procedure przesun(d : byte);
- begin
- for c:=d to ilUcz do begin
- gracz[c]:=gracz[c+1];
- end;
- end;
- procedure wywalGr(id : byte);
- var usu : byte;
- begin usu:=0;
- for c:=1 to ilUcz do begin
- if c=id then begin
- gracz[ilUcz+1].nazwa:='';gracz[ilUcz+1].zKim:='!';przesun(c);usu:=1;ilUcz:=ilUcz-1;
- end;
- end;
- if usu=1 then begin
- assign(t,'gracze.txt');rewrite(t);
- for c:=1 to ilUcz do begin
- if gracz[c].nazwa<>'' then begin
- writeln(t,gracz[c].nazwa);
- end;
- end;
- close(t);
- end;
- end;
- procedure dodajGr;
- var nickPod,prob : string;
- tabGrZ : array[1..100] of string;
- c1 : byte;
- begin
- write('Podaj nick uczestnika (0 - anuluj): ');readln(nickPod);
- if nickPod<>'0' then begin
- gracz[ilUcz+1].nazwa:=nickPod;gracz[ilUcz+1].zKim:='!';
- assign(t,'gracze.txt');reset(t);
- c:=0;
- REPEAT readln(t,prob);c:=c+1;if prob<>'' then gracz[c].nazwa:=prob; UNTIL eof(t);
- rewrite(t);
- c1:=0;
- REPEAT
- c1:=c1+1;
- if gracz[c1].nazwa<>'' then begin writeln(t,gracz[c1].nazwa);end;
- UNTIL c1=c;
- gracz[c1+1].nazwa:=nickPod;
- writeln(t,gracz[c1+1].nazwa);
- close(t);
- end;
- end;
- procedure skopGW(para : byte);
- var sW : text;
- begin
- c:=0;
- if fSearch('config\graczeZ.txt','')<>'' then begin
- sprF;
- assign(sW,'config\graczeZ.txt');
- case para of
- 1: begin
- reset(sW);
- REPEAT
- c:=c+1;
- readln(sW,graczeZ[c].nick);
- readln(sW,graczeZ[c].grupa);
- readln(sW,graczeZ[c].punkty);
- UNTIL eof(sW);
- end;
- 2: begin
- rewrite(sW);
- c:=1;
- while(graczeZ[c].nick<>'') do begin
- writeln(sW,graczeZ[c].nick);
- writeln(sW,graczeZ[c].grupa);
- writeln(sW,graczeZ[c].punkty);
- c:=c+1;
- end;
- end;
- end;
- close(sW);
- end;
- end;
- procedure skopMW(para : byte);
- var sW : text;
- begin
- c:=0;
- if fSearch('config\mecze.txt','')<>'' then begin
- sprF;
- assign(sW,'config\mecze.txt');
- case para of
- 1: begin
- reset(sW);
- REPEAT
- c:=c+1;
- readln(sW,mecze[c].nick1);
- readln(sW,mecze[c].nick2);
- readln(sW,mecze[c].wygral);
- UNTIL eof(sW);
- ilRozM:=c;
- end;
- 2: begin
- rewrite(sW);
- c:=1;
- while(mecze[c].nick1<>'') do begin
- writeln(sW,mecze[c].nick1);
- writeln(sW,mecze[c].nick2);
- writeln(sW,mecze[c].wygral);
- c:=c+1;
- end;
- end;
- end;
- close(sW);
- end;
- end;
- procedure odstepZrob(ktorOpc,jakaDl : byte);
- var z : byte;
- begin
- dlZ1:=0;
- case ktorOpc of
- 1: begin
- for z:=1 to 25-jakaDl-modOdst do begin
- write(wynG,' ');dlZ1:=dlZ1+1;
- end;
- end;
- 2: begin
- for z:=1 to (24-5-dlZ1-10-6) div 2 do begin
- write(wynG,' ');
- end;
- end;
- 3: begin
- for z:=1 to 40-jakaDl do begin
- write(mWyn,' ');
- end;
- end;
- end;
- end;
- function policzIleM(wJednejGrupie:real):real; {funkcja liczaca ilosc meczy na grupe}
- begin
- policzIleM:=(wJednejGrupie/2)*(wJednejGrupie-1);
- end;
- procedure meczPoDo;
- const ile=60;
- var licz,modB,kM,jW,mGran,jestMIle,grany,roze,ileWGr,akOsWGr,nrGr,mod100 : byte;
- wygTM,bC : string;
- odGrupy : char;
- begin
- skopGW(1);
- ileWGr:=0;
- for c:=1 to ilUcz do begin
- if graczeZ[c].grupa='A' then ileWGr:=ileWGr+1 ELSE break;
- end;
- skopMW(1);
- c:=1;licz:=0;modB:=0;modOdst:=0;mGran:=0;jestMIle:=0;grany:=0;roze:=0;akOsWGr:=0;nrGr:=1;
- assign(mWyn,'wynikiMecze.txt');rewrite(mWyn);
- while(mecze[c].nick1<>'') do begin
- grany:=grany+1;
- licz:=licz+1;
- gotoxy(1+modB,licz);
- if licz=ile then begin
- licz:=0;modB:=modB+35;jestMIle:=1;
- end;
- if mecze[c].wygral<>0 then begin
- if mecze[c].wygral=1 then begin roze:=roze+1;
- textcolor(lightgreen);write(c,'. ',mecze[c].nick1);textcolor(7);write(' VS ');textcolor(red);write(mecze[c].nick2);
- wygTM:=mecze[c].nick1;
- end;
- if mecze[c].wygral=2 then begin roze:=roze+1;
- textcolor(red);write(c,'. ',mecze[c].nick1);textcolor(7);write(' VS ');textcolor(lightgreen);write(mecze[c].nick2);
- wygTM:=mecze[c].nick2;
- end;
- end ELSE begin
- write(c,'. ',mecze[c].nick1);write(' VS ',mecze[c].nick2);
- end;
- textcolor(7);
- if graczeZ[1].grupa='*' then odGrupy:='*' ELSE odGrupy:=abcW[nrGr];
- write(' (',odGrupy,')');
- bc:=mecze[c].nick1+' VS '+mecze[c].nick2;
- write(mWyn,c,'. ',mecze[c].nick1,' VS ',mecze[c].nick2);
- if c div 10 > 0 then modOdst:=1;
- if (ilRozM div 100>0)AND(c<100) then mod100:=1 ELSE mod100:=0;
- if mecze[c].wygral<>0 then begin
- mGran:=mGran+1;
- odstepZrob(3,length(bc)+2+modOdst-mod100);write(mWyn,'(',odGrupy,') ');writeln(mWyn,'--------------------------- ',wygTM);
- end ELSE begin odstepZrob(3,length(bc)+2+modOdst-mod100);writeln(mWyn,'(',odGrupy,') ');end;
- c:=c+1;
- akOsWGr:=akOsWGr+1;
- if akOsWGR=policzIleM(ileWGr) then begin nrGr:=nrGr+1;akOsWGr:=0;end;
- end;
- writeln(mWyn,'Rozegranych bitew: ',roze,'/',grany);
- close(mWyn);
- 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);
- write('Mecz nr (0 - wyjscie): ');readln(kM);
- if kM<>0 then begin write('Wygral: ');readln(jW);
- mecze[kM].wygral:=jW;skopMW(2);clrscr;meczPoDo
- end;
- end;
- procedure zliczPunkty;
- var c1 : byte;nickWyg : string;
- begin
- c:=1;
- while(graczeZ[c].nick<>'')do begin graczeZ[c].punkty:=0;c:=c+1; end;
- c:=1;
- while(mecze[c].nick1<>'') do begin
- if mecze[c].wygral<>0 then begin
- if mecze[c].wygral=1 then nickWyg:=mecze[c].nick1;
- if mecze[c].wygral=2 then nickWyg:=mecze[c].nick2;
- c1:=1;
- while(graczeZ[c1].nick<>'')do begin
- if graczeZ[c1].nick=nickWyg then begin
- graczeZ[c1].punkty:=graczeZ[c1].punkty+1;
- end;
- c1:=c1+1;
- end;
- end;
- c:=c+1;
- end;
- end;
- procedure punktyGraczy;
- type
- wyszliR = record
- nick : string;
- idGr : byte;
- wD,grupa : char;
- end;
- label powrot;
- var c1,dlN,wyborGr,licznik,bylD,jakisJest,zaznW,zaznD,wyszCzyD,dogrJ,lit,wKtorM,ileBylo : byte;
- wyszli : array [1..100] of wyszliR;
- sch : graczeZmag;
- wyborZn,znakGr,litJ: char;
- pNick,wer,prob : string;
- wyszZ,wyszD,dogr : text;
- begin randomize;
- skopMW(1);skopGW(1);
- zliczPunkty;
- skopGW(2);licznik:=0;
- if fSearch('config\graczeZ.txt','')<>'' then begin
- if fSearch('config\wyszD.txt','')<>'' then begin
- sprF;
- assign(wyszD,'config\wyszD.txt');
- reset(wyszD);
- readln(wyszD,prob);
- if prob<>'' then begin
- reset(wyszD);
- REPEAT
- licznik:=licznik+1;
- readln(wyszD,wyszli[licznik].nick);
- readln(wyszD,wyszli[licznik].idGr);
- readln(wyszD,wyszli[licznik].wD);
- readln(wyszD,wyszli[licznik].grupa);
- UNTIL eof(wyszD);
- end;
- close(wyszD);
- end;
- if graczeZ[1].nick<>'' then begin {sortowanie}
- if graczeZ[1].grupa='*' then begin
- for c:=1 to ilUcz-1 do begin
- for c1:=1 to ilUcz-1 do begin
- if graczeZ[c1].punkty<graczeZ[c1+1].punkty then begin
- sch:=graczeZ[c1];graczeZ[c1]:=graczeZ[c1+1];graczeZ[c1+1]:=sch;
- end;
- end;
- end;
- end ELSE begin {sortowanie jak sa grupy}wKtorM:=0;lit:=1;
- REPEAT
- ileBylo:=0;
- litJ:=abcW[lit];
- for c:=1+wKtorM to ilUcz do begin
- if graczeZ[c].grupa=litJ then begin ileBylo:=ileBylo+1;wKtorM:=wKtorM+1;end ELSE break;
- end;
- for c:=1 to ileBylo-1 do begin
- for c1:=wKtorM-ileBylo+1 to wKtorM-ileBylo+ileBylo-1 do begin
- if graczeZ[c1].punkty<graczeZ[c1+1].punkty then begin
- sch:=graczeZ[c1];graczeZ[c1]:=graczeZ[c1+1];graczeZ[c1+1]:=sch;
- end;
- end;
- end;
- lit:=lit+1;
- UNTIL lit=50;
- end;
- for c:=1 to ilUcz do begin
- for c1:=1 to ilUcz do begin
- if graczeZ[c].nick=wyszli[c1].nick then begin
- wyszli[c1].idGr:=c;
- end;
- end;
- end;
- end;
- wyborGr:=1;
- powrot:
- zaznD:=0;
- bylD:=0;zaznW:=0;
- for c:=1 to ilUcz do begin
- if graczeZ[c].nick<>'' then begin
- if graczeZ[c].punkty=0 then textcolor(red);
- if wyszli[c].wD='w' then zaznW:=zaznW+1;
- if wyszli[c].wD='d' then zaznD:=zaznD+1;
- gotoxy(1,c);
- for c1:=1 to ilUcz do begin
- if wyszli[c1].idGr=c then begin
- if wyszli[c1].wD='w' then textcolor(green);
- if wyszli[c1].wD='d' then textcolor(3);
- break;end;
- end;
- if c=wyborGr then textcolor(yellow);
- 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);
- pNick:=graczeZ[c].nick;
- textcolor(7);
- end ELSE break;
- end;
- gotoxy(54,wyborGr);textbackground(blue);write('wysz.: ',zaznW,'; dogr.: ',zaznD);textbackground(0);
- REPEAT
- wyborZn:=readkey;
- UNTIL (wyborZn='w')OR(wyborZn='W')OR(wyborZn='s')OR(wyborZn='S')OR(wyborZn=#13)OR(wyborZn='z')OR(wyborZn='Z');
- case wyborZn of
- 'w','W':begin wyborGr:=wyborGr-1; end;
- 's','S':begin wyborGr:=wyborGr+1; end;
- #13: begin
- for c:=1 to licznik do begin
- if wyborGr=wyszli[c].idGr then begin
- if wyszli[c].wD='w' then zaznW:=zaznW-1;
- if wyszli[c].wD='d' then zaznD:=zaznD-1;
- wyszli[c].nick:='';wyszli[c].idGr:=0;wyszli[c].wD:='!';wyszli[licznik].grupa:='!';bylD:=1;
- end;
- end;
- if bylD=0 then begin
- REPEAT
- gotoxy(54,wyborGr);textbackground(blue);write('w - wyszedl; d - dogrywka');textbackground(0);
- wyborZn:=readkey;
- UNTIL (wyborZn='w')OR(wyborZn='W')OR(wyborZn='d')OR(wyborZn='D');
- if (wyborZn='w')OR(wyborZn='W') then wyszCzyD:=1;
- if (wyborZn='d')OR(wyborZn='D') then wyszCzyD:=2;
- 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;
- 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;
- end; end;
- end;
- if (wyborZn<>'z')AND(wyborZn<>'Z') then begin
- if wyborGr=0 then wyborGr:=ilUcz;
- if wyborGr=ilUcz+1 then wyborGr:=1;
- for c:=1 to ilUcz do begin
- gotoxy(54,c);write(' ');
- end;
- goto powrot;
- end ELSE begin jakisJest:=0;
- for c:=1 to ilUcz do begin
- if wyszli[c].wD='w' then begin jakisJest:=1;break;end;
- end;
- if jakisJest=1 then begin
- assign(wyszZ,'wyszli.txt');
- rewrite(wyszZ);
- for c:=1 to ilUcz do begin
- if (wyszli[c].nick<>'')AND(wyszli[c].wD='w') then writeln(wyszZ,wyszli[c].nick);
- end;
- close(wyszZ);
- end;
- end;
- modOdst:=0;
- assign(wynG,'wynikiGraczy.txt');
- rewrite(wynG);
- for c:=1 to ilUcz do begin
- if graczeZ[c].nick<>'' then begin
- for c1:=1 to ilUcz do begin
- if wyszli[c1].idGr=c then begin
- if wyszli[c1].wD='w' then wer:='WYSZEDL' ELSE wer:='DOGRYWKA';
- break;end ELSE wer:='';
- end;
- pNick:=graczeZ[c].nick;
- dlN:=length(pNick);
- if c div 10>0 then modOdst:=1;
- for c1:=1 to ilUcz do begin
- if wyszli[c1].idGr=c then begin
- if wyszli[c1].wD='w' then wer:='WYSZEDL' ELSE wer:='DOGRYWKA';
- break;end ELSE wer:='';
- end;
- end ELSE break;
- 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);
- end;
- close(wynG);
- if (zaznW>0)OR(zaznD>0) then begin
- sprF;
- assign(wyszD,'config\wyszD.txt');
- rewrite(wyszD);
- for c:=1 to ilUcz do begin
- if wyszli[c].nick<>'' then begin
- writeln(wyszD,wyszli[c].nick);
- writeln(wyszD,wyszli[c].idGr);
- writeln(wyszD,wyszli[c].wD);
- writeln(wyszD,wyszli[c].grupa);
- end;
- end;
- close(wyszD);
- end ELSE begin
- if fSearch('config\wyszD.txt','')<>'' then begin
- assign(f,'config\wyszD.txt');erase(f);
- if fSearch('wyszli.txt','')<>'' then begin
- assign(f,'wyszli.txt');erase(f);
- end;
- end;
- end;
- dogrJ:=0;
- for c:=1 to ilUcz do begin
- if wyszli[c].wD='d' then begin dogrJ:=1;break;end;
- end;
- if dogrJ=1 then begin
- sprF;
- assign(dogr,'config\dogrGr.txt');rewrite(dogr);close(dogr);
- c1:=0;
- REPEAT
- c1:=c1+1;
- znakGr:=abcW[c1];
- for c:=1 to ilUcz do begin
- if (wyszli[c].grupa=znakGr)AND(wyszli[c].wD='d') then begin
- append(dogr);
- writeln(dogr,wyszli[c].nick);
- writeln(dogr,wyszli[c].grupa);
- close(dogr);
- end;
- end;
- UNTIL c1=51;
- end ELSE begin
- if fSearch('config\dogrGr.txt','')<>'' then begin
- assign(f,'config\dogrGr.txt');erase(f);
- end;
- end;
- end ELSE begin write('Baza wynikow graczy i meczy nie istnieje!');readkey;end;
- end;
- procedure sprMGr;
- var
- gral,nGral,idGr,nrM,wyg : byte;
- nickGrM : string;
- label graczM,wyborGr;
- begin
- if (fSearch('config\graczeZ.txt','')<>'')AND(fSearch('config\mecze.txt','')<>'') then begin
- skopGW(1);skopMW(1);
- wyborGr:clrscr;writeln('Podaj id gracza: ');
- for c:=1 to ilUcz do begin
- writeln(c,'. ',gracz[c].nazwa);
- end;
- gotoxy(19,1);
- readln(idGr);
- graczM:
- for c:=1 to ilUcz do begin
- if c=idGr then begin nickGrM:=gracz[c].nazwa;break;end;
- end;
- for c:=1 to ilUcz do begin
- if graczeZ[c].nick=nickGrM then begin
- clrscr;writeln('Nick: ',nickGrM);writeln('Punkty: ',graczeZ[c].punkty);break;
- end;
- end;
- c:=1;
- gral:=0;
- while(mecze[c].nick1<>'') do begin
- if ((mecze[c].wygral<>0)AND((mecze[c].nick1=nickGrM)OR(mecze[c].nick2=nickGrM))) then begin
- if gral=0 then begin writeln('Gral nastepujace mecze:');gral:=1;end;
- if mecze[c].wygral=1 then begin
- textcolor(lightgreen);write(c,'. ',mecze[c].nick1);textcolor(7);write(' VS ');textcolor(red);writeln(mecze[c].nick2);textcolor(7);
- end;
- if mecze[c].wygral=2 then begin
- textcolor(red);write(c,'. ',mecze[c].nick1);textcolor(7);write(' VS ');textcolor(lightgreen);writeln(mecze[c].nick2);textcolor(7);
- end;
- end;
- c:=c+1;
- end;
- c:=1;nGral:=0;
- while(mecze[c].nick1<>'') do begin
- if ((mecze[c].wygral=0)AND((mecze[c].nick1=nickGrM)OR(mecze[c].nick2=nickGrM))) then begin
- if nGral=0 then begin writeln('NIE gral nastepujacych meczy:');nGral:=1;end;
- writeln(c,'. ',mecze[c].nick1,' VS ',mecze[c].nick2);
- end;
- c:=c+1;
- end;
- end ELSE begin write('Baza wynikow graczy i meczy nie istnieje!');idGr:=0;readkey;end;
- if idGr<>0 then begin
- write('Ktory mecz edytowac? (0 - zaden): ');readln(nrM);
- if nrM<>0 then begin
- write('Wygral (3 - anuluj): ');
- REPEAT
- readln(wyg);
- UNTIL (wyg=0)OR(wyg=1)OR(wyg=2)OR(wyg=3);
- if wyg<>3 then begin mecze[nrM].wygral:=wyg;
- zliczPunkty;
- skopMW(2);skopGW(2);goto graczM;end;
- end ELSE goto wyborGr;
- if idGr<>0 then begin if wyg<>3 then readkey;sprMGr;end;
- end;
- end;
- procedure dogrywka;
- type
- p = record
- nick : string;
- grupa : char;
- ile : byte;
- end;
- var
- c1,y,pier,bylGr,zP,ilR,pM,doK : byte;
- lGr : array [1..100] of p;
- dogrW,dogrL: text;
- znGr : char;
- abc : string;
- begin
- if fSearch('config\dogrGr.txt','')<>'' then begin
- sprF;
- assign(dogrW,'config\dogrGr.txt');
- reset(dogrW);
- c:=0;
- REPEAT
- c:=c+1;
- readln(dogrW,lGr[c].nick);
- readln(dogrW,lGr[c].grupa);
- UNTIL eof(dogrW);
- close(dogrW);
- if c>1 then begin
- assign(dogrL,'dogrywkaMecze.txt');
- rewrite(dogrL);
- c1:=0;bylGr:=0;abc:='';
- REPEAT
- pier:=0;ilR:=0;zp:=0;
- c1:=c1+1;
- znGr:=abcW[c1];
- for c:=1 to ilUcz do begin
- if (lGr[c].grupa=znGr)AND(pier=1) then begin
- ilR:=ilR+1;
- writeln(dogrL,lGr[c].nick);
- lGr[zp].ile:=ilR;
- end;
- if (lGr[c].grupa=znGr)AND(pier=0) then begin
- bylGr:=bylGr+1;zp:=c;ilR:=ilR+1;
- if bylGr=1 then writeln(dogrL,'DOGRYWKI:');
- abc:=abc+abcW[c1];
- if bylGr>1 then writeln(dogrL,'###################');
- if lGr[1].grupa<>'*' then writeln(dogrL,'GRUPA ',abcW[c1]);
- writeln(dogrL,lGr[c].nick);
- pier:=1;
- end;
- end;
- UNTIL c1=51;
- writeln(dogrL,'@@@@@@@@@@@@@@@@@@');
- writeln(dogrL,'Mecze do rozegrania:');
- c1:=0;doK:=0;pM:=0;
- REPEAT
- c1:=c1+1;
- doK:=doK+lGr[1+pM].ile;
- if lGr[pM+1].nick<>'' then begin
- if c1>1 then writeln(dogrL,'###################');
- if lGr[1].grupa<>'*' then writeln(dogrL,'GRUPA ',abc[c1]);
- end;
- for c:=doK-lGr[1+pM].ile+1 to doK-1 do begin
- pM:=pM+1;
- for y:=c+1 to doK+lGr[1+pM].ile do begin
- writeln(dogrL,lGr[c].nick,' VS ',lGr[y].nick);
- end;
- end;
- pM:=pM+1;
- UNTIL c1=length(abc);
- close(dogrL);
- end;
- end;
- end;
- {*******************MENU************************}
- procedure robZnaki(znak : char;x,y,gdzie,il : byte);
- var a : byte;
- begin
- for a:=0 to il do begin
- if gdzie=0 then gotoxy(x+a,y) ELSE gotoxy(x,y+a);
- write(znak);
- end;
- end;
- procedure dekoracja;
- var autorX,autorY : byte;
- begin
- robznaki(#205,25,7,0,30);gotoxy(24,7);write(#201);gotoxy(55,7);write(#187);
- robznaki(#186,24,8,1,10);gotoxy(24,19);write(#200);
- robznaki(#205,25,19,0,29);gotoxy(55,19);write(#188);
- robznaki(#186,55,8,1,10);
- autorX:=57;autorY:=21;
- gotoxy(1+autorX,1+autorY);textcolor(1);write(#218);robznaki(#196,2+autorX,1+autorY,0,16);write(#191);
- gotoxy(1+autorX,2+autorY);write(#179);textcolor(7);write('autor: asmodeus94');textcolor(1);write(#179);
- gotoxy(1+autorX,3+autorY);write(#192);robznaki(#196,2+autorX,3+autorY,0,16);write(#217);textcolor(7);
- end;
- procedure tabMenu;
- begin
- menuT[1]:='Sprawdz ilosc graczy'; {+}
- menuT[2]:='Wyswielt graczy'; {+}
- menuT[3]:='Usun gracza'; {+}
- menuT[4]:='Dodaj gracza'; {+}
- menuT[5]:='Wlacz losowanie'; {+}
- menuT[6]:='Wyswietl mecze / ustaw wynik'; {+}
- menuT[7]:='Punkty graczy'; {+}
- menuT[8]:='Sprawdz mecze gracza'; {+}
- menuT[9]:='Dogrywka'; {+}
- menuT[10]:='Wylacz';
- end;
- procedure wysM;
- var tekstP : string;
- begin
- tekstP:='MENU';
- gotoxy((80-length(tekstP)) div 2,8);textbackground(blue);write(tekstP);textbackground(0);
- for c:=1 to dl do begin
- gotoxy((80-length(menuT[c])) div 2,8+c);
- if c=wyborLicz then textcolor(red) ELSE textcolor(7);
- write(menuT[c]);
- end;
- textcolor(7);gotoxy(1,1);
- end;
- procedure menu;
- var znak : char;
- begin
- REPEAT
- 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}
- if odpMenu=0 then begin dekoracja;odpMenu:=1;end;
- znak:=readkey;
- case znak of
- 'w','W':begin wyborLicz:=wyborLicz-1; end;
- 's','S':begin wyborLicz:=wyborLicz+1; end;
- end;
- if wyborLicz=0 then wyborLicz:=dl;
- if wyborLicz=dl+1 then wyborLicz:=1;
- UNTIL znak=#13;
- if wyborLicz=dl then halt;
- case wyborLicz of
- 1:begin
- gotoxy(17,1);writeln('Liczba graczy bioracych udzial w turnieju: ',ilUcz);readkey;
- end;
- 2:begin
- clrscr;wyswietlGr;readkey;
- end;
- 3:begin
- write('Podaj id gracza, ktorego chcesz usunac (0 - anuluj): ');readln(podU);if podU<>0 then wywalGr(podU);
- end;
- 4:begin
- dodajGr;
- end;
- 5:begin
- losowator;
- end;
- 6:begin
- clrscr;meczPoDo;
- end;
- 7:begin
- clrscr;punktyGraczy;
- end;
- 8:begin
- sprMGr;
- end;
- 9:begin
- dogrywka;
- end;
- end;
- clrscr;
- if wyborLicz<dl then dekoracja;
- menu;
- end;
- {******************/MENU************************}
- begin clrscr;
- if fSearch('gracze.txt','') = '' then begin
- assign(t,'gracze.txt');
- rewrite(t);
- close(t);
- writeln('Najpierw wklej do pliku gracze.txt liste graczy (jeden nick na jedna linijke)');readkey;halt;
- end;
- tabMenu;sprIlGr;wyborLicz:=1;menu;
- end.
Advertisement
Add Comment
Please, Sign In to add comment