Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi belibig oftes Würfeln (https://www.delphipraxis.net/85706-belibig-oftes-wuerfeln.html)

General Wolf1 3. Feb 2007 15:49


belibig oftes Würfeln
 
hihi
sagt mal kann mir mal einer weiterhelfen.
Ich will ein programm machen bei dem ich die würfelanzahl angeben kann (z.b.: 50mal) und das programm gibt mir dann
aus wie oft bei den 50mal die 1 und die 2 etc.pp gewürfelt wurde.
Ich komme aber nicht weiter weil ich nicht weis wie ich den Zufallsmechanissmus darin einknüpfe. :wall:
Wäre echt genial wenn mir jemand da weiterhelfen könnte!!

arbu man 3. Feb 2007 15:52

Re: belibig oftes Würfeln
 
Delphi-Referenz durchsuchenrandomize
Delphi-Referenz durchsuchenramdom

Weiteres Grundlagenwissen findest du bei www.dsdt.info

General Wolf1 3. Feb 2007 15:59

Re: belibig oftes Würfeln
 
Danke erstmal für den Link.
Also ich weiß ja wie man einen Würfel einzeln macht!
Ich weiß auch wie ich die Zählschleife einzeln verwende aber ich weiß nicht wie ich beide kombinieren soll.
Hatte heute schon mindestens 50 Varianten und keine ging im entferntesten.

passsy 3. Feb 2007 16:17

Re: belibig oftes Würfeln
 
machs doch mit nem integer .

Delphi-Quellcode:
i:integer; //anzahl der würfelrunden
a:integer; //was im edit steht


a:=edit1.text;
if i<a then
begin
label1.caption:=random(5)+1;
i:=i+1;
end;

Die Muhkuh 3. Feb 2007 16:18

Re: belibig oftes Würfeln
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,

meinst Du das hier im Anhang?

General Wolf1 3. Feb 2007 16:20

Re: belibig oftes Würfeln
 
Hie vieleicht nochmal mein Quellcode damit man vieleicht mehr darunter versteht

procedure TForm1.Button1Click(Sender: TObject);
var a,x,b,c,g,f,h,i,j,k,l,m,n,o,p,q,r:integer;

begin
a:=strtoint(Edit1.Text);
repeat
randomize;
b:=random(6)+1;
case b of
1:inttostr(g);
2:inttostr(h);
3:inttostr(i);
4:inttostr(j);
5:inttostr(k);
6:inttostr(l);
end;
until a=a;
for f:= 0 to g do
begin
label16.Caption:=inttostr(f);
end;
for m:= 0 to g do
begin
label17.Caption:=inttostr(m);
end;
for n:= 0 to g do
begin
label18.Caption:=inttostr(m);
end;
for o:= 0 to g do
begin
label19.Caption:=inttostr(o);
end;
for p:= 0 to g do
begin
label20.Caption:=inttostr(p);
end;
for r:= 0 to g do
begin
label21.Caption:=inttostr(r);
end;
Vieleicht findet jemand den oder die Fehler und kann helfen

Die Muhkuh 3. Feb 2007 16:21

Re: belibig oftes Würfeln
 
Zitat:

Zitat von General Wolf1
Vieleicht findet jemand den oder die Fehler und kann helfen

Ja, da fehlen die [delphi] [ /delphi] Tags :stupid:

passsy 3. Feb 2007 16:27

Re: belibig oftes Würfeln
 
also

"" fehlt auf jeden fall

und sonst finde ich das recht kompiziert weil es ja auch einfacher geht. übernimm ma meinen teil und schreib dann den rest.

General Wolf1 3. Feb 2007 16:28

Re: belibig oftes Würfeln
 
Ich hab ja nur den wichtigen teil rausgenommen.
Die Datei zum Downloaden funzt bei mir nicht--> hab nur ne poplige delphi 4 Version
Ach ja ich will nur schleifen verwenden um das programm zu realisieren. naja und halt das zufallsding
Greez

inherited 3. Feb 2007 16:28

Re: belibig oftes Würfeln
 
Delphi-Quellcode:
var
  WuerfelErgebnisse=Array[1..6] of Integer;
randomize;
for i := 1 to 6 do
  WuerfelErgebnisse[i]:=0;

for i := 1 to AnzahlDerWuerfe do
  WurefelErgebnisse[random(6)+1]:=WurefelErgebnisse[random(6)+1]+1;
Wie immer ungetestet (tm), müsste aber gehen
(BTW: Passys ist ziemlich unbrauchbar, da die ergebnisse nur zwischen 1 und 5 liegen können)

Die Muhkuh 3. Feb 2007 16:32

Re: belibig oftes Würfeln
 
Zitat:

Zitat von General Wolf1
Ich hab ja nur den wichtigen teil rausgenommen.
Die Datei zum Downloaden funzt bei mir nicht--> hab nur ne poplige delphi 4 Version
Ach ja ich will nur schleifen verwenden um das programm zu realisieren. naja und halt das zufallsding
Greez

Warum sollte das nicht funktionieren? Ich verwende Standard-Komponenten.

Höchstens die TListView gibts nicht Delphi4 noch nicht, was ich aber nicht glaube.

Ansonsten öffne einfach die .pas-Datei.

passsy 3. Feb 2007 16:34

Re: belibig oftes Würfeln
 
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer; //anzahl der würfelrunden
a:integer; //was im edit steht
b:integer; //gewürfelte zahl
eins,zwei,drei,vier,fünf,sechs:integer //gewürfelte zahlen
begin
a:=edit1.text;

if i<a then
begin
 b:=random(5)+1; //0 wird auch gewürfelt ;)
  if b =1 then
   eins:=eins+1
  else
   if b = 2 then
   zwei:=zwei+1
  else
   if b =3 then
   drei:=drei+1
  else
   if b = 4 then
   vier:=vier+1
  else
   if b =5 then
   fünf:=fünf+1
  else
   if b = 6 then
   sechs:=sechs+1

//jetzt nur noch die zahlen an label übergeben...
i:=i+1;
end;

General Wolf1 3. Feb 2007 16:36

Re: belibig oftes Würfeln
 
vieleicht nichmal für alle
Ich will nur schleifen und den zufallsmechanismus verwenden.
Ich gebe vor wie oft der würfeln soll.
Und der gibt mir dann aus wie oft die 1,2,3,4,5 und die 6 gewürfelt wurde.
Meht spielereinen will ich erstmal gar nicht!

Hawkeye219 3. Feb 2007 16:43

Re: belibig oftes Würfeln
 
Zitat:

Zitat von inherited
Delphi-Quellcode:
for i := 1 to AnzahlDerWuerfe do
  WurefelErgebnisse[random(6)+1]:=WurefelErgebnisse[random(6)+1]+1;

Das kann man dann wirklich als _zufälliges_ Ergebnis bezeichnen ;-)

