Einzelnen Beitrag anzeigen

torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#6

Re: Zählsystem für Tennis entwickeln

  Alt 22. Sep 2007, 18:48
Ok, ich habe mir noch ein paar Gedanken gemacht und die SetPoint erweitert, nachdem ich mir in der Hilfe inc/dec nochmals angesehen habe. Das ist zwar jetzt noch nicht die Endversion, aber ein Zählen von 0 -40 und andersrum ist nun drin. 4 Probleme/Fragen habe ich derzeit. Sicher nicht die letzten.

1. Ich habe noch nicht herausgefunden, wie ich das mit dem Vorteil lösen soll, da ja die Punkte in den Variablen akt_point_a und akt_point_b, welche vom Typ her integer sind, geschrieben und auch hochgezählt werden. Also wie soll ich da ein A für Vorteil reinschreiben, bzw. wie kann ich das händeln?

2. Den Code finde ich schon jetzt ziemlich aufgebläht. Geht das auch anders? Ich denke meist nach Schema F und würde gern über den Tellerrand hinausblicken.

3. Ich würde gern das Befüllen der Controls, den die Inhalte sollen ja dann dem Programm auch sichtbar zugeführt werden, bzw. rausgeschickt werden, extra abhandeln. Anwelcher Stelle würdet Ihr das zentral lösen? Zur Zeit tue ich dies per DUmmy mit dem Showmessage am Ende von SetPoint, aber eigentlich kanns das nicht sein, weil ich diese Routine auch in Richtung SetGame verlassen muss, wenn ein Spieler mit dem aktuell gewonnenen Punkt ein Spiel gewonnen hat.

4. Desweiteren müsste ich dann nachdem ich ein gewonnenes Spiel erkannt habe akt_point_a und akt_point_b wieder auf 0 zurücksetzen. Sollte das in Setpoint geschehen oder besser in SetGame, respektive SetSetWin (gibts noch nicht)...

Hier mein Code von SetPoint:
Delphi-Quellcode:
function SetPoint(player,point: integer):boolean;
var
  n : integer;
begin
  // wenn player = 1
  case player of
    1 : begin
          // wenn point > 0 erhoehe Spieler1
          if point > 0 then
            begin
              //festlegen, um wieviel ge-inc-t wird
              case akt_points_a of
                0,15 : n := 15;
                30,40 : n := 10;
                else exit;
              end;
              inc(akt_points_a,n);
            end;
          // wenn point < 0 senke Spieler1
          if point < 1 then
            begin
              //festlegen, um wieviel ge-dec-t wird
              case akt_points_a of
                15,30 : n := 15;
                40 : n := 10;
                else exit;
              end;
              dec(akt_points_a,n);
            end;
        end;
    2 : begin
          // wenn point > 0 erhoehe Spieler2
          if point > 0 then
            begin
              //festlegen, um wieviel ge-inc-t wird
              case akt_points_b of
                0,15 : n := 15;
                30,40 : n := 10;
                else exit;
              end;
              inc(akt_points_b,n);
            end;
          // wenn point < 0 senke Spieler2
          if point < 1 then
            begin
              //festlegen, um wieviel ge-dec-t wird
              case akt_points_b of
                15,30 : n := 15;
                40 : n := 10;
                else exit;
              end;
              dec(akt_points_b,n);
            end;
        end;
  end;
  showmessage(inttostr(akt_points_a));
end;
Danke
Tom
  Mit Zitat antworten Zitat