我的Javascript代码在无限循环中崩溃了?

时间:2014-04-10 03:03:15

标签: javascript

你好下, 我刚刚开始用javascript学习编程,我做了一个“游戏”,计算机生成一个随机数,你应该猜它,但是当我按下按钮开始播放浏览器冻结就像有一个无限循环。我尝试删除循环“Do”并且游戏工作正常,但是我无法在找到正确数字之前记录用户尝试次数的计数器,因为每次我点击按钮“Go”时都没有循环“为了运行脚本变量”计数器“回到0 ..,游戏中的文本是西班牙语,如果你不能理解程序是如何工作的,请告诉我,我会进一步翻译它

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
    <title>Prueba de Juego</title>
    <script type="text/javascript">

//Selector de Modo
var modo=0;

function configuracion(){
    var pregunta;
    pregunta=confirm("[Seleccionar Modo] Would you like to use a custom range of values to generate the number?, if not we will proceed using standard mode.");

    if (pregunta==true) {
        modo=1;
        var cambiar=document.getElementById('modo').innerHTML='<span id="modo" style="color: blue;">Modo Personalizado</span>';

    }else{

        modo=2;
        var cambiar2=document.getElementById('modo').innerHTML='<span id="modo" style="color: green;">Modo Estandard</span>';

    }
}

function juego(){
    var contador,numero,ingresar,adivinar,aproximacion,minimo,maximo,mingen,maxgen;
    contador=0;
    numero=0;
    minimo=100;
    maximo=1000;
    mingen=0;
    maxgen=0;

    //Verificar que modo se utiliza
    if(modo=="0"){alert("[Atención] Modo no seleccionado.");return;}

    //Modo Personalizado
    if(modo=="1"){

        mingen=document.getElementById("mingen").value;
        maxgen=document.getElementById("maxgen").value;

        if(mingen=="" || maxgen==""){
            document.getElementById('status').innerHTML='<span id="status" style="color: #DBA901;">Please type in the maximum and minimum values..</span>';
            return;
        }

        //Procesar a integer
        mingen=parseInt(mingen);
        maxgen=parseInt(maxgen);

        if(mingen=="0" || maxgen=="0"){
            document.getElementById('status').innerHTML='<span id="status" style="color: red;">Error. Imposible generar numero a partir de cero.</span>';
            return;
        }

        //Continuar corriendo codigo
        numero=Math.floor(Math.random() * (maxgen - mingen + 1)) + mingen;
        //alert("Número generado exitosamente utilizando "+mingen+" y "+maxgen+" como valores máximos y minimos.");

        //En caso de que no se desee utilizar un rango personalizado continuar en modo 2
    }else if(modo=="2"){
        //alert("[Cancelado] Utilizando modo estandard.")

        //Pedir valor 
        adivinar=document.getElementById("adivinar").value;

        //Cancelar codigo si el numero maximo esta vacio
        if(adivinar==""){
            document.getElementById('status').innerHTML='<span id="status" style="color: #DBA901;">Por favor ingresa el numero maximo posible de genrar.</span>';
            return;
        }

        //Continuar corriendo codigo
        adivinar=parseInt(adivinar);
        if(adivinar>=100 && adivinar<=1000){
            //alert("Numero máximo seleccionado: "+adivinar);
            numero=Math.floor(Math.random()*adivinar)+1;
        }else{
            document.getElementById('status').innerHTML='<span id="status" style="color: #DBA901;">Por favor ingresa un numero maximo entre 100 y 1000.</span>';
            return;
        }
    }

    //Processing [PROBABLY WHERE THE ERROR IS AT]

    do{

        ingresar=document.getElementById("ingresar").value;

        //Cancelar codigo si no se pone numero
        if (ingresar==""){
            document.getElementById('status').innerHTML='<span id="status" style="color: #DBA901;">Ingresa un numero a adivinar..</span>';
            return;
        }

        ingresar=parseInt(ingresar);
        contador++;

        //¿Tenes la respuesta Maikol?
        if(ingresar==numero){
            document.getElementById('status').innerHTML='<span id="status" style="color: #DBA901;">El numero es: '+numero+ '¡Bien! ¡Lo Lograstes en '+contador+' veces!</span>';
            //alert("¡Bien!, ¡lo lograstes!. el número era: "+numero);
        }else{

            //Algoritmo de de aproximación a número aleatorio
            if(ingresar>numero)aproximacion=", es menor a lo que ingresastes.";else aproximacion=", es mayor a lo que ingresastes.";

            //Algoritmo de aproximacion entre dos números
            aviso=0;

            if(ingresar>numero || ingresar<numero){
                if(numero>1000 && numero>mingen && aviso==0) {document.getElementById('status').innerHTML='<span id="status" style="color: green;">El número es mayor de ' +mingen+',además'+aproximacion+'</span>'; aviso=1; }
                if(numero<1000 && numero>700 && aviso==0) {document.getElementById('status').innerHTML='<span id="status" style="color: green;">El número está entre 700 y 1000, además'+aproximacion+'</span>'; aviso=1; }
                if(numero<700 && numero>500 && aviso==0) {document.getElementById('status').innerHTML='<span id="status" style="color: green;">El número está entre 500 y 700, además'+aproximacion+'</span>'; aviso=1; }
                if(numero<500 && numero>200 && aviso==0) {document.getElementById('status').innerHTML='<span id="status" style="color: green;">El número está entre 200 y 500, además'+aproximacion+'</span>'; aviso=1; }
                if(numero<200 && numero>100 && aviso==0) {document.getElementById('status').innerHTML='<span id="status" style="color:green;">El número está entre 100 y 200, además'+aproximacion+'</span>'; aviso=1; }
                if(numero<100 && numero>50  && aviso==0) {document.getElementById('status').innerHTML='<span id="status" style="color: green;">El número está entre 50 y 100, además'+aproximacion+'</span>'; aviso=1; }
                if(numero<50 && numero<maximo && aviso==0) {document.getElementById('status').innerHTML='<span id="status" style="color: green;">El número es menor de '+maximo+' y tambien '+aproximacion+'</span>'; aviso=1; }
                if(numero<50 && aviso==0) {document.getElementById('status').innerHTML='<span id="status" style="color: green;">El número es menor a 50'; aviso=1; }
            }
        }
    }while(ingresar!=numero);

    //Felicidades
    //alert("¡Felicidades, lograstes descubrirlo en unas "+contador+" veces!");
}
    </script>
</head>
<body>
<center>
    <h1>Adivina tu Número V4.1 Box</h1>Versión mejorada, acepta generar rango de valores personalizados.
    <p>¿Estás preparado para el reto?</p>
<img src="http://www.ilyke.net/uploads/2010/09/26/sub/763-7-Bursting-Light.gif" style="width:400px;eight:400px;" alt="Hola"/>
<br/><br/>

<p><h1><span id="status">You are not playing yet..</span></h1></p>
<form>
<h4>Custom Value Range</h3>
Minimum Value <input type="text" style="width:100px;" id="mingen"/><br><br>
Maximum Value <input type="text" style="width:100px;" id="maxgen"/>
</form>

<form>
<h4>Maximum number to generate in normal mode</h3>
Máximo <input type="text" style="width:100px;" id="adivinar"/><br><br>
</form>

<form>
    <h3>Adivina tu Número!</h3>
<input type"text" id="ingresar"/>
</form>

<button style="height:40px; width:150px" onclick="configuracion()">Mode Selection</button>
<button style="height:40px; width:150px" onclick="juego()">Go</button>
<p>Modo Actual: <span id="modo" style="color: red;">N/A</span></p>
</center>


</body>
</html>

非常感谢。 马科斯MC

0 个答案:

没有答案