AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Roulette

Ein Thema von galoru · begonnen am 8. Apr 2013 · letzter Beitrag vom 27. Apr 2013
Antwort Antwort
Seite 2 von 3     12 3      
Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#11

AW: Roulette

  Alt 8. Apr 2013, 21:19
Hierbei: If Edit3.text=IntTostr(1 or 3 or 5 or 7 or 9 or 12 or 14 or 16 or 18 or 19 or 21 or 23 or 25 or 27 or 30 or 32 or 34 or 36) then arbeitet das "or" nicht wie du aus dem sprachlichen Gebrauch her vermutest. Es wird hier ein Bei Google suchenlogisches Oder auf Zahlen angewendet, und du hast dort im Grunde eigentlich dieses hier stehen: If Edit3.text=IntTostr(63) then . (63 ist das Ergebnis von 1 or 3 or 5 or...)

Wenn du anders herum umwandelst wird es deutlich einfacher, vorausgesetzt ihr dürft ein sogenanntes "Set" benutzen: if StrToInt(Edit3.Text) in [1, 3, 5, 7, 9, 12, 14, 16, 18, 19, 21, 23, 25, 27, 30, 32, 34, 36] then Das wäre die bei weitem einfachste Variante. Der lange und hässliche Weg könnte (angedeutet) so aussehen:
Delphi-Quellcode:
var
  geworfen: Integer;
begin
// würfel code hier, Ergebnis in "geworfen" speichern
if (geworfen = 1)
  or (geworfen = 3)
  or (geworfen = 5)
  or (geworfen = 7)
  or ...
  ...
  ...
then
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
galoru

Registriert seit: 12. Okt 2011
27 Beiträge
 
#12

AW: Roulette

  Alt 8. Apr 2013, 21:26
Ich habe es mit deiner Variante gemacht und es klappt wunderbar, danke dafür! Wenn ich nun einmal gewinne zeigt er mir den richtigen Kontostand an, aber wenn ich direkt danach nochmal gewinne ändert sich nichts.Der alte Kontostand bleibt erhalten. Warum ?
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#13

AW: Roulette

  Alt 9. Apr 2013, 00:14
Ein ganz heisser Tipp:
beim Roulette gibt es verschiedene Gewinnchancen (Zahl, rot/schwarz, pair/impair, mangue/passe, 1-3 Douzaines, ...)

Für jede dieser Gewinnchancen solltest du eine eigene Funktion schreiben:
Delphi-Quellcode:
function IstManque(zahl:integer):Boolean;
begin
  if (zahl >= 1) and (zahl <= 18) then
    result := True
  else
    result := False;

  // Verdichtet kann man das auch so schreiben
  Result := ((zahl >= 1) and (zahl <= 18));
end;

function IstPasse(zahl:integer):Boolean;
begin
  if (zahl >= 19) and (zahl <= 36) then
    result := True
  else
    result := False;
end;

function IstRot(zahl:integer):Boolean;
begin
  // selbermachen
end;
Mit diesen kleinen netten Funktionen wird die Auswertung viel leichter!
  Mit Zitat antworten Zitat
galoru

Registriert seit: 12. Okt 2011
27 Beiträge
 
#14

AW: Roulette

  Alt 9. Apr 2013, 05:48
Irgendjemand der mir weiterhelfen kann? Oder soll ich mein Problem nochmal erklären? Ich habe ja verschiedene Buttons für die unterschiedlichen Spielmöglichkeiten. Ich habe z.B den Button Rouge, ich setze also auf eine rote Zahl. Wenn ich nun auf den Button tippe und eine Zahl generiert die rot ist, gewinne ich ja und mein Konto erhöht sich. Tippe ich danach nochmal auf den Button und gewinne, bleibt das Konto unverändert.

Geändert von galoru ( 9. Apr 2013 um 05:53 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#15

AW: Roulette

  Alt 9. Apr 2013, 06:46
Wenn der Code noch der ist der er war trägst Du das Ergebnis ein statt es zu addieren.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.733 Beiträge
 
Delphi 6 Enterprise
 
#16

AW: Roulette

  Alt 9. Apr 2013, 08:43
Vielleicht wäre es auch sinnvoll das "Konto" als variable zu speichern.
Vor einem Spiel wird der Einsatz davon abgezogen, passiert derzeit nicht, und es könnte auch geprüft werden, ob überhaupt noch genug Geld zum Einsetzen vorhanden ist.
Nach dem Spiel wird dann der evtl. Gewinn dem Konto zugerchnet und der aktualisierte Wert der variablen im entsprechenden Edit angezeigt.

Ansonsten solltest du vllt. über den Ansatz von sx2008 nachdenken und die Aufgabe in viele kleine Funktionen zerteilen.
Ralph
  Mit Zitat antworten Zitat
galoru

Registriert seit: 12. Okt 2011
27 Beiträge
 
#17

AW: Roulette

  Alt 9. Apr 2013, 13:35
Sorry für den Doppelpost, bin zu blöd

Geändert von galoru ( 9. Apr 2013 um 13:40 Uhr)
  Mit Zitat antworten Zitat
galoru

Registriert seit: 12. Okt 2011
27 Beiträge
 
#18

AW: Roulette

  Alt 9. Apr 2013, 13:36
Danke für die Tipps; die einzelnen Funktionen mit den Editfenstern klappen alle, d.h. wenn gewinne ändert sich der wert,gewinne ich nochmal, ändert sich der wert nochmal. Jetzt habe ich versucht die Editfenster durch Labelfenster zu ersetzen; das Edit in dem die zufällige Zahl ausgegeben wird zu einem Label und der aktuelle Kontostand auch. Wenn ich dann mehrmals nacheinander gewinne, verändert sich am Konto nichts.
Mit Edit:
Code:
x:= strtoint(Edit1.text);
y:= strtoint(Edit2.text);
randomize;
Edit3.text:=IntToStr(random(37));

If strtoint(Edit3.text)in[0,1, 3, 5, 7, 9, 12, 14, 16, 18, 19,
21, 23, 25, 27, 30, 32, 34, 36] then
Edit2.Text:=inttostr(y+x)else
Edit2.text:=inttostr(0);

If Edit3.text=IntTostr(0) then
Edit2.Text:=inttostr(x div 2);
Mit Label:
Code:
x:= strtoint(Edit1.text);
Label41.caption:=inttostr(y);
randomize;
Label47.caption:=IntToStr(random(37));

If strtoint(Label47.caption)in[1, 3, 5, 7, 9, 12, 14, 16, 18, 19,
21, 23, 25, 27, 30, 32, 34, 36] then
Label41.caption:=inttostr(y+x)else
Label41.caption:=inttostr(0);

If Label47.caption=IntTostr(0) then
Label41.caption:=inttostr(x div 2);
Wieso bleibt das Labelfenster unverändert?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#19

AW: Roulette

  Alt 9. Apr 2013, 13:44
Steigst Du da noch durch? Hast Du auch das richtige Label erwischt, oder sollte es eher Label63 oder gar Label74 sein? Was ich meine: benenne Deine Komponenten ordentlich, so dass man aus dem Bezeichner schon schließen kann, was sie darstellen. Apropos darstellen: noch besser wäre es, die Komponenten tatsächlich zur reinen Darstellung zu benutzen und nicht als Datenspeicher. Mal ein Beispiel zur Gegenüberstellung:
Delphi-Quellcode:
procedure TDeinForm.Division;
begin
  lblErgebnis.Caption := IntToStr(StrToInt(lblZahl1.Caption) div StrToInt(lblZahl2.Caption));
end;

procedure TDeinForm.Division2;
var
  Ergebnis: integer;
begin
  Ergebnis := FZahl1 div FZahl2; //private Integer-Felder des Formulars
  lblErgebnis.Caption := IntToStr(Ergebnis);
end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#20

AW: Roulette

  Alt 9. Apr 2013, 14:53
Ich würde das ganze mit einem Record erschlagen
Delphi-Quellcode:
  tRouletteRec = record
     Zahl : word;
     PI : TPairImpair;
     RN : TRougeNoir { Grün nicht vergessen }
     ...
  end;

var
  ra: array [0..36] of tRouletteRec;
Im Initialisierungsteil werden alle Werte gesetzt und nach dem Würfeln wird dann ausgelesen was geworfen wurde.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 01:34 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