type
TTennisPunkte = (tp0 = 0, tp15 = 15, tp30 = 30, tp40 = 45, tpA = 60);
// in 15er Schritten, da es programmintern evt. besser zu handhaben ist
PTennisSpieler = ^TTennisSpieler;
TTennisSpieler =
record
Punkte: TTennisPunkte;
Aufschlag: Boolean;
{...}
end;
function istBreakBall(SpielerA, SpielerB: TTennisSpieler): Boolean;
{ Zitat
Breakball ist immer, wenn der Aufschlagsempfänder 40 Punkte oder Vorteil hat
und der Aufschlagende weniger Punkte als der andere hat. Bei 0 - 40 hätte
man zum Beispiel 3 Breakballe, weil man 3 mal die Chance hat mit dem
nächsten Punkt das Spiel zu gewinnen.
}
var
Aufschlagender, AufschlagEmpfänger: PTennisSpieler;
begin
if not (SpielerA.Aufschlag
xor SpielerB.Aufschlag)
then
raise Exception.Create('
Ungültige Aufschlagsituation.');
if SpielerA.Aufschlag
then
begin
Aufschlagender := @SpielerA;
AufschlagEmpfänger := @SpielerB;
end else
begin
Aufschlagender := @SpielerB;
AufschlagEmpfänger := @SpielerA;
end;
Result := (AufschlagEmpfänger.Punkte >= tp40)
and (Aufschlagender.Punkte < AufschlagEmpfänger.Punkte);
end;