Example #1
0
        // Muestra la solución obtenida paso a paso y con una animación
        private void ShowSolution(List <Operator> operators, Metrics metrics)
        {
            // el resultado lo tenemos que mostrar de manera animada, haciendo acción tras acción
            foreach (Operator op in operators)
            {
                Position position = solver.GetOperatedPosition(puzzle, op);
                board.Move(board.GetBlock(position), BlockBoard.AI_DELAY);
                Debug.Log("Applying " + op.ToString() + " operator");
            }

            steps = Convert.ToUInt32(operators.Count);

            UpdateInfo();

            // Mostrar tanto el resultado como las métricas... lo mismo incluso paso a paso y en otro color, para diferenciar cómo quedan al terminar :-)
            //...las métricas pintarlas pintar por la pantalla o en fichero
            Debug.Log("Métrics: " + metrics.ToString()); // hacer bucle para mostrarlas todas
        }
Example #2
0
        // Notifica el intento de movimiento al tablero de bloques (si lo hay), cuando se recibe un clic completo de ratón (apretar y soltar)
        // Podría reaccionarse con un sonido si el intento falla, aunque ahora no se hace nada
        // La he puesto pública para que se puedan simular pulsaciones sobre un bloque desde el gestor
        public bool OnMouseUpAsButton()
        {
            if (board == null)
            {
                throw new InvalidOperationException("This object has not been initialized");
            }

            Debug.Log("Trying to move " + ToString() + "...");
            if (board.CanMove(this))
            {
                board.UserInteraction(); // Aviso de que lo he tocado para que se pongan los contadores a cero (por si contenían algo)
                MovableBlock block = board.Move(this, BlockBoard.USER_DELAY);
                Debug.Log(ToString() + " was moved.");

                return(true);
            }

            Debug.Log(ToString() + " cannot be moved.");
            return(false);
        }
Example #3
0
        // Muestra la solución obtenida paso a paso y con una pequeña animación o pausa
        private void ShowSolution(List <Operator> operators)
        {
            if (operators.Count == 1 && operators[0].isNoOperator())
            {
                steps = 0;
            }
            else
            {
                foreach (Operator op in operators)   // Pausar tras cada movimiento realizado
                {
                    Position position = solver.GetOperatedPosition(puzzle, op);
                    board.Move(board.GetBlock(position), BlockBoard.AI_DELAY);
                    Debug.Log("Applying " + op.ToString() + " operator");
                }

                steps = Convert.ToUInt32(operators.Count);
            }

            metricsString.text = metrics.ToString();
            UpdateHUD();

            // Mostrar tanto el resultado como las métricas... se podría mostrar paso a paso y en otro color, para diferenciar cómo queda todo al terminar
        }