Vieles würde sich erschlagen, wenn du wie ich oben schon schrieb, eine Enumeration nimmst:
Delphi-Quellcode:
type
Te_points = (tp0, tp15, tp30, tp40, tp40a);
{...}
var
pnt_a: Te_points;
// kein integer... dadurch bläht es so auf!
{...}
pnt_a := tp0;
// initialisieren
Inc(pnt_a);
// pnt_a hat jetzt den Status tp15
pnt_a := tp40a;
// initialisieren
Dec(pnt_a);
// pnt_a hat jetzt den Status tp40
Was das A angeht, würde ich ein constantes Array mit den Ausgabewerten definieren:
Delphi-Quellcode:
const
_tearr_points : array of string = ('0', '15', '30', '40', 'A');
{...}
Zugriff über z.B.:
string_a := _tearr_points[ord(pnt_a)];
zu 4.: Wenn ein Spieler bei tp40a oder tp40 steht und einen Punkt bekommt ist das Spiel abgeschlossen. Entsprechend kannst du guten gewissens die werte wieder auf tp0 setzen und der in der Logik nächst höheren Klasse (Satz) mitteilen, wer denn denn das Spiel gutgeschrieben bekommt. Wichtig ist, dass du dir merkst, wer im Ballbesitz ist!
zu 3.: Ich würde eine Zeichenklasse baun, die das auf ein Canvas(oder was auch immer) ausgibt. Diese Klasse kannst du ja beim erzeugen der Instanzen an jene jeweils immer weiter geben. Somit gibt jede Logik-Klasse der Zeichenklasse die Infos, was sich denn geändert hat.
Edit: mh... ich hab mal den Anfang gemacht und das ein wenig strukturiert... mit bisschen Struktur wird es immer weniger aufgebläht
Siehe Anhang. Evtl. kannst du darauf ja aufbaun