Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Poker Blinds Timer (https://www.delphipraxis.net/152948-poker-blinds-timer.html)

Black360 14. Jul 2010 10:52

Poker Blinds Timer
 
Hey Leute,
ich heiß Black360 und bin noch neu in der Delphi-Programmierung.

Fakt ist, dass ich einen Poker Blinds Timer machen wollte:
Man gibt einen "SmallBlind" und einen "BigBlind" ein.
Dieser wird nach EINGEGEBENER ZEIT "verdoppelt".
Außerdem sollen "Runden" gezählt werden (also: if zeit=0 then round.caption+1 usw.)
Die Zeit soll mit "SpinEdit"-Boxen gewählt werden.
Einen für STUNDEN - einen für MINUTEN und einen für SEKUNDEN.

Wie bekomme ich nun die STUNDEN, MINUTEN und SEKUNDEN SpinEdit-Boxen realisiert, dass der TIMER "das" HERUNTERzählt?

ralfiii 14. Jul 2010 11:14

AW: Poker Blinds Timer
 
Zitat:

Zitat von Black360 (Beitrag 1035233)
Man gibt einen "SmallBlind" und einen "BigBlind" ein.
Dieser wird nach EINGEGEBENER ZEIT "verdoppelt".
Außerdem sollen "Runden" gezählt werden (also: if zeit=0 then round.caption+1 usw.)
Die Zeit soll mit "SpinEdit"-Boxen gewählt werden.
Einen für STUNDEN - einen für MINUTEN und einen für SEKUNDEN.

Wie bekomme ich nun die STUNDEN, MINUTEN und SEKUNDEN SpinEdit-Boxen realisiert, dass der TIMER "das" HERUNTERzählt?

Normal sollte es doch nur nötig sein den Blind einzugeben. Der small blind ist doch fix die Hälfte, oder?

Wandle die zeit doch einfach in Sekunden um (Std*60*60 + Min*60 + Sec), nimm einen TTimer, der einmal pro Sekunde feuert, zieh einfach immer 1 ab von der verbleibenden Zeit und bei Null verdoppelst du den Blind.

Round.Caption+1 wird's so nicht spielen, das eine ist ein String, das andere ein Integer (vielleicht mal "Delhi in 21Tagen" durchschmökern. Round.Caption:=IntToStr(StrToInt(Round.Caption)+1) ; sollte aber gehen.

Viel Spass beim probieren.

himitsu 14. Jul 2010 11:35

AW: Poker Blinds Timer
 
Zitat:

Zitat von ralfiii (Beitrag 1035235)
Wandle die zeit doch einfach in Sekunden um (Std*60*60 + Min*60 + Sec), nimm einen TTimer, der einmal pro Sekunde feuert, zieh einfach immer 1 ab von der verbleibenden Zeit ...

oder wenn Sekunden > 0, dann da 1 abziehen
wenn = 0, dann auf 59 setzen und von Minuten 1 abziehen

auch bei den Minuten beachten ... wenn >0, dann -1 und ansonsten auf 59 und von Stunden 1 abziehen

tja, und wenn stunden dabei >0, dann da -1 und ansonsten (also bei 0) ist die Zeit vorbei.

Black360 14. Jul 2010 11:54

AW: Poker Blinds Timer
 
Danke für eure Antworten ;)
Jedoch versteh ich teilweise nur Bahnhof.

Form1.Label_Countdown.Caption:=IntToStr(StrToInt(F orm2.SpinEdit_M.Text)-1);
if Form1.Label_Countdown.Caption='0' then
begin Form2.Timer1.Enabled:=False;
end;
if Form1.Label_Countdown.Caption='0' then
begin IntToStr(StrToInt(Form1.Label_Round.Caption)+1);
end;
if Form1.Label_Countdown.Caption='3' then
begin beep;
end;
if Form1.Label_Countdown.Caption='2' then
begin beep;
end;
if Form1.Label_Countdown.Caption='1' then
begin beep;
end;
if Form1.Label_Countdown.Caption='0' then
begin beep;
end;

Das hab ich bis jetzt.
Dabei bringe ich aber immernoch nicht die SpinEdit-Boxen in Verbindung.
SpinEdit_M ist die SpinEdit-Box MINUTEN - arbeitet aber als SEKUNDEN ?!?!!?
Ich kapier's irgendwie nicht :(

Hat jemand vllt. eine kleine Syntax-Idee?

ralfiii 14. Jul 2010 13:33

AW: Poker Blinds Timer
 
:-D
Hui, Dir fehlt da aber einiges.

So als Anstoss:

Kein Mensch hat Blind-Runden die eine Stunde dauern. Und dann:

Code:
  = class(TForm);
  private
    Rundendauer : integer;
    TimeRemaining : integer;
  ...
  end;

procedure xyz.StartButClick(Sender);
begin
  Rundendauer:= ... SpinEdit.Value oder StrToInt(ZeitEdit.Text);
  TimeRemaining:=Rundendauer;
  Timer1.Enabled:=True;
end;

procedure xyz.Timer1Timer(Sender);
begin
  Dec(TimeRemaining);
  if TimeRemaining<=3 then
     Beep;
  if TimeRemaining=0 then
  begin
    Blind:=Blind*2;
    BlindLabel:=IntToStr(Blind);
    TimeRemaining:=Rundendauer;
  end;
  lblTimeRemaining.Caption:=IntToStr(TimeRemaining div 60)+' : '+IntToStr(TimeRemaining mod 60);
end;
so in etwa


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:45 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz