Autor Beitrag
Pansenen
Hält's aus hier
Beiträge: 15


D 7
BeitragVerfasst: So 28.08.05 13:52 
Also mein Problem: ein Spiel kann man mit 2-6 Spielern spielen. Wenn die Anzahl der Spieler ausgewählt wurde soll nun ein Plan erstellt werden:
- immer nur ein Spieler gegen einen anderen Spieler
- jede Begegnung soll nur einmal vorkommen (is ja klar)
- es sollen alle Spieler relativ regelmäßig rankommen, d.h. nicht dass erst der erste Spieler nacheinander gegen 2-6 spielt, sondern meinetwegen als Bsp.:
erstens: 1 vs 2
zweitens: 3 vs 4
drittens: 5 vs 6
viertens: 1 vs 3
usw....
das soll aber auch meinetwegen bei nur 5 Spielern oder 3 klappen...
Thx in advance

Moderiert von user profile iconTino: Titel geändert.
Tino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: So 28.08.05 13:59 
Hallo!

Das einfachste wäre wohl ein zwei Dimiensionales Array zu erstellen und dort dann zu vermerken welche Spieler mit welchen Spielern schon gespielt hat und dann einfach per Zufall nach und nach die noch nicht zusammengespielten Spieler ermitteln.

Gruß
Tino
Pansenen Threadstarter
Hält's aus hier
Beiträge: 15


D 7
BeitragVerfasst: So 28.08.05 16:12 
Wie meinst du das? Würdest du jetzt meinetwegen ein integer array[1..6,1..6] erstellen, und woran merkst du dann, welche schon gespielt haben? Das mit randomize würde ich mir auch vorstellen auf jeden Fall. Aber die Antwort ist doch recht allgemein, ich habe zwar eine allgemeine Vermutung, was du meinst, wäre aber dankbar wenn du das ein bisschen genauer ausführen würdest (vielleicht mit ein paar Zeilen Quelltext oder so)...
Cya + Thx
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: So 28.08.05 16:25 
Du kannst sowas machen:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
TPartie = record
    Spieler1: Integer;
    Spieler2: Integer;
end;

Gespielt : Array [1..61..6of Boolean;

Procedure GetSpiel: TPartie;
begin
    Repeat
        Result.Spieler1 := 1 + Random(6);
        Result.Spieler2 := 1 + Random(6);
    Until not Gespielt[Result.Spieler1, Result.Spieler2] and (Result.Spieler1 <> Result.Spieler2);
    Gespielt[Result.Spieler1, Result.Spieler2] := True;
    Gespielt[Result.Spieler2, Result.Spieler1] := True;
end;


Die Zeilen 11 und 12 ermitteln zufällig ein Spiel.
Zeile 13 prüft, ob das besagte Spiel schonmal stattgefunden hat und außerdem, dass nicht ein Spieler gegen sich selbst spielt.
Zeile 14 und 15 sorgen nur dafür, dass kein Spiel erneut ausgeführt wird.

WICHTIG: Prüfen, dass mindestens ein Spiel ungespielt ist ;-)

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
Pansenen Threadstarter
Hält's aus hier
Beiträge: 15


D 7
BeitragVerfasst: So 28.08.05 16:57 
Thx für die schnelle und gute Antwort
Thema erledigt