Entwickler-Ecke
Algorithmen, Optimierung und Assembler - Spielplan: "Spieler1 vs Spieler2", "Spieler3
Pansenen - So 28.08.05 13:52
Titel: Spielplan: "Spieler1 vs Spieler2", "Spieler3
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
Tino: Titel geändert.
Tino - 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 - 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 - So 28.08.05 16:25
Du kannst sowas machen:
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..6, 1..6] of 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 ;-)
Pansenen - So 28.08.05 16:57
Thx für die schnelle und gute Antwort
Thema erledigt
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!