Thema: Delphi Spielplan erzeugen?

Einzelnen Beitrag anzeigen

Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#7

Re: Spielplan erzeugen?

  Alt 20. Sep 2007, 21:34
Ich hab mir den Code mal angesehen und analysiert. Kann sein, dass ich manche Sachen falsch eingeschätzt habe, weil ich das ganze nur mal im Kopf durchgespielt habe. Hinzu kommt noch, dass ich nicht weiß, was partiek ist. Und von Spielplänen hab ich keine Ahnung -.-'

Trotzdem hab ich dir ein paar Kommentare in den Source geschrieben und an manchen Stellen etwas gekürzt. Vielleicht hilft dir das ja, den Fehler zu finden.

Delphi-Quellcode:
for k := 1 to 12 do
begin
  repeat
    // gleich wird initialisiert: das ist wichtig, hast du allerdings bei einigen
    // variablen vergessen, was zu fatalen folgen führen kann
    gleich := false;
    // Zufällige Mannschaft ermitteln
    x := random(4)+1;
    // In aktuelle Partie Heimmannschaft eintragen
    partie[k].heim := teams[x];

    // -> y muss entweder 0 sein oder die Zufallszahlx, also die Heimmannschaft.
    // Das hieße, die Auswärtsmannschaft muss entweder die Manschaft mit Index 0
    // oder die Heimmannschaft sein
    // Macht das Sinn?! o_O
    while (y=0) or (y=x) do // Achtung, y ist nicht initialisiert!
    begin
      y := random(4)+1; // Hier wird die Zufallszahl ermittelt, die eh nur
                        // 0 oder x sein darf!
      partie[k].auswaerts := teams[y]; // Wert wird eingetragen: das sollte man
                                       // lieber nach der Schleife machen
    end;
    // Hier werden die beiden Zahlen x und y aneinandergefügt, jedoch nicht addiert
    // Soll das so sein??
    partiek[k] := strtoint(inttostr(x)+inttostr(y));
    // Solange i kleiner ist als der Index der aktuellen Partie UND
    // partiek[k] nicht das gleiche ist wie partiek[i]
    // Frage: was ist partiek?
    // ACHTUNG: i ist nicht initialisiert
    // Es kann sehr gut sein, dass diese schleife NIE durchlaufen wird!
    while (i<k) and (not gleich) do
    begin
      gleich := (partiek[k]) = (partiek[i]); // hab das mal gekürzt
      inc(i);
    end;
  until not gleich; // bin mir nicht sicher, ob dieser Vergleich Sinn macht...
                    // Du prüfst hier im Endeffekt, ob das item partiek[k]
                    // sich von pariek[i] unterscheidet.
end;
  Mit Zitat antworten Zitat