// 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 }
// 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); }
// 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 }