Jeg sidder og er ved at lave et tournerings system Jeg bruger en tabbednotebook så jeg på første side har administrations tingene og på anden side har tourneringsplannen.
Mit problem er at programmet skal være dynamisk siden jeg ikke kan vide hvor mange spillere der bliver i tourneringen.
Nogle ideer til hvordan jeg får lavet denne tourneringsplan?
Der skal kunne være fra 2 op til mange (men lad og bare sige 16 til at starte med)
Efter det skal man kunne ændre hvem der vinder hvilke kampe og på den måde skal de gå videre i systemet.
Jeg kan simpelthen ikke komme på hvordan jeg skal bygge dette op, lige nu er jeg ikke sikker på om man overhovedet kan lave det.
det skulle være til det der kaldes single eller double elimination, så ja knock-off
jeg ved godt det er svært, jeg kunne i hvertfald ikke komme på noget, men hvis ikke andet kan vi jo diskutere hvad man måske kunne gøre..
problemet er som jeg ser det at man skal lave object based programming (tror jeg det hedder) altså for et tilfældigt antal spillere skal der komme nogle boxe frem og knapper måske og sådan.. og de skal så kunne ændre noget i planen så som hvem der går videre og sådan.
Derfor objekter der ikke finde ide programmet bliver laver skal komme frem og virke "forskeligt" på de andre nye ting der også er kommet frem hvis du forstår..
Formen indeholder en listbox, en editbox, button1 (tilføj), button2 (ok) og en stringgrid (col1 fixed). Når der trykkes på button2, overføres alle navnene i tilfældig rækkefølge til stringgrid'en. 1 og 2 kæmper mod hinanden, 3 og 4 osv. Der dobbeltklikkes på vinderen af den enkelte kamp. Vinderen bliver farvet grøn, taberen bliver rød. Når alle kampe er afgjort, overføres vinderene til næste række. Jeg har kun lavet hertil. Resten må du gå videre med. Men her er mit forslag:
var Form1: TForm1; x,y: integer; a: array[0..5,0..10] of byte;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject); var i,j: integer; myrect: tgridrect; begin for j := 0 to stringgrid1.rowcount do begin a[0,j]:= 1; stringgrid1.cells[0,j] := inttostr(j+1); end; myrect.top := -1; myrect.left := -1; myrect.bottom := -1; myrect.right := -1; stringgrid1.selection := myrect; listbox1.items.add('Alex'); listbox1.items.add('Bente'); listbox1.items.add('Carsten'); listbox1.items.add('Dorte'); listbox1.items.add('Erik'); Edit1.text := ''; end;
procedure TForm1.StringGrid1DrawCell(Sender: TObject; Col, Row: Longint; Rect: TRect; State: TGridDrawState); var s: string; begin case a[col,row] of 0: stringgrid1.canvas.brush.color := clWhite; 1: stringgrid1.canvas.brush.color := clBtnFace; 2: stringgrid1.canvas.brush.color := clGreen; 3: stringgrid1.canvas.brush.color := clred; end; if ((a[col,row]=2) or (a[col,row]=3)) then begin stringgrid1.canvas.fillrect(rect); stringgrid1.canvas.pen.color := clBlack; stringgrid1.canvas.textout(rect.left+2,rect.top+2,stringgrid1.cells[col,row]); end; end;
procedure TForm1.StringGrid1DblClick(Sender: TObject); var i,nyantal : integer; klar: boolean; temp : string; begin case a[stringgrid1.selection.left,stringgrid1.selection.top] of 0,3: begin a[stringgrid1.selection.left,stringgrid1.selection.top] := 2; a[stringgrid1.selection.left,stringgrid1.selection.top-((stringgrid1.selection.top mod 2)*2-1)] := 3; end; 2: begin a[stringgrid1.selection.left,stringgrid1.selection.top] := 0; a[stringgrid1.selection.left,stringgrid1.selection.top-((stringgrid1.selection.top mod 2)*2-1)] := 0; end; end; stringgrid1.refresh;
klar := true; for i := 0 to stringgrid1.rowcount-1 do if a[1,i] = 0 then klar := false; if klar then {alle i rækken er udfyldt} begin nyantal := stringgrid1.rowcount div 2 + stringgrid1.rowcount mod 2; for i := 0 to nyantal do begin if (a[1,i*2] = 2) then stringgrid1.cells[2,i] := stringgrid1.cells[1,i*2] else stringgrid1.cells[2,i] := stringgrid1.cells[1,i*2+1] end; end; end;
procedure TForm1.Button1Click(Sender: TObject); begin Listbox1.items.add(edit1.text); edit1.text := ''; edit1.setfocus; end;
procedure TForm1.Button2Click(Sender: TObject); var i,j: integer; begin stringgrid1.rowcount := listbox1.items.count; randomize; i := 0; repeat j := random(listbox1.items.count); stringgrid1.cells[1,i] := listbox1.items[j]; listbox1.items.delete(j); inc(i); until listbox1.items.count = 0; button1.enabled := false; button2.enabled := false; end;
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.