Ejemplo n.º 1
0
    /*
     * Metodo que comprueba si la respuesta seleccionada
     * a traves del boton es la correcta correspontiene al nivel
     * actual
     * x: Boton que contiene la respuesta seleccionada
     *
     * */
    public void Comprobar(Button x)
    {
        //Si estamos en un nivel permitido y no esta activo el panel de avisos
        if (_adivinanzaNivel <= _adivinanza.ContAdivinanzas() && !_modalPanel.IsActivo())
        {
            //Compruebo si acierta(el contenido del boton es igual a la respusta del nivel actual
            if (x.GetComponentInChildren <Text>().text == _respuestactual)
            {
                //Actualizamos variables
                diamantes++;
                aciertos++;


                UpdateTextMesh(diamantesTextMesh, diamantes.ToString());
                UpdateTextMesh(AciertosTextMesh, aciertos.ToString());

                /*
                 * Aviso del acierto y pido
                 * ok para poder pasar al siguiente nivel
                 */
                /*	_modalPanel.Elejir("Has acertado!. +1.Diamante. Ganaste a la Chispa.Pasar siguiente nivel",
                 *                         SiguientePantalla, aceptarButton, cancelarButton, true);
                 */
                /*
                 *
                 * Aviso que se ha acertado
                 * */
                _modalPanel.AvisoAcierto("Has acertado!. +1.Diamante. Ganaste a la Chispa.Pasar siguiente nivel"
                                         , SiguientePantalla, aceptarButton, cancelarButton, helpButton);
            }
            else
            {
                //Actualizamos variables
                fallos++;
                diamantes--;

                UpdateTextMesh(FallosTextMesh, fallos.ToString());
                UpdateTextMesh(diamantesTextMesh, diamantes.ToString());

                /*
                 * Aviso del acierto y pido
                 * ok para poder pasar al siguiente nivel
                 */
                /*_modalPanel.Elejir("Has Fallado!. -1.Diamante.Gana la Chispa. Pasar siguiente nivel",
                 *                 SiguientePantalla, aceptarButton, cancelarButton, true);
                 *
                 */
                /*
                 *
                 * Aviso que se ha acertado
                 * */
                _modalPanel.AvisoAcierto("Has Fallado!. -1.Diamante.Gana la Chispa. Pasar siguiente nivel",
                                         SiguientePantalla, aceptarButton, cancelarButton, helpButton);
            }
        }
    }
Ejemplo n.º 2
0
    /*
     * Update para detectar lo que esta pasando
     * cada fotograma en el minijuego
     */
    void Update()
    {
        //Si hay click y el panel no esta activo
        if (Input.GetMouseButton(0) && !_modalPanel.IsActivo())
        {
            /*
             * Un Ray es un rayo imaginario que lanzo desde la camara hacia la
             * profundidad y si impacta en un cuadro entonces actuo
             */
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            //Para detectar donde impacta el rayo(para saber donde ir)
            RaycastHit hit = new RaycastHit();

            //Si detactamos que el rayo impacta
            if (Physics.Raycast(ray, out hit))
            {
                //Obtengo el objeto donde impacto el ray por el nombre del collider del hit
                GameObject o = GameObject.Find(hit.collider.name);

                /*
                 * Si el nombre contine ! sabemos que es un cuadro inferior
                 * (posibles respuestas)
                 */
                if (o.name.Contains("!"))
                {
                    //Textmesh de la letra (cuadros posible respuesta)
                    TextMesh tletras = o.GetComponentInChildren <TextMesh>();
                    //Obtengo los cuadros de la respuesta para saber cual no tiene letra puesta
                    var resp = GetRespObjs();

                    /*
                     * Recorro cada cuadro de la respuesta para comprobar
                     * si estan llenos. Si alguno esta en blanco asigno la letra
                     * correspondiente y espero al sigiente
                     * click para volver a comprobar
                     */
                    foreach (var cuadro in resp)//Por cada cuadro en la respuesta
                    {
                        //Obtengo el TextMesh del cuadro de la respuesta
                        var tresp = cuadro.GetComponentInChildren <TextMesh>();

                        if (tresp.text == "")//Si esta en blanco
                        {
                            //Asigno la letra(posible respuesta)al cuadro que clickeo(respuesta)
                            tresp.text = tletras.text;


                            /*
                             * Cambio posicion del cuadro que clickeo (letra posible respuesta) aumentado
                             * el eje y para que desaparezca, ya que ha sido puesta en la solucion
                             */
                            o.transform.position = new Vector3(o.transform.position.x, o.transform.position.y + 20f,
                                                               o.transform.position.z);

                            /*
                             * Para que no se vea en la escena, guardo el objeto(el que acabo de poner)
                             * para tener constancia que existe y saber que esta en la nuevo eje y
                             */
                            EstadopLetras.Add(o);

                            /*
                             * Obtengo la respuesta al nivel actual
                             * Compruebo el estado de la respuesta y hagos
                             * los respectivos cambios
                             * Y salgo hasta el siguiente click
                             */
                            var actual = GetActual(GetRespObjs());
                            CheckandSet(actual, arregloactual[0].ToString());
                            break;
                        }
                    }
                }
                //Si el rayo impacta en un cuadro de los de la respuesta

                /*
                 * Si el nombre contine * sabemos que es un cuadro superior
                 * (en la respuesta)
                 */
                if (o.name.Contains("*"))
                {
                    //Obtengo el texto actual que esta puesto en la respuesta
                    var rLetras = o.GetComponentInChildren <TextMesh>();
                    //Es6tado de las letras que estan arriba o sea las que estan asignadas

                    /*
                     * Recupero las letras de la posible respuesta
                     * que ha sido asignadas en la respuesta(cuadros superiores)
                     * y se han guardado su estado
                     */
                    var letrasAsig = GetLetras();

                    /*
                     * Recorro las letras que han sido asignadas
                     */
                    foreach (var letraA in letrasAsig)
                    {
                        /*
                         * Obtengo el TextMesh de la letra que toque
                         * segun el recorrido. Si hay una letra que no es igual
                         * a la letra que clickea (cuadro respuesta)
                         * Compruebo la siguiente. Hasta encontrar una igual
                         */
                        var tresp = letraA.GetComponentInChildren <TextMesh>();
                        if (tresp.text != rLetras.text)
                        {
                            continue;
                        }


                        /*
                         * Asigno la letra que esta en respuesta
                         * al cuadrado inferior correspondiente
                         * Y bajo la letra de la respuesta
                         * a su posicion original y actualizo
                         * en los componentes que afecta
                         */
                        tresp.text = rLetras.text;
                        ArribaAabajo(tresp.text);
                        EstadopLetras.Remove(letraA);
                        //Borro la letra del cuadro de respuesta
                        rLetras.text = "";
                        break;
                    }
                }
            }
        }
    }