Gruß Hawkeye

ichbins 3. Feb 2007 16:51

Re: belibig oftes Würfeln
 
Delphi-Quellcode:
procedure zufall;
var
  anzahl1,anzahl2,anzahl3,anzahl4,anzahl5,anzahl6:integer;
  i:integer;
begin
  for i:=1 to 42 do   //im Beispiel 42-mal würfeln
    case random(6)+1 of
      1: anzahl1:=anzahl1+1;
      2: anzahl2:=anzahl2+1;
      3: anzahl3:=anzahl3+1;
      4: anzahl4:=anzahl4+1;
      5: anzahl5:=anzahl5+1;
      6: anzahl6:=anzahl6+1;
    end;
end;
Das ganze ginge natürlich mit einem Array viel kompakter:

Delphi-Quellcode:
procedure zufall;
var
  anzahl:array[1..6] of integer;
  i:integer;
begin
  for i:=1 to 42 do
    inc(anzahl[random(6)+1]);
end;
@inherited: dein inc funktioniert nicht ;) anzahl[random]:=anzahl[random]+1 du rufst random 2-mal auf
@Hawkeye219: ich würde eher sagen durch das zufällige Angleichen zweier Werte sind die Ergebnisse nicht mehr so weit auseinander, also nicht mehr so verstreut und der Zufallseffekt wird geringer... :stupid:

General Wolf1 3. Feb 2007 16:55

Re: belibig oftes Würfeln
 
ihr könnt mir doch sagen wenn ich ein zählschleife und den zufallmechanismus verwende wie ich das machen muss damit der mir dann ausgibt wie oft der die 1-6 gewürfelt hat bei n-maligem Würfeln oder?

Klaus01 3. Feb 2007 16:56

Re: belibig oftes Würfeln
 
Delphi-Quellcode:
begin
   a:=strtoint(Edit1.Text);
   einser_zaehler:=0;
   zweier_zaehler:=0;
   dreier_zaehler:=0;
   vierer_zaehler:=0;
   fuenfer_zaehler:=0;
   sechser_zaehler:=0;
  i:=1;
  repeat
     //randomize; // nur einmal aufrufen z.B. in Form.create
    b:=random(5{6})+1;                     // random(6) ermittelt eine Zufallszahl zwischen 0 und 6
                                            // Dein Ergebnis wird verfälscht wenn eine 0 gewürfelt wird
                                            // da das Ergebnis nicht gewertet wird aber ein Würfelversuch hochgezählt wird
                                           // deshalb random(5) +1
    case b of
      1:{inttostr(g)} inc(einser_zaehler); // weil Du ja wissen willst wie oft denn ein einser gewürfelt wurde
      2:{inttostr(h)} inc(zweier_zaehler);
      3:{inttostr(i)} inc(dreier_zaehler) ;
      4:{inttostr(j)} inc(vierer_zaehler);
      5:{inttostr(k)} inc(fuenfer_zaehler);
      6:{inttostr(l)} inc(sechser_zaehler);
    end;
    inc(i) // Zähler hochzählen
  until i=a;

