Raad het getal

Status
Niet open voor verdere reacties.

AnthonySlabinck

Nieuwe gebruiker
Lid geworden
3 nov 2008
Berichten
4
Dag allemaal,

ik probeer het programma een getal te raden te maken maar niet op de klassieke manier
via forms maar met window.prompts. Het werkt eigenlijk maar half weet iemand waar ik fouten maak?

Bedankt alvast.
HTML:
<html>
<head>
<title>Getal raden</title>
<script type="text/javascript">
<!--
min = 1;
max = 999;
var getal;
var raden;

getal = Math.random() * (max-min); //met willekeurig getal tussen 0 en 1 vermenigvuldigen met 999
getal = Math.round(getal); //het getal afronden

getal = getal + min; //zorgen dat 0 en 1000 niet voorkomen

raden = window.prompt ("Geef een getal tussen 1 en 10","");

if (raden > getal) 
{
raden = window.prompt ("Te hoog ! Probeer opnieuw","");
}
if (raden < getal) 
{
raden = window.prompt ("Te laag ! Probeer opnieuw","");
}
if (raden == getal) 
{
window.alert ("Proficiat, je hebt het getal geraden !","");
}
-->
</script>
</head>
<body>
</body>
</html>
 
Laatst bewerkt door een moderator:
Je gebruikt geen lus, dus hij kan het maar 1 keer testen of het hoger, lager of gelijk is. En met 1 keer raden moet je wel heel veel geluk hebben ;)
Ik heb er een while-lus ingestoken, die pas stopt zodra "getal" gelijk is aan "raden".
Ik heb ook nog Math.round vervangen door Math.floor. Want anders is statisch gezien de kans om 0 of 999 te hebben, kleiner.

Hier is het gefixte scriptje:
Code:
<html>
<head>
<title>Getal raden</title>
<script type="text/javascript">
<!--
var min = 1;
var max = 1000;
var getal;
var raden;

getal = Math.random() * max; //met willekeurig getal tussen 0 en 1 vermenigvuldigen met 1000
getal = Math.floor(getal); //het getal afronden

raden = window.prompt ("Geef een getal tussen 1 en 1000","");

while(getal != parseInt(raden))
{
 if (raden > getal)
 {
 	raden = window.prompt ("Te hoog ! Probeer opnieuw","");
 }
 if (raden < getal)
 {
 	raden = window.prompt ("Te laag ! Probeer opnieuw","");
 }
}

window.alert("Proficiat! Je hebt gewonnen!");
-->
</script>
</head>
<body>
</body>
</html>

Owja, en wil je er de volgende keer ook op letten om code tags te gebruiken? Dat maakt het veel gemakkelijker om te lezen!
 
Laatst bewerkt:
Edit : Sorry, ik had niet gezien dat iemand een vorige post had neergezet.
 
Laatst bewerkt:
Ik zie dat ik al te laat ben, want NielsdeSmet had al een (beter) antwoord gegeven, maar alsnog mijn aangepaste scriptje:

PHP:
<!-- Editted by Reforced @ Helpmij.nl -->
<html>
<head>
<title>Getal raden</title>
<script type="text/javascript">
<!--
function startraden() {
mingetal = 0; // Let op, straks gaat dit +1 (dus word 1)
maxgetal = 998; // Let op, straks gaat dit +1 (dus word 999)

verzinsel = Math.random() * (maxgetal-mingetal); // Willekeurig getal bedenken
afronden = Math.round(verzinsel); // Willekeurige getal afronden
eindgetal = afronden + 1; // Geen 0 of 1000, door +1 te doen

gok = (undefined); // Zegt dat er nog niet gegokt is
start = raden(); // Start van de functie gokken
}

function raden() {
if (gok == undefined) // Wanneer er nog niet gegokt is (het het getal dus undefined is)
{
gok = window.prompt ("Geef een getal in tussen 1 en 1000 of druk op OK om te stoppen","Ik wil stoppen!"); // Moet er dus een getal worden ingegeven
begin = raden() // Met dit getal word de functie nu opnieuw uitgevoerd
}
else if (gok > eindgetal) // Als geen van boven van toepassing is word gekeken of het getal te hoog is
{
gok = window.prompt ("Te hoog! Probeer opnieuw",gok); // Zo ja, dan moet hier opnieuw een getal worden ingegeven
opnieuw = raden() // En hierna word weer de functie opnieuw uitgevoerd
}
else if (gok < eindgetal) // Nu word gekeken of het te laag is
{
gok = window.prompt ("Te laag! Probeer opnieuw",gok); // Zo ja, opnieuw getal invoeren
opnieuw = raden() // En hierna weer opnieuw deze functie uitvoeren
}
else if (gok == eindgetal) // Kijken of het het eindgetal is?
{
window.alert ("Proficiat, je hebt het getal geraden!"); // Ja, en dus geen vervolg actie meer hierna
}
else if (gok == 'Ik wil stoppen!') // Kijken of de gebruiker wil stoppen
{
window.alert ("Bedankt voor het spelen!"); // Ja, stop
}
}
-->
</script>
</head>
<body onload="startraden()">
<a href="#" onclick="startraden()">Opnieuw raden!</a>
<!-- Dit werkt dus doordat hij opnieuw het eindgetal gaat aanmaken en het gok getal weer op undefined zet. Vervolgens word er weer de raden functie aangeroepen -->
</body>
</html>

Deze is iets wat verbeterd, door net als het script van Niels na elke actie opnieuw de functie aan te roepen. Wat er ook als extra aan is toegevoegd is de mogelijkheid het script opnieuw te starten (door opnieuw raden! te klikken); wat ook een (in mijn ogen) zeer belangrijke mogelijkheid is, is dat je het script ook kunt annuleren! Anders moet je netzolang doorgaan tot je het hebt geraden (wat veel irritatie gaat oproepen).

Overigens is de while loep zeker beter en proffesioneler, deze zou je dus nog kunnen toevoegen. Overal is ook comment toegevoegd, dus je weet wat en hoe er gebeurd!

Groet!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan