Do While loop (Singla slant) - Jscript
/* Ska singla slant och när det har blivit krona 3 gånger så KAN resultatet visa ex:
krona
klave
klave
krona
klave
*/
var arrSlant = new Array('Krona','Klave');
var slump = Math.floor(2*Math.random());
var objHandtag = WScript.CreateObject('WScript.Shell');
var svar = objHandtag.Popup('Du kommer nu singla slant, krona eller klave! tills det har blivit 3 krona',0,'Krona eller Klave',0);
var krona = 0;
var slant;
do
{
slant = arrSlant[slump];
slant = slant + '\n'; //<-- Jag misstänker problemet är här men vet ej hur jag ska lösa det..
if (arrSlant[0])
{
krona = krona + 1;
}
}
while(krona < 3);
WScript.Echo('Du har fått ' + krona + ' krona nu,\nså här ser slantsinglandet ut i ett meddelande\n' + slant);
/*Det som jag fastnar på är att jag vet inte hur jag ska visa resultatet med slantsinglandet..dvs ex:
krona
klave
klave
krona etc
*/
Hur ser svaret ut nu när du skriver ut?
Jag tror att felet ligger delvis i hur din do while loop är uppbyggd. Det som händer nu är att den skapar ett slumpat tal mellan 0 och 1. Men, detta tal ändras inte eftersom den koden som skapar det slumpade talet ligger inte i loop, det vill säga att den bara körs en gång. Testa att lägga in
var slump = Math.floor(2*Math.random());
i din do while loop så att den skapar ett nytt slumpat tal för varje gång loopen körs. Svara med det nya resultatet!
samma resultat, funkar ej :/
Jag lyckades lösa ditt problem. Det första är att du måste skapa ditt slump tal i början av varje loop så att det skapas ett nytt tal varje gång den körs. Det jag bad dig att testa. Det riktiga problem ligger i denna delen av din kod:
slant = arrSlant[slump];
slant = slant + '\n';
Kolla vad som händer med variabeln slant om den koden körs till exempel 3 gånger. Klura lite och fråga om hjälp ifall du behöver!
slant = arrSlant[slump];
slant = slant + '\n';
jag ser att här ovan är problemet men listar inte ut det. Jag förstår att den skriver över slant från slumpen men vet faktiskt inte hur jag ska få till att den sparar den föregående slanten och lägger till ny slant på nästa rad..
delz skrev :slant = arrSlant[slump];
slant = slant + '\n';
jag ser att här ovan är problemet men listar inte ut det. Jag förstår att den skriver över slant från slumpen men vet faktiskt inte hur jag ska få till att den sparar den föregående slanten och lägger till ny slant på nästa rad..
Bra att du kom på problemet! Du har faktiskt gjort så att den spara det gamla på olika ställen. Om du skriver din kod på följande sätt kommer det att funka:
slant = slant + arrSlant[slump];
slant = slant + '\n';
Här sätter du variabeln slant till vad den var förut och lägger till Krona eller Klave med hjälp av:
+ arrSlant[slump]
Hoppas det funkar nu!
Tack! Nu ser jag det självklara!
Jag ser nu att det borde visa att det har blivit 3 kronor i slantsinglandet. Det ska då stå exempelvis:
klave
krona
klave
klave
krona
krona
Och jag tror att det är i min if -sats som är problemet, jag vill att ifall det blir en krona av slant funktionen så ska den addera +1 i variabeln krona.
Men jag tror att den ser allt "som en krona" och adderar +1 och därefter skrivs ut utfallen av slant funktionen.
var arrSlant = new Array('Krona','Klave');
var objHandtag = WScript.CreateObject('WScript.Shell');
var svar = objHandtag.Popup('Du kommer nu singla slant, krona eller klave! tills det har blivit 3 krona',0,'Krona eller Klave',0);
var krona = 0;
var slant = '';
do
{
var slump = Math.floor(2*Math.random());
var slant = slant + arrSlant[slump];
slant = slant + '\n';
if (arrSlant[0])
{
krona = krona + 1;
}
}
while(krona < 3);
WScript.Echo('Du har fått ' + krona + ' krona nu,\nså här ser slantsinglandet ut i ett meddelande \n' + slant);
Du har rätt. Det är din if-statement som krånglar till det. Det du har skrivit inuti i ditt if-statement är korrekt. Mitt tips är följande:
if ( ... ) //Här inne
Kolla ifall ditt slumpade tal (slump) är lika med krona eller klave, det vill säga 0 eller 1.
Klura lite och se ifall du kommer på det, annars fråga!
Har tänkt nu länge och ser att med alert(slump) så blir det antingen 1 eller 0.
Löste det:
if (slump == 0)
{
krona = krona + 1;
}
Tack för hjälpen!