Autor Zpráva
Pavel Vlček
Profil *
Dobrý den. Nedávno jsem poslal problém s mojí hrou procvičení paměti. Teď tu mám problém se hrou hádání čísel. Když třeba napíši 8 tak to řekne, že číslo, které si počítač vylosoval je větší než 8. Když ale napíši větší číslo než 8, třeba 20, tak mi to řekne, že jsem prohrál. Problém bude asi v javascriptu.

<html>

<head>
<meta http-equiv=Content-Type content="text/html; charset=windows-1250">
<title>hádání čísel</title>
</head>
<body>
<script>
cislo=Math.round(Math.random()*1000)
nejmensi=1
nejvetsi=1000
a=1
function overcislo() {
p=a++
typ=document.getElementById("cislo").value
b = typ.search(/[^0-9]/);
if (b>-1) alert("Nezadal jsi číslo!");
else if(typ>nejvetsi) { alert("Za špatnou paměť se platí. Začínáš od začátku. Hodně štěstí a příště si dej pozor!!"); nejmensi=1; nejvetsi=1000;
Document.getElementById("cislo").value="";
}
else if (typ<nejmensi) { alert("Za špatnou paměť se platí. Začínáš od začátku. Hodně štěstí a příště si dej pozor!!"); nejmensi=1; nejvetsi=1000;
document.getElementById("cislo").value=""
}
else if(typ<cislo) {
nejmensi=typ; alert("číslo je větší než " + nejmensi + " a menší než " + nejvetsi);
document.getElementById("cislo").value=""
}
else if (typ>cislo) { nejvetsi=typ; alert("číslo je menší než "+ nejvetsi + " a větší než " + nejmensi );
document.getElementById("cislo").value=""
}
else if (typ==cislo){ alert("ano. je to tak. Opravdu to je číslo " + cislo + "."); alert("uhodl jsi na " + p + ". pokus.")
document.getElementById("cislo").value=""
}
}
</script>
<h1>hádání čísel</h1>
<form >
<label>váš typ</label>
<input type=text id="cislo">
<input type=button value="je to správné číslo?" onclick=overcislo()>
</form>
</body>
</html>

Díky.
Laman
Profil
1. oprav si velké D u jednoho Document.getElementById
2. zadávané proměnné (resp. vstup z formu, tzn. typ) při porovnávání v if vynásob 1* -> takhle porovnáváš řetězce a dělá to neplechu, násobení je převede na čísla
nightfish
Profil
nejmensi=1
nejvetsi=1000
a=1

neměly by ty přiřazení být ukončeny středníkem?
Pavel Vlček
Profil *
Můžete mi prosím poslat kód?
Laman
Profil
<html>

<head>
<meta http-equiv=Content-Type content="text/html; charset=windows-1250">
<title>hádání čísel</title>
</head>
<body>
<script>
cislo=Math.round(Math.random()*1000)
nejmensi=1
nejvetsi=1000
a=1
function overcislo() {
p=a++
typ=document.getElementById("cislo").value
b = typ.search(/[^0-9]/);
typ=1*typ
if (b>-1) alert("Nezadal jsi číslo!");
else if(typ>nejvetsi||typ<nejmensi) { alert("Za špatnou paměť se platí. Začínáš od začátku. Hodně štěstí a příště si dej pozor!!"); nejmensi=1; nejvetsi=1000;
document.getElementById("cislo").value="";
}
else if(typ<cislo) {
nejmensi=typ; alert("číslo je větší než " + nejmensi + " a menší než " + nejvetsi);
document.getElementById("cislo").value=""
}
else if (typ>cislo) { nejvetsi=typ; alert("číslo je menší než "+ nejvetsi + " a větší než " + nejmensi );
document.getElementById("cislo").value=""
}
else if (typ==cislo){ alert("ano. je to tak. Opravdu to je číslo " + cislo + "."); alert("uhodl jsi na " + p + ". pokus.")
document.getElementById("cislo").value=""
cislo=Math.round(Math.random()*1000)
nejmensi=1
nejvetsi=1000
a=1
}
}
</script>
<h1>hádání čísel</h1>
<form >
<label>váš typ</label>
<input type=text id="cislo">
<input type=button value="je to správné číslo?" onclick=overcislo()>
</form>
</body>
</html>


teď to doufám bude fungovat. ona čísla jako řetězce jsou občas prevíti a blbě se taková chyba hledá
Pavel Vlček
Profil *
Dobrý den. Zase nejdou alert. Bude to asi tím, že se to špatně kopýruje. Kdyby tu byla tlačítka "kopýruj kód do schránky", bylo by to zkopýrované bez chyb. Můžete mi ten soubor prosím poslat v příloze na mail vlcekp1@seznam.cz? Díky.
Laman
Profil
snad by to mělo fungovat tady.
ale jestli je nějaký problém, jediné mé úpravy byly: změna jednoho velkého D u Document.getElementById na malé a pak ten řádek typ=1*typ
Pavel Vlček
Profil *
Ano. Díky. Jde to.
SirPole
Profil *
hoj kdyz uz sme u her muzete mi rict jak udelat aby tlacitko ukazovalo na jinou stranku nebo to musi bejt jenom ten alert... diky

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0