Wozu das?
{for f:= 0 to g do
  begin
    label16.Caption:=inttostr(f);
  end;
for m:= 0 to g do
  begin
    label17.Caption:=inttostr(m);
  end;
for n:= 0 to g do
  begin
    label18.Caption:=inttostr(m);
  end;
for o:= 0 to g do
  begin
    label19.Caption:=inttostr(o);
  end;
for p:= 0 to g do
  begin
    label20.Caption:=inttostr(p);
end;
for r:= 0 to g do
  begin
    label21.Caption:=inttostr(r);
end; }
  label6.caption:=IntToStr(einser_zaehler);
...
Grüße
Klaus

General Wolf1 3. Feb 2007 17:02

Re: belibig oftes Würfeln
 
!!!!!!!ich will ja >>>>schleifen<<<<< für das projekt verwenden!!!!!!
Also möchte ich für das projekt aussschließlich schleifen verwenden--> also for/while/repeat schleifen!!!
Das müsste doch zu machen sein das die for schleife die auch zählt wie oft die was macht das die mir zählt wie oft ich z.b.: eine 1 gefüfelt bekommen habe...
oder geht das nicht????

Klaus01 3. Feb 2007 17:05

Re: belibig oftes Würfeln
 
Dann erklär bitte mal Deinen Code, ich verstehe ihn nicht.
Und schrei nicht so rum.

Grüße
Klaus

General Wolf1 3. Feb 2007 17:17

Re: belibig oftes Würfeln
 
also ich dachte mir das so:
procedure TForm1.Button1Click(Sender: TObject);
var a,x,b,c,g,f,h,i,j,k,l,m,n,o,p,q,r:integer; //Kann sein das da zuvile drin sind aber da liegt nicht der fehler

begin
a:=strtoint(Edit1.Text);//--> im Editfenster wird die anzahl eingegeben wie oft gewürfelt wird
repeat //ich dacht es funzt mit repeat das ich den so oft wiederholen lasse er den wert der eingabe errreicht hat
randomize; //Zufallsding wird aktiviert
b:=random(6)+1; //der soll würfeln bzw. zufall aus den 6zahlen machen (wie gehöhnich)
case b of
1:inttostr(g); //hier fängt es an wo ich nicht mehr weiterwusste
2:inttostr(h); //dachte ich kann gewürfelten zahl einer variable zuordnen die er später zum Zählen nimmt
3:inttostr(i);
4:inttostr(j);
5:inttostr(k);
6:inttostr(l);
end;
until a=a; //ersoll das halt solange wiederhohlen bis er die eingegebenen Zahl erreicht hat
for f:= 0 to g do //jetzt soll er die Variablen auf zum Zählen nutzen die ich oben belegt habe.
begin
label16.Caption:=inttostr(f); //soll mir dann das endergäbniss ausgeben wie oft z.b.:die 1 gewüfelt wurde
end;
for m:= 0 to g do
begin
label17.Caption:=inttostr(m);
end;
for n:= 0 to g do
begin
label18.Caption:=inttostr(m);
end;
for o:= 0 to g do
begin
label19.Caption:=inttostr(o);
end;
for p:= 0 to g do
begin
label20.Caption:=inttostr(p);
end;
for r:= 0 to g do
begin
label21.Caption:=inttostr(r);
end;
//Ich dachte das könnte man so realisieren aber dem scheint nicht so.
hab nicht geschrien. bin nur etwas greizt weil ich da schon den ganzen tag dran sitze und immer noch keine Lösung habe

Die Muhkuh 3. Feb 2007 17:35

Re: belibig oftes Würfeln
 
Schaue dir meine .pas-Datei an.

Da ist das genau drin. :roll:

General Wolf1 3. Feb 2007 17:42

Re: belibig oftes Würfeln
 
hab mal reingeschaut
kann ich das ergäbniss auch in einem Label ausgeben bzw. kannst du mir das zeigen
ich seh in deinem Quellcode nicht ganz durch.
Könntest du mir den mal erklären oder einfach nur kurtze erklärungen an den Rand schreiben
Greez

inherited 3. Feb 2007 18:54

Re: belibig oftes Würfeln
 
Zitat:

Zitat von Hawkeye219
Zitat:

Zitat von inherited
Delphi-Quellcode:
for i := 1 to AnzahlDerWuerfe do
  WurefelErgebnisse[random(6)+1]:=WurefelErgebnisse[random(6)+1]+1;

Das kann man dann wirklich als _zufälliges_ Ergebnis bezeichnen ;-)

Gruß Hawkeye

Ist mir auch gerade aufgefallen :oops:
Das random erstmal in einen Int packen und dann...
peinlich.
UND DAS IST EINE SCHLEIFE herrgott!


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:30 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