Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Es ist so einfach komme aber nich drauf - Wert addieren ... (https://www.delphipraxis.net/104067-es-ist-so-einfach-komme-aber-nich-drauf-wert-addieren.html)

dual 26. Nov 2007 22:28


Es ist so einfach komme aber nich drauf - Wert addieren ...
 
Hi, mache gerade ein Delphi Programm (Roulette).

Jetzt hab ich ein Edit Fenster wo ich die Summe eingebe die auf mein "Konto" geladen werden soll.
Dann hab ich ein Panel wo mein Kontostand angzeigt wird.

Nun wenn ich einen Gewinn erziele (g1 ist also >0) dann soll dies zum eingelesen Edit Wert addiert werden (dieser Wert heißt "einsatz").
Jedoch hab ich immer das Problem, sobald ich den Button drücke, das meine Panel wieder den Wert von Edit1 einliest d.h. wenn ich am anfang 500 eingebe addiert er nich den Gewinn (z.B. 15) hinzu sondern zeigt wieder 500 an.

Also wo liegt der Fehler ?

[edit=Phoenix].NET -> Win32 geändert. Mfg, Phoenix[/edit]

fLaSh11 26. Nov 2007 22:31

Re: Es ist so einfach komme aber nich drauf - Wert addieren
 
Wenn du uns mal den Codeschnipsel reinstellst, mit dem du die genannte Aktion ausführtst, könnten wir dir evtl helfen. :wiejetzt:

oldmax 27. Nov 2007 05:28

Re: Es ist so einfach komme aber nich drauf - Wert addieren
 
Hi
Nun, es geht auch ohne Codeschnipsel, glaub ich. Zuerst muß dir klar sein, was dein Konto und was dein Einsatz ist.
ok, also Einsatz wird vom Konto abgebucht und in Feld Einsat geschrieben. Da die Felder mit Text, also Strings gefüllt sind, du aber mit Zahlen (Real ) rechnest, mußt du umwandeln.
Von String nach Real => StrToFloat(String)
Von Real nach String=>FormatFloat('#0.00',Float)
Hinweise dazu findest du in der Hilfe.
Vorgehensweise für Einsatz:
Konto = Konto - Einsatz
bei Verloren ist einsatz weg und du setzt neuen Einsatz
bei Gewinn
Konto = konto +(Einsatz*Gewinnfaktor)

Ich hab hier keine Delphi-Codes geschrieben und auf Wandlung jeglicher Art verzichtet. Dies dürfte aber kein Problem sein, oder ?
Gruß oldmax

dual 27. Nov 2007 18:31

Re: Es ist so einfach komme aber nich drauf - Wert addieren
 
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var kkeinsatz1, kkeinsatz2, keinsatz1, keinsatz2, einsatz1, einsatz2, x, y1, y2, g1, g2, a, b :integer;
begin
randomize;

keinsatz1 := strtoint(edit3.text);
keinsatz1 := strtoint(edit4.text);

einsatz1 := strtoint(edit1.text);
einsatz2 := strtoint(edit2.text);

x:=random(36);
Panel3.Caption:=inttostr(x);

begin
if combobox1.Text='Zero' then y1:=0;
if combobox1.Text='Rot' then y1:=1;
if combobox1.Text='Schwarz' then y1:=2;
if combobox1.Text='1 Dutzend' then y1:=3;
if combobox1.Text='2 Dutzend' then y1:=4;
if combobox1.Text='3 Dutzend' then y1:=5

end;

begin
if combobox2.Text='Zero' then y2:=0;
if combobox2.Text='Rot' then y2:=1;
if combobox2.Text='Schwarz' then y2:=2;
if combobox2.Text='1 Dutzend' then y2:=3;
if combobox2.Text='2 Dutzend' then y2:=4;
if combobox2.Text='3 Dutzend' then y2:=5

end;

if (y1=0) and (x in [0]) then
   begin
    g1:=einsatz1*36;
    showmessage('Zero gewinnt!');
  end;

if (y1=1) and (x in [1,3,5,7,9,11,13,15,17,19,21,23,25,27]) then
   begin
    g1:=einsatz1*1;
    showmessage('Rot gewinnt!');
  end;

if (y1=2) and (x in [2,4,6,8,10,12,14,16,18,20,22,24,26]) then
   begin
    g1:=einsatz1*1;
    showmessage('Schwarz gewinnt!');
  end;

if (y1=3) and (x in [1..12]) then
   begin
    g1:=einsatz1*2;
    showmessage('1 Dutzend gewinnt!');
  end;

if (y1=4) and (x in [13..24]) then
   begin
    g1:=einsatz1*2;
    showmessage('2 Dutzend gewinnt!');
  end;

if (y1=5) and (x in [25..36]) then
   begin
    g1:=einsatz1*2;
    showmessage('3 Dutzend gewinnt!');

  end;









if (y2=0) and (x in [0]) then
   begin
    g2:=einsatz2*36;
    showmessage('Zero gewinnt!');
  end;

if (y2=1) and (x in [1,3,5,7,9,11,13,15,17,19,21,23,25,27]) then
   begin
    g2:=einsatz2*1;
    showmessage('Rot gewinnt!');
  end;

if (y2=2) and (x in [2,4,6,8,10,12,14,16,18,20,22,24,26]) then
   begin
    g2:=einsatz2*1;
    showmessage('Schwarz gewinnt!');
  end;

if (y2=3) and (x in [1..12]) then
   begin
    g2:=einsatz2*2;
    showmessage('1 Dutzend gewinnt!');
  end;

if (y2=4) and (x in [13..24]) then
   begin
    g2:=einsatz2*2;
    showmessage('2 Dutzend gewinnt!');
  end;

if (y2=5) and (x in [25..36]) then
   begin
    g2:=einsatz2*2;
    showmessage('3 Dutzend gewinnt!');
  end;

Panel1.Caption:=inttostr(g1);
Panel2.Caption:=inttostr(g2);





end;

end.
So das ist hier Zufallszahl+Zuordnung zu jeweiligen Gewinnfeld . Zuvor wird das Konto mit einem Betrag aufgeladen.
Drücke ich jetzt den Button so wird das Konto immer wieder , mit der am Anfang eingegebenen Summe, aufgefüllt.

Klaus01 27. Nov 2007 19:15

Re: Es ist so einfach komme aber nich drauf - Wert addieren
 
Guten Abend,

vielleicht so:

Delphi-Quellcode:
if (y2=4) and (x in [13..24]) then
   begin
    g2:=g2+einsatz2*2;
    showmessage('2 Dutzend gewinnt!');
  end;
Delphi-Quellcode:
var kkeinsatz1, kkeinsatz2, keinsatz1, keinsatz2, einsatz1, einsatz2, x, y1, y2, g1, g2, a, b :integer;
Ausserdem ist Dein g1 und g2 lokal deklariert, es gilt nur in der ButtonClick Routine.


Und randomize bitte nur einmal im Programm aufrufen, z.B. in der OnCreate Routine.

Grüße
Klaus

dual 27. Nov 2007 20:19

Re: Es ist so einfach komme aber nich drauf - Wert addieren
 
Ok jetzt klappt es schon besser aber ich will ja auch bei einen Verlust den Einsatz vom Konto abziehen aber da läuft es acuh schief ...

oldmax 28. Nov 2007 05:59

Re: Es ist so einfach komme aber nich drauf - Wert addieren
 
Hi
Nun, wie wäre es, wenn du mal über meinen Text chaust. Du brauchst ein Konto, also ein Editfeld Ed_Konto.Text;
Dann ein Editfeld ED_Einsatz.Text.
Nun Schreibst du in das Einsatzfeld deinen Einsatz. Beim onExit Ereignisziehst du den Einsatz vom Konto ab, du hast ja auf das Spielfeld gesetzt. Dieses onExit Ereignis wird bspw.ausgelöst, wenn du dein Button drückst, um die Zufallszahl zu bilden.
also :

Delphi-Quellcode:
Procedure TMyForm.Ed_EinsatzExit(Sender : TObject);
Var Betrag : Real;
Begin
  Betrag:=StrToFloat(ED_Konto.Text)-StrToFloat(Ed_Einsatz.Text);
  Ed_Konto.Text:=FormatFloat('#0.00',Betrag);
end;
Nun setzt du in deiner Spiel-Ergebnisberechnung den Gewinn auf die Gewinnsumme, d.h.

Delphi-Quellcode:
If gewonnen then Gewinn:=StrToFloat(Ed_Einsatz.Text)+StrToFloat(Ed_Einsatz.Text)*Gewinnstufe
else Gewinn:=0;
statt einer Boolean "gewonnen" wäre auch denkbar, die Gewinnstufe auf >0 abzufragen.

Nun brauchst du nur noch den Wert in Gewinn aufs Konto zu schreiben, also

Delphi-Quellcode:
Ed_Konto.Text:=FormatFloat('#0.00',StrToFloat(Ed_Konto.Text)+Gewinn);
fertig..........

aber nix anderes hab ich bereits geschrieben, nur nicht im Delphi-Code..
Ach ja, noch ein wenig zur Erleichterung. Nimm Variablennamen, die es dir ermöglichen, auch nach einem halben Jahr ihre Bedeutung zu erkennen, ohne gleich das gesammte Programm nachzuvollziehen. Bei den Editfeldern, wie auch bei anderen Objekten benutze ich eine Abkürzung wie z.B. "Ed_" bei TEdit und dann einen entsprechenden Namen. Auch übe ein wenig die Anwendung von Prozeduren oder Funktionen.
Bspw
Delphi-Quellcode:
Funktion TMyForm.EinSpiel(Einsatzfeld :String): Integer;
Var Kugel  : Integer;
    Stufe  : Integer;
Begin
  Stufe:=0;
  Kugel:=Random(nn); //nn ist die Anzahl der Felder
  Case Kugel of 1: If Einsatzfeld='1' then Stufe :=36; // oder so
                2: If Einsatzfeld='2' then Stufe :=36;  
                3: ......
                nn: ....
   end; // Case...
   Result :=Stufe;
end; // Function....
Setzen der Gewinnstufe erfolgt durch Aufruf der Function

Delphi-Quellcode:
Gewinnstufe:=Einspiel(Wert der Taste);
Wenn du für jedes Roulettfeld ein Button setzt, kannst du in der Ereignisroutine z.B. damit die Gewinnstufe setzen..

Das macht dein Programm übersichtlicher.
Gruß oldmax

dual 28. Nov 2007 17:05

Re: Es ist so einfach komme aber nich drauf - Wert addieren
 
wie kann ich den die neue Procedure "...Exist" eibinden ? Ich mein er meckert immer rum das er die nich kennt ... oder kommt die in meinen Button Prozess ?

DeddyH 28. Nov 2007 17:11

Re: Es ist so einfach komme aber nich drauf - Wert addieren
 
Das ist das Ereignis OnExit von Ed_Einsatz.

dual 28. Nov 2007 17:17

Re: Es ist so einfach komme aber nich drauf - Wert addieren
 
hmm dann raf ich es iwie net ... nochmal ne dau erklärung ?


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:04 Uhr.
Seite 1 von 2  1 2      

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-2025 by Thomas Breitkreuz