Einzelnen Beitrag anzeigen

alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#8

Re: Zählsystem für Tennis entwickeln

  Alt 23. Sep 2007, 09:08
Das stimmt aber so nicht, denn wenn ein Spieler 'tp40a' Punkte hat, under andere auch, dann ist bei dem Gewinn eines weiteren Punktes ja noch lange nicht schluss. Ich würde die Punkte einfach addieren (Punkte = Integer, wieso nicht?), und nur die Ausgabe (Visualisierung) dem im Tennis üblichen Gehopse von 0 auf 15 auf 30 auf 40 etc. anpassen, etwa so:

Delphi-Quellcode:
Function ShowPoints (aPointsA, aPointsB : Integer) : String;
Var
  sScoreA, sScoreB : String;

  Function Score (aPoints : Integer) : String;
  Begin
    Case aPoints Of
      0 : Result := '0';
      1 : Result := '15';
      2 : Result := '30';
      3 : Result := '40';
      else Result :='Advantage'
    End;
  End;

Begin
  sScoreA := Score (aPointsA);
  sScoreB := Score (aPointsB);
  Case max (aPointsA, aPointsB) Of
    0,1,2,3 :
      Result sScoreA+':'sScoreB
    Else
      If Abs (aPointsA-aPointsB)>1 Then // Jemand gewinnt
        If aPointsA>aPointsB Then
          Result := 'Spieler A gewinnt'
        else
          Result := 'Spieler B gewinnt'
      else If aPointsA>aPointsB Then
        Result := sScoreA+' A'
     else
        Result := sScoreA+' B'
   End
End;

Function IsAWin (aPointsA, aPointsB : Integer) : Boolean;
Begin
  Result := (Max (aPointsA, aPointsB)>3) And (Abs (aPointsA-aPointsB)>1)
End;
Gewonnen hat der, der zuerst mehr als 3 Punkte gemacht und dabei mindestens 2 Punkte mehr als der Gegner hat.

Der Nachteil einer Enumeration ist ja der, das man beim Stand von 'tp45A' nicht weiter erhöhen kann. Das muss aber möglich sein, denn viele Spiele sind hart umkämpft...
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat