![]() |
nochmal n-maliges Würfeln
Liste der Anhänge anzeigen (Anzahl: 1)
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:
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.
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; [edit=Jelly] Nächstes Mal die Delphi-Tags bitte einpflegen. Mfg, Jelly[/edit] |
Re: nochmal n-maliges Würfeln
und jetzt antworte ich auch noch in deinem 2ten threat^^
Zitat:
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. |
Re: nochmal n-maliges Würfeln
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! |
Re: nochmal n-maliges Würfeln
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??<< |
Re: nochmal n-maliges Würfeln
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 |
Re: nochmal n-maliges Würfeln
Zitat:
Delphi-Quellcode:
so machst du das halt mit allen Variablen, bin zu faul alles nun auszuschreiben :Dprocedure 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; PS: Mit einem array wäre das alles viel einfacher.. |
Re: nochmal n-maliges Würfeln
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 |
Re: nochmal n-maliges Würfeln
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; |
Re: nochmal n-maliges Würfeln
1.: Achtung: Du musst die Variablen global deklarieren! Ansonsten "verschwinden" die nachdem man einmal auf den Button geklickt hat!
2.: Delphicode immer in
Code:
Schreiben ;)
[delphi]<Der Code>[/delphi]
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:
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!
case c of
1 : begin ind(d); // d um eins erhöhen label16.Caption := IntToStr(d); end; ... end; 5.: ggf. Könntest du auch mit arrays arbeiten ;) Vorteil: Der Case-Teil entfällt :P (Eine kleine Erklärung zu ![]() ![]() PS: @ 1.: OOPs... Es sieht so aus, als bräuchte man es nicht ^^ |
Re: nochmal n-maliges Würfeln
Altanative ginge auch noch
Delphi-Quellcode:
so ist es meiner bescheidenen Meinung nach einfach :)
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; gruss Thorben EDIT: Oh da hatte wohl jemand die selbe Idee, das gut, das sagt mit das die idee gar net so schlecht ist :D |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:30 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-2025 by Thomas Breitkreuz