Ich würd eine Funktion in jeweils der Match, Satz und Spielklasse machen...
sowas wie:
Delphi-Quellcode:
{...}
function TMatch.SetPoint(player,point: integer);
begin
actSet.SetPoint(player,point);
// wenn Satz beendet eröffne neues Match bzw. beende Match
end;
function TSet.SetPoint(player,point: integer);
begin
actGame.SetPoint(player,point);
// wenn Spiel beendet eröffne neues Spiel, beende Satz oder gehe in den Tiebreak-Modus
end;
function TGame.SetPoint(player,point: integer)
begin
// wenn player = 1
// wenn point > 0 erhoehe Spieler1
// wenn point < 0 senke Spieler1
// sonst
// wenn point > 0 erhoehe Spieler2
// wenn point < 0 senke Spieler2
// evtl. umstellen wer gerade Vorteil hat
end;
{...}
Edit: evtl. Lohnt es sich von TPersistent abzuleiten... damit könntest du die einzelnen Sachen für Undo's in Streams ablegen...