raadspel in javascript

Status
Niet open voor verdere reacties.

Stef1011

Nieuwe gebruiker
Lid geworden
25 mrt 2010
Berichten
2
Ik moet voor een opdracht een raadspel maken in javascript. Nu ik heb al heel wat gevonden, maar het werkt niet. De pc neemt steeds een ander getal in "gedachten" waardoor de speler nooit het correcte getal kan gokken. Hier zit ik dus vast.
Kan iemand mij misschien helpen?

groetjes
stef1011

Hieronder zie je de correcte taakomschrijving:

Maak een raadspelletje waarbij de gebruiker door middel van selectierondjes eerst drie niveaus kan kiezen : een getal raden tussen 1 en 10, tussen 1 en 100 of tussen 1 en 1000. De computer genereert een willekeurig getal tussen de gekozen grenzen, en de gebruiker kan in een tekstregel een gokje wagen. Indien de gok van de gebruiker lager was dan het willekeurige getal, verschijnt in een waarschuwingsvenster de boodschap “Uw gok was te laag”, en wordt de tekstregel leeggemaakt. Indien de gok van de ge-bruiker hoger was dan het willekeurige getal, verschijnt in een waarschuwingsvenster de boodschap “Uw gok was te hoog”, en wordt de tekstregel eveneens leeggemaakt. Wanneer de gebruiker het getal uiteindelijk geraden heeft, verschijnt in het waarschu-wingsvenster “Proficiat! U heeft het getal geraden in x beurten” (waarbij x uiteraard staat voor het aantal correcte beurten).
 
Stuur je code als meer hulp wil kun je het beste je code sturen.

Wel een tip, je zou bijvoorbeeld kunnen tellen hoe vaak iemand raadt en alleen een nieuw getal kunnen laten maken als de speler 0 heeft geraden.

var tel = 0;
function raad()
{
tel++; //Dat betekent dat er een opgeteld moet worden bij tel.
if(tel == 0) {
maakEenNieuwNummer
}
controlleerGetal
}
 
ik weet niet of dit huiswerk is... maar huiswerk is JOUW huiswerk, en niet het onze...

laat maar eens zien wat je hebt, als we zien dat jij zelf al genoeg geprobeerd hebt kunnen we je wel wat de goede richting in sturen.
 
<HTML>
<HEAD>
<TITLE>Getal raden</TITLE>

<script type="text/javascript">
<!--


var teller=0;

function toon() {
var str = document.invulformulier.gok.value;
var rondjes = document.invulformulier.moeilijkheid;
for (var teller=0; teller<rondjes.length; teller++) {
if (rondjes[teller].checked) {
keuze = rondjes[teller].value;
break;
}
}


if (keuze=="Raden tussen 1 en 10"){
var getal=Math.random()*10;
var maximum=10;
} else if (keuze=="Raden tussen 1 en 100") {
var getal=Math.random()*100;
var maximum=100;
} else {
var getal=Math.random()*1000;
var maximum=1000;
}


pcgok = Math.ceil(getal);
var zelfgok = parseFloat(document.invulformulier.gok.value);

if (zelfgok<pcgok) {
alert("Uw gok was te laag!")
document.invulformulier.gok.value=""
}
if (zelfgok>pcgok){
alert("Uw gok was te hoog!")
document.invulformulier.gok.value=""
}
if (zelfgok==pcgok){
alert("Proficiat! U heeft het getal geraden in " + teller + " beurten.")
document.invulformulier.gok.value=""
}


}


document.invulformulier.gok.value=""


-->
</script>

</HEAD>


<BODY>
<CENTER>
<FORM NAME="invulformulier">
<TABLE><TR><TD VALIGN="top">
<P>Kies de getallen waartussen je wilt raden: <BR>
</TD><TD VALIGN="top">
<INPUT TYPE="radio" NAME="moeilijkheid" VALUE="Raden tussen 1 en 10" CHECKED>Raden tussen 1 en 10<BR>
<INPUT TYPE="radio" NAME="moeilijkheid" VALUE="Raden tussen 1 en 100">Raden tussen 1 en 100<BR>
<INPUT TYPE="radio" NAME="moeilijkheid" VALUE="Raden tussen 1 en 1000">Raden tussen 1 en 1000<BR>
</TD></TR></TABLE>

<P>Waag je gok: </P>

<P><INPUT TYPE="text" NAME="gok" VALUE=""></P>

<INPUT TYPE="button" NAME="submit" VALUE="Juist geraden?" onclick="toon()"></P>
</FORM>

</BODY>

</HTML>


Deze code had ik tot nu toe. Maar het getal wordt dus niet bijgehouden en ik zie de fout niet.

Ik vraag ook niet of jullie mijn huiswerk maken 3747. Maar gewoon of jullie misschien raad of tips hadden.

groetjes
stef 1011
 
Beste Stef1011,

Onderstaande code werkt! In toon() maakte je steeds opnieuw een andere pcgok aan. Je gebruikte teller zowel in de for-lus als voor het aantal maal iemand probeert. Heb van 1 functie 2 functies gemaakt. Als je een keuzerondje aanklikt wordt startSpel() aangeroepen, ook als iemand wint. De teller voor het aantal pogingen moet natuurlijk verhoogd worden bij te laag, te hoog of juist. pcgok wordt in beide functies gebruikt en dient derhalve globaal gedefinieerd te worden, dwz buiten de functies. Met .focus() wordt steeds het tekstvak actief, zodat je dit niet zelf telkens moet activeren. Ik heb ook het tekstvak ietwat verkleind en de weergave hierin gecentreerd.



Code:
<html>
<head>
<title>Getal raden</title>

<script type="text/javascript">
<!--

var teller = 0;
var pcgok;
function startSpel() {

    var rondjes = document.invulformulier.moeilijkheid;
    for (var i = 0; i<rondjes.length; i++) {
        if (rondjes[i].checked) {
            keuze = rondjes[i].value;
            break;
        }
    }

    if (keuze == "Raden tussen 1 en 10"){
        var getal = Math.random()*10;        
    } else if (keuze == "Raden tussen 1 en 100") {
        var getal = Math.random()*100;        
    } else {
        var getal = Math.random()*1000;        
    }

    pcgok = Math.ceil(getal);
    document.invulformulier.gok.focus()    
}

function toon() {
    var zelfgok = parseInt(document.invulformulier.gok.value);
    if (zelfgok < pcgok) {
        teller++
        alert("Uw gok was te laag!")     
    }
    if (zelfgok > pcgok){
        teller++
        alert("Uw gok was te hoog!")
    }
    if (zelfgok == pcgok){
        teller++
        if (teller == 1) {
            alert("Proficiat! U heeft het getal geraden in " + teller + " beurt.")
        } else {
            alert("Proficiat! U heeft het getal geraden in " + teller + " beurten.")
        }
        teller = 0
        startSpel()
    }
    document.invulformulier.gok.value=""
    document.invulformulier.gok.focus()
}
-->
</script>
</head>


<body>
<center>
<form name="invulformulier">
<table><tr><td valign="top">
<p>Kies de getallen waartussen je wilt raden: <br>
</td><td valign="top">
<input type="radio" name="moeilijkheid" value="Raden tussen 1 en 10" onclick="startSpel()">Raden tussen 1 en 10<BR>
<input type="radio" name="moeilijkheid" value="Raden tussen 1 en 100" onclick="startSpel()">Raden tussen 1 en 100<BR>
<input type="radio" name="moeilijkheid" value="Raden tussen 1 en 1000" onclick="startSpel()">Raden tussen 1 en 1000<BR>
</td></tr></table>
<p>Waag je gok: </p>
<p><input type="text" name="gok" value="" size="5" style="text-align:center;"></P>
<input type="button" name="submit" value="Juist geraden?" onclick="toon()"></p>
</form>
</body>
</html>
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan