AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

nochmal n-maliges Würfeln

Ein Thema von General Wolf1 · begonnen am 4. Feb 2007 · letzter Beitrag vom 4. Feb 2007
Antwort Antwort
Seite 1 von 2  1 2   
General Wolf1

Registriert seit: 3. Feb 2007
Ort: Radebeul
16 Beiträge
 
#1

nochmal n-maliges Würfeln

  Alt 4. Feb 2007, 10:10
hihi muss nochmal nerven!
Hab da in meinem Programm immer noch ein Problem. Undzwar zählt der die Ergäbnisse nicht weiter sondern schreibt mir immer wieder nur 1 hin. kann mir mal einer sagen wie ich das mache das der auch bis 3 und mehr zählen kann!
Greez Dori
Hier mal NUR der Wichtige Teil aus meinem Quelltext
ganzes Projekt ist im Anhang!

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var a,b,c,d,e,f,g,h,i:Integer;
begin
a:=strtoint(Edit1.Text);
d:=0; e:=0; f:=0; g:=0; h:=0; i:=0;
randomize;

for b:= 1 to a
do
begin
c:=random(6)+1;
case c of
1:label16.Caption:=inttostr(d+1);//bei der Ausgabe gibt der mir immer nur 1 an!! Wieso?
2:label17.Caption:=inttostr(e+1);
3:label18.Caption:=inttostr(f+1);
4:label19.Caption:=inttostr(g+1);
5:label20.Caption:=inttostr(h+1);
6:label21.Caption:=inttostr(i+1);
end;
Kann mir auch mal einer verrraten wie ich in der case anweisung den Zahlen eine Variable zuordne. Das wäre vielleicht schon die lösung.

[edit=Jelly] Nächstes Mal die Delphi-Tags bitte einpflegen. Mfg, Jelly[/edit]
Angehängte Dateien
Dateityp: rar programm_n-w_rfeln_179.rar (131,6 KB, 7x aufgerufen)
General Wolf1 hat gesprochen*hihi*
  Mit Zitat antworten Zitat
dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#2

Re: nochmal n-maliges Würfeln

  Alt 4. Feb 2007, 10:12
und jetzt antworte ich auch noch in deinem 2ten threat^^
Zitat:
ähm... ich hab mir jetzt nicht das ganze projekt angeschaut aber:
Delphi-Quellcode:
// ...
d:=0; e:=0; f:=0; g:=0; h:=0; i:=0;
// ...
1:label16.Caption:=inttostr(d+1);//bei der Ausgabe gibt der mir immer nur 1 an!! Wieso?
// ...
d ist zuerst 0, und dann gibst du d+1 aus, also 1
edit: aahhh...und jetzt verstehe ich auch deinen denkfehler^^
bei dem befehl inttostr(d+1)wird einfach nur d+1 gerechnet und als string umgewandelt, dannach hat d jedoch immernoch den wert von vorher, also immernoch 0... wenn du d um eins erhöhen willst kannst du das mit d := d+1 oder einfach mit Inc(d) machen.
Dominik
  Mit Zitat antworten Zitat
Elicia

Registriert seit: 16. Jan 2007
Ort: Salzburg
19 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: nochmal n-maliges Würfeln

  Alt 4. Feb 2007, 10:20
Hi,

statt

1:label16.Caption:=inttostr(d+1);

probiere:
1:label6.Caption:=inttostr(d)+1;

d.h. du wandelst d in einen Integer um und addierst DANACH die 1 !

Gruß, Elicia

korrigiere nochmal:

case c of
1:d := d+1; // oder einfacher: inc(d)
2:e := e+1);

NACH der for-Schleife gibst du dann der Reihe nach d, e usw. mit IntToStr in den Labels aus!
  Mit Zitat antworten Zitat
General Wolf1

Registriert seit: 3. Feb 2007
Ort: Radebeul
16 Beiträge
 
#4

Re: nochmal n-maliges Würfeln

  Alt 4. Feb 2007, 10:22
ist ja richtig aber der wenn ich den 20 mal würfeln lasse müssten mindestens2 Zahlen mehrmals auftreten!
Also müsste der weiterzählen! z.b.: 1 wurde 3mal und die 2 würde 5mal usw. gewürfelt!
Und mein problem ist das der nicht über die 1 hinausgeht!
Wäre nett wenn mir da jemand helfen könnte!
>>??Was ist so schlimm daran das ich noch ein neues thema gemacht habe??<<
General Wolf1 hat gesprochen*hihi*
  Mit Zitat antworten Zitat
General Wolf1

Registriert seit: 3. Feb 2007
Ort: Radebeul
16 Beiträge
 
#5

Re: nochmal n-maliges Würfeln

  Alt 4. Feb 2007, 10:23
statt

1:label16.Caption:=inttostr(d+1);

probiere:
1:label6.Caption:=inttostr(d)+1;

d.h. du wandelst d in einen Integer um und addierst DANACH die 1 !

>>Hab ich auch schon probiert --> Bringt mir eine Fehlermeldung
General Wolf1 hat gesprochen*hihi*
  Mit Zitat antworten Zitat
Thorben_K

Registriert seit: 22. Okt 2006
Ort: Darmstadt
105 Beiträge
 
Delphi 2006 Professional
 
#6

Re: nochmal n-maliges Würfeln

  Alt 4. Feb 2007, 10:26
Zitat von Elicia:
Hi,

statt

1:label16.Caption:=inttostr(d+1);

probiere:
1:label6.Caption:=inttostr(d)+1;

d.h. du wandelst d in einen Integer um und addierst DANACH die 1 !

Gruß, Elicia
ich weiss nicht wie du das anstellen willst, du kannst doch einem String nicht die Zahl 1 addieren.... So geht das auf keinen fall.
Delphi-Quellcode:

procedure TForm1.Button1Click(Sender: TObject);
var a,b,c,d,e,f,g,h,i:Integer;
begin
a:=strtoint(Edit1.Text);
d:=0; e:=0; f:=0; g:=0; h:=0; i:=0;
randomize;

for b:= 1 to a
do
begin
c:=random(6)+1;
case c of
1:
  Begin
  Inc(d);
  abel16.Caption:=inttostr(d);//bei der Ausgabe gibt der mir immer nur 1 an!! Wieso?
  end;
2: ... //usw

end;
so machst du das halt mit allen Variablen, bin zu faul alles nun auszuschreiben

PS: Mit einem array wäre das alles viel einfacher..
Thorben
  Mit Zitat antworten Zitat
General Wolf1

Registriert seit: 3. Feb 2007
Ort: Radebeul
16 Beiträge
 
#7

Re: nochmal n-maliges Würfeln

  Alt 4. Feb 2007, 10:32
GOIL
Danke an >>dominikkv<<
Jetzt funzt es!!
Ist ja richtig geil!! Danke*hihi*
>>ACH ja und danke an alle anderen die so fleißig geposted haben und mein generve ertragen haben<<
Ich stell Später noch das funzende Projekt rein!!
DA KANN SICH JEDER AN EINEM N-MALIGEN WÜRFEL ERFREUEN!!!
braucht keiner ist aber geil!!!
Greez Dori
General Wolf1 hat gesprochen*hihi*
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.288 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: nochmal n-maliges Würfeln

  Alt 4. Feb 2007, 10:37
Die Labels müssen auch vor jedem Würfeln am Anfang gelöscht werden, da sonst der Wert vom letzten Würfeln stehen bleibt, wenn eine Augenzahl nicht gewürfelt wird (weil die Labels ja nur in case aktualisiert werden).

Es wäre aber sinnvoller das mit einem Array und FindComponent zu machen anstatt die Labels direkt anzusprechen...
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  WurfListe: array[1..6] of Integer;
  WurfAnzahl, i, AktuellerWert: Integer;
begin
  WurfAnzahl := StrToInt(Edit1.Text);
    // Anzahl der gewünschten Würfe
  for i := 1 to 6 do
  begin
    WurfListe[i] := 0;
      // Anzahl zunächst jeweils 0 bei jeder Augenzahl
    TLabel(FindComponent('Label' + IntToStr(15 + i))).Caption := '0';
      // Die Labels auf 0 als Startwert setzen.
      // Wenn sonst nämlich eine Augenzahl gar nicht vorkommt bleibt der Wert
      // vom vorherigen Würfeln drin... ;-)
  end;

  Randomize;

  for i := 1 to WurfAnzahl do
  begin
    AktuellerWert := Random(6) + 1;
      // Zufallswert holen
    Inc(WurfListe[AktuellerWert]);
      // Im Array bei der entsprechenden Augenzahl 1 hinzufügen
    TLabel(FindComponent('Label' + IntToStr(15 + AktuellerWert))).Caption :=
      IntToStr(WurfListe[AktuellerWert]);
      // Und den Label (16 bis 21) aktualisieren
  end;
end;
Sebastian Jänicke
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#9

Re: nochmal n-maliges Würfeln

  Alt 4. Feb 2007, 10:41
1.: Achtung: Du musst die Variablen global deklarieren! Ansonsten "verschwinden" die nachdem man einmal auf den Button geklickt hat!
2.: Delphicode immer in
Code:
[delphi]<Der Code>[/delphi]
Schreiben
3.: "IntToStr(d) + 1" kann nicht funktionieren, weil man zu einen String nicht "1" addieren kann! Es muss eher so gehen wie oben beschrieben:
Delphi-Quellcode:
case c of
  1 : begin
    ind(d); // d um eins erhöhen
    label16.Caption := IntToStr(d);
  end;
  ...
end;
4.: Man könnte sich die Variable c sparen! Du kannst direkt case Random(6) of schreiben, und dann auf 0 bis 5 prüfen!
5.: ggf. Könntest du auch mit arrays arbeiten Vorteil: Der Case-Teil entfällt (Eine kleine Erklärung zu Arrays und auf DSDT)

PS: @ 1.: OOPs... Es sieht so aus, als bräuchte man es nicht ^^
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Thorben_K

Registriert seit: 22. Okt 2006
Ort: Darmstadt
105 Beiträge
 
Delphi 2006 Professional
 
#10

Re: nochmal n-maliges Würfeln

  Alt 4. Feb 2007, 10:44
Altanative ginge auch noch

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  zahlen : array[1..6] of LongInt;
  wurf, i, count : LongInt;
  Comp : TComponent;
begin

  randomize;
  count := StrToInt(Edit1.Text);
  for i := 1 to 6 do
    zahlen[i] := 0;
  for i := 0 to count -1 do
  begin
    wurf := Random(6) +1;
    Inc(zahlen[wurf]);
  end;

  for i := 1 to 6 do
  begin
    comp := FindComponent('Label'+ IntToStr(i));
   (Comp as TLabel).Caption := IntToStr(zahlen[i]);
  end;
end;
so ist es meiner bescheidenen Meinung nach einfach

gruss Thorben

EDIT: Oh da hatte wohl jemand die selbe Idee, das gut, das sagt mit das die idee gar net so schlecht ist
Thorben
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

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:24 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