es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Formas de tomar múltiples variaciones de entradas para significar lo mismo?

Tengo que hacer un juego de texto en Java para la universidad y quiero permitir que los usuarios utilicen varias variaciones de comandos y varios nombres para objetos / NPC. ¿Cuál es la mejor manera de hacer esto?

Por ejemplo, si quiero que las personas vayan hacia el oeste, quiero que puedan decir “Ir hacia el oeste” o “Dirigirse hacia el oeste” o “Caminar hacia el oeste”, etc.

Entiendo que puedo hacer esto con muchos de estos:

if (command.equals(“dirigirse”) || command.equals(“caminar”) || command.equals(“viajar”) || command.equals(“ir”))

pero no solo esto es largo y feo, sino que con cada comando, cada objeto y cada personaje se volverá increíblemente largo e ineficiente. ¿Hay alguna otra manera mejor de hacer esto que no sea extremadamente avanzado? Gracias.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Una manera de abordar este problema es creando un mapeo entre las posibles variaciones de un comando y el comando estándar. Por ejemplo, podríamos crear un HashMap donde las llaves son variaciones del comando “ir al oeste” y los valores son el comando estándar “ir al oeste”. Luego, cuando el usuario ingrese un comando, podemos comprobar si coincide con cualquiera de las llaves en el HashMap y utilizar el valor correspondiente como el comando estándar.

    Aquí hay un código de muestra para ilustrar este enfoque:

    import java.util.HashMap;
    import java.util.Scanner;
    
    public class TextGame {
      public static void main(String[] args) {
        HashMap<string, string=""> commandVariations = new HashMap<string, string="">();
        commandVariations.put("ir al oeste", "ir al oeste");
        commandVariations.put("dirigirse al oeste", "ir al oeste");
        commandVariations.put("caminar hacia el oeste", "ir al oeste");
    
        Scanner scanner = new Scanner(System.in);
        String userInput = scanner.nextLine();
    
        if (commandVariations.containsKey(userInput)) {
          String standardCommand = commandVariations.get(userInput);
          // hacer algo con el comando estándar
        } else {
          // manejar comando inválido
        }
      }
    }
    

    Por supuesto, tendríamos que crear mapas similares para cada objeto o nombre de NPC del que queramos tener múltiples variaciones. Este enfoque es más eficiente que escribir una larga lista de declaraciones if, y también permite una fácil personalización de las variaciones de comandos en caso de que desee agregar o eliminar algunas más adelante.</string,></string,>

Comments are closed.