07. oktober 2004 - 19:23
Der er
5 kommentarer
Tournerings System
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.
Håber nogle af jer kan hjælpe :)
11. oktober 2004 - 03:17
#2
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..
11. oktober 2004 - 15:26
#3
Her er lidt at starte på:
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:
unit Konkm;
interface
uses
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls, Grids;
type
TForm1 = class(TForm)
ListBox1: TListBox;
StringGrid1: TStringGrid;
Edit1: TEdit;
Button1: TButton;
Button2: TButton;
procedure FormCreate(Sender: TObject);
procedure StringGrid1DrawCell(Sender: TObject; Col, Row: Longint;
Rect: TRect; State: TGridDrawState);
procedure StringGrid1DblClick(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
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;
end.