AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Herausfinden ob Breakpoint ist oder nicht - Wie?

Herausfinden ob Breakpoint ist oder nicht - Wie?

Ein Thema von torud · begonnen am 13. Jun 2012 · letzter Beitrag vom 18. Jun 2012
Antwort Antwort
torud

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

AW: Herausfinden ob Breakpoint ist oder nicht - Wie?

  Alt 13. Jun 2012, 12:17
Ich hatte vermutet, dass so was hier aus SInn machen könnte:

TMatchStatus = (p0, p15, p30, p40, pA); Aber wenn ich´s wüsste, hätte ich nicht gefragt.
Danke
Tom
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#2

AW: Herausfinden ob Breakpoint ist oder nicht - Wie?

  Alt 13. Jun 2012, 14:58
Nur aus Neugier:
Wenn einer Breakball hat, jedoch die Runde verliert, ists dann (sozusagen) wieder Gleichstand? Dh. kann man nur gewinnen, wenn man bei einem Breakball punktet?

A - B - (* Breakball)
30 - 40* - B punktet, gewinnt Match/Runde
30 - 40* - A punktet -> neuer Stand:
40 - 40 - A punktet nochmal -> ...
40* - 40 - entweder A punktet und gewinnt oder B punktet (neuer Stand
40 - 40

läuft das so ständig hin und her?
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG

Geändert von Aphton (13. Jun 2012 um 15:40 Uhr)
  Mit Zitat antworten Zitat
torud

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

AW: Herausfinden ob Breakpoint ist oder nicht - Wie?

  Alt 13. Jun 2012, 15:32
Hallo,

hier mal ein möglicher Verlauf:

* schlägt auf

A* - B
0 - 15 durch Punkt B
0 - 30 durch Punkt B
0 - 40 = 3BP durch Punkt B
15 - 40 = 2BP durch Punkt A
30 - 40 = 1BP durch Punkt A
40 - 40 = Einstand durch Punkt A
40 - A = Vorteil B = 1BP Punkt durch B
40 - 40 = Einstand nach Punkt durch A
A - 40 = Vorteil A nach Punkt A

Der Spielpunkt könnte vergeben werden, wenn B bei Breakball einen weiteren Punkt macht. Dann erhält B einen Spieltpunkt und die Gamepunkte werden wieder auf 0 resetet.
Der Spielpunkt kann auch vergeben werden, wenn A einen Punkt macht und es A - 40 steht. In dem Falle liegt aber keine Breakball vor, da ein BP nur der Aufschlagsemüfänger haben kann. Kann ein Aufschlagender Spieler einen Spielpunkt mit dem nächsten Punkt erringen, nennt man das Spielpunkt.

Der Wechsel von 40 - 40 nach A - 40 oder 40 - A kann ewig hin und her gehen. Solange, bis einer den entscheidenden Punkt macht.

Ein zu 0-Spiel würde so verlaufen.

Stand Spiele = 0-0

A schlägt auf
0 - 0 danach Punkt A
15 - 0 danach Punkt A
30 - 0 danach Punkt A
40 - 0 danach Punkt A

Stand Spiele = 1-0
aktueller Stand im nachfolgenden Spiel ist wieder 0-0
Danke
Tom
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#4

AW: Herausfinden ob Breakpoint ist oder nicht - Wie?

  Alt 13. Jun 2012, 15:46
Ok, glaube es verstanden zu haben. Liefere demnächst ein Codefetzen...
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

AW: Herausfinden ob Breakpoint ist oder nicht - Wie?

  Alt 13. Jun 2012, 15:52
Argh, hättest du das Wort Tennis nicht am Anfang gleich nennen können? Ich habe mich die ganze Zeit gefragt, von was du da überhaupt redest. Erst als du die Regeln erklärt hast, habe ich verstanden um was es eigentlich geht.

Sagt man bei 40:40 nicht eigentlich Deuce?

Aber lös dich doch mal von den krummen Punkten vom Tennis:

0 entspricht 0
15 entspricht 1
30 entspricht 2
40 entspricht 3

Steht es also 0:40 im Tennis hast du 0:3 -> 3-0=3 Breakpunkte.
steht es 15:40 im Tennis hast du 1:3 -> 3-1=2 Breakpunkte.

Wenn du jetzt den Datentyp Enum nimmst kannst du mit den Ordinalwerten der Einträge rechnen. So meine Idee. Eine konkrete Umsetzung mit Code kann ich dir leider nicht anbieten.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#6

AW: Herausfinden ob Breakpoint ist oder nicht - Wie?

  Alt 13. Jun 2012, 15:56
Delphi-Quellcode:
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;
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG

Geändert von Aphton (13. Jun 2012 um 16:01 Uhr)
  Mit Zitat antworten Zitat
torud

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

AW: Herausfinden ob Breakpoint ist oder nicht - Wie?

  Alt 14. Jun 2012, 13:30
Hallo,

und sorry für das späte Feedback!

Vielen Dank für Deine Mühe. Ich bau´s mal bei mir ein und teste es. Ich melde mich dann mit einem abschließenden Feedback.
Danke
Tom
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.326 Beiträge
 
Delphi 12 Athens
 
#8

AW: Herausfinden ob Breakpoint ist oder nicht - Wie?

  Alt 14. Jun 2012, 14:58
TTennisPunkte = (tp0 = 0, tp15 = 15, tp30 = 30, tp40 = 45, tpA = 60); // in 15er Schritten, da es programmintern evt. besser zu handhaben ist
Dann doch besser ohne Nummernwerte ... lieber "keine" Werte, als "falsche" Werte.

TTennisPunkte = (tp0, tp15, tp30, tp40, tpA);
PS: Bei ENUMs mit vordefinierten Werten gibt es keine Namen in der RTTI ... man kann sich sowas leider nie wieder in Strings umwandeln lassen
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#9

AW: Herausfinden ob Breakpoint ist oder nicht - Wie?

  Alt 15. Jun 2012, 15:23
Aha? Nun, ich bin immer den umständlichen Weg gegangen und habe es so gemacht:

Delphi-Quellcode:
type
  TTennisPunkte = (tp0 = 0, tp15 = 15, tp30 = 30, tp40 = 45, tpA = 60);

const
  strTennisPunkte: Array[TTennisPunkte] of String = ('0', '15', '30', '40', 'A');
Ist hässlich, jedoch ists kaum schöner mit RTTI (RTTI - sofern ich das richtig in Erinnerung habe - bläst sie ja die Echsen so auf..)
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz