Antworten auf deine Fragen:
Neues Thema erstellen

JS: Schleife hängt sich auf

RealProNoob

Noch nicht viel geschrieben

Tag Leute,

Erst mal der Skript, dann die Frage

HTML:
<html>
<head>


<script type="text/javascript" language="javascript">

count = 1; //wie oft gebraucht für Yatzee?
counter = 1; //wie oft Yatzee, seit letzter Aktualisierung der Seite?
averageCount = 0; //wie oft gebraucht im Durchschnitt?
rolls = 0; //Wie oft wurde insgesamt gewürfelt?


function one()
{
   for(i = 1; i<=1000; i++)
   {
      Zahl1 = Math.round(Math.random()*5+1);
      Zahl2 = Math.round(Math.random()*5+1);
      Zahl3 = Math.round(Math.random()*5+1);
      Zahl4 = Math.round(Math.random()*5+1);
      Zahl5 = Math.round(Math.random()*5+1);
      //Zahl6 = Math.round(Math.random()*5+1);
      
   
      if (Zahl1 == Zahl2 && Zahl2 == Zahl3 && Zahl3 == Zahl4 && Zahl4 == Zahl5)
      {
         
         rolls = rolls + count;
         averageCount = rolls / counter;
         document.getElementById("this").innerHTML = Zahl1 + " " + Zahl2 + " " + Zahl3 + " " + Zahl4 + " " + Zahl5 + "</br> Count: " + count + "</br> Durchschnitt: " + averageCount + "</br> Würfe: " + counter + "</br>Würfe-All: " + rolls;
         counter++;
         count = 1;
      } else { count++; one(); }
   }
}
</script>




</head>


<body>

<input type="button" value="ROLL" onclick="one();" />

<p id="this"></p>








</body>
</html>
Geht darum, dass eine Funktion mit einer if-Abfrage gekoppelt ist. Jedes mal wenn die Bedingungen erfüllt werden, geht der Zähler ("counter") eins nach oben. So weit funktioniert alles.

Nun möchte ich mit einer for-Schleife dafür sorgen, dass die Funktion so lange ausgeführt wird, bis der die Bedingung 1000 mal erfüllt wird - und hier ist mein Problem: Es hört viel zu früh auf (erkennbar bei der Textausgabe "Würfe:").

Kann einer erkennen, woran das liegt?

/Editiert: Script zum copy&paste für Zuhause erweitert
 
Zuletzt bearbeitet:

TobiKo

Nicht mehr ganz neu hier

AW: JS: Schleife hängt sich auf

Wann hört es denn als so ungefähr auf? Schon nach 1 mal, oder nach 10 oder 100?
Und warum rufst Du die Funktion innerhalb der for-Schleife auf? Nimm das mal raus und mach einfach nur counter++;
Kann sein dass ich grad voll daneben liege, es ist schon spät, aber versuchs mal.
Gruß Tobi
 

RealProNoob

Noch nicht viel geschrieben

AW: JS: Schleife hängt sich auf

Ist schwer einzuschätzen - meist hört es zwischen 40 und 80 auf würde ich sagen.
Und nach dem Rausnehmern der Funktion von "else {..." scheint das Ganze noch schlechter zu funktionieren. Ich editiere mal den Code so um, dass man ihn überall ausprobieren kann - vielleicht hilfts ja, wenn man es selber sieht.
 

TobiKo

Nicht mehr ganz neu hier

AW: JS: Schleife hängt sich auf

kleine Verständnisfrage:
Soll bei den 1000 Durchgängen öfters Yatzee erzielt werden, oder soll es aufhören nach einem Mal? Soll die Variable Count dann angeben, wie oft gewürfelt wurde bis zum ersten Yatzee oder wie oft insgesammt - Anzahl der Yatzee?
Und falls immer 1000 Mal gewürfelt werden sollte, ist rolls dann nicht am Ende 1000?

Gruß Tobi
 

RealProNoob

Noch nicht viel geschrieben

AW: JS: Schleife hängt sich auf

Kurz: Ziel ist 1.000 Yahtzees - dann soll die Schleife den Geist aufgeben.

Lang:
Ohne die Schleife gibt "Counter" bzw "Würfe" an, wie oft bereits ein Yahtzee erzielt wurde - diese Zahl erhöht sich praktisch jedes mal, wenn ich auf "ROLL" klicke (wenn man die for-Schleife löscht). Ziel ist also, nicht 1.000 mal auf ROLL drücken zu müssen.

Und ja ich weiß - die Variablen-Namen sind etwas unbedacht gewählt :-/
 

TobiKo

Nicht mehr ganz neu hier

AW: JS: Schleife hängt sich auf

HTML:
<html>
<head>


<script type="text/javascript" language="javascript">

versuche_fuer_yatzee = 0; //wie oft gebraucht für Yatzee?
anzahl_der_yatzee = 0; //wie oft Yatzee, seit letzter Aktualisierung der Seite?
average_versuche_fuer_yatzee = 0; //wie oft gebraucht im Durchschnitt?
rolls = 0; //Wie oft wurde insgesamt gewürfelt?


function one()
{
	while(anzahl_der_yatzee < 1000)
   {
	  rolls++;
	  
      Zahl1 = Math.round(Math.random()*5+1);
      Zahl2 = Math.round(Math.random()*5+1);
      Zahl3 = Math.round(Math.random()*5+1);
      Zahl4 = Math.round(Math.random()*5+1);
      Zahl5 = Math.round(Math.random()*5+1);
      //Zahl6 = Math.round(Math.random()*5+1);
      
   
      if (Zahl1 == Zahl2 && Zahl2 == Zahl3 && Zahl3 == Zahl4 && Zahl4 == Zahl5)
      {
         average_versuche_fuer_yatzee = rolls / anzahl_der_yatzee;
         anzahl_der_yatzee++;
         document.getElementById("this").innerHTML = Zahl1 + " " + Zahl2 + " " + Zahl3 + " " + Zahl4 + " " + Zahl5 + "</br> versuche_fuer_yatzee: " + versuche_fuer_yatzee + "</br> Durchschnitt: " + average_versuche_fuer_yatzee + "</br> Anzahl der Yatzee: " + anzahl_der_yatzee + "</br>Würfe insgesamt: " + rolls;
        
      }  else{
    	  versuche_fuer_yatzee++;
      }
   }
}
</script>




</head>


<body>

<input type="button" value="ROLL" onclick="one();" />

<p id="this"></p>








</body>
</html>

Schaus dir jetzt mal an, ich weiß nur nicht was du mit versuche_fuer_yatzee meinst. Ich habe die Variablennamen mal übersichtlicher gemacht.

EDIT: Ok, gib mir 5 Minuten.
EDIT2: Sowas in der Art? Kannst ja noch ein bisschen anpassen. Aber verwende eine while Schleife, dafür ist sie gedacht ;)
 
Zuletzt bearbeitet:

TobiKo

Nicht mehr ganz neu hier

AW: JS: Schleife hängt sich auf

Kein Problem, bitteschön. Aber jetzt werde ich mich wirklich mal hinlegen, damit ich morgen wieder anderen helfen kann.

Gruß Tobi
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.565
Beiträge
1.538.067
Mitglieder
67.488
Neuestes Mitglied
Andrew56524
Oben