Delphi-PRAXiS
Seite 2 von 3     12 3      

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)

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


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:40 Uhr.
Seite 2 von 3     12 3      

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