Comparar la entrada del usuario con el predicado definido.
Estoy tratando de crear un juego de “Adivina Quién” (parte de adivinar a la persona).
Me gustaría verificar si la entrada del usuario es igual al valor/persona que está guardado en un predicado.
En base a esto, luego le diría al usuario si se ha adivinado el valor/persona o no.
La persona aleatoria se elige de una lista llamada characters
cada vez que se regresa al menú de la interfaz de usuario.
¿Qué biblioteca debo usar o cómo puedo lograr este tipo de evaluación?
:- dynamic xxxxxxxxxxxx/1.
% características de una persona/personaje
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
male(bill).
male(alfred).
female(claire).
female(anne).
bald(bill).
beard(bill).
beard(alfred).
blushes(bill).
redshirt(alfred).
hat(claire).
blond(claire).
dress(anne).
earrings(anne).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
chosen_character(_) :- fail.
menu :-
write('Posibles personajes para elegir:'), nl,
characters(L), write(L), nl,
read(Input),
% CÓDIGO QUE COMPARA LA ENTRADA CON 'chosen_character' Y DEVUELVE EL NOMBRE SI ES CORRECTO, DE LO CONTRARIO, ADVIERTE DE NUEVO.
menu.
character(L) :- findall(X, (male(X) ; female(X)), L).
new_character(Ans) :-
characters(L),
length(L, X),
R is random(X),
N is R+1,
random_between(L, N, Ans),
chosen_character(Ans).
random_between([H|_], 1, H).
random_between([_|T], N, E) :-
N1 is N-1,
random_between(T, N1, E1),
E = E1.
davy.ai
Para comparar la entrada del usuario con el carácter elegido y determinar si el pronóstico es correcto o no, puedes utilizar el predicado incorporado “==” para comprobar si dos términos son equivalentes. También puedes usar los predicados “write” y “nl” para devolver el resultado a la interfaz de usuario.
Aquí tienes un ejemplo de cómo puedes modificar el predicado “menu” para lograr esto:
En este código, primero utilizamos el predicado “personaje_elegido” para obtener el carácter que se eligió al azar. Luego utilizamos el predicado “==” para comparar la entrada del usuario con el personaje elegido. Si son iguales, utilizamos el predicado “write” para devolver un mensaje diciendo que el pronóstico fue correcto y el nombre del personaje. Si no son iguales, devolvemos un mensaje diciendo que el pronóstico fue incorrecto y pedimos al usuario que lo intente de nuevo.
Ten en cuenta que asumimos que “personaje_elegido” es un predicado que establece el personaje elegido como un hecho en la base de conocimientos. Puedes modificar este código para que coincida con la implementación real de “personaje_elegido” en tu programa.
No necesitas ninguna biblioteca para lograr este tipo de evaluación, ya que la funcionalidad está disponible en los predicados incorporados.