У меня есть дом с комнатами, которые определяются соединениями, когда вы можете переходить из одной комнаты в другую, например.пролог рекурсивный поиск с ограничениями
connection(garage,sidehall).
connection(sidehall,kitchen).
connection(kitchen,diningroom).
canget(X,Y):-connection(X,Y).
canget(X,Y):-connection(X,_),
write('player goes from '),write(X),write(' to '),write(Y),nl,
canget(_,Y).
Im пытаясь выяснить, как сделать это так, игрок может получить только из одной комнаты в другую, когда у них есть определенный элемент, например, вы можете быть только в кухне, когда элементы = перчатки.
canget(X,Y,Item):-connection(X,Y,Item),canbein(Y,Item).
canget(X,Y,Item):-connection(X,Somewhere,Item),canbein(Somewhere,Item),canget(Somewhere,Y,Item).
попытался определения canbein с:
canbein(kitchen):- item(sword).
canbein(sidehall):- item(hat).
но не работает!
Определили мои детали, как, например, не уверен, если это право либо:
item(gloves,sword,helm,cheese).
В принципе, я возвещаю мои ценности запись правильно? Как я могу использовать определенное значение элемента, чтобы сделать canget x to y false?
Спасибо!
спасибо большое, признайтесь. думаю, я понимаю это немного лучше сейчас :) Я сосать его программирование! – JJ1
@ JJ1 Пожалуйста, обратите внимание на ответ, если это вам помогло :) Это хорошо распространено в stackoverflow, так как другие пользователи будут знать, что он решает проблему. Вы можете проголосовать, если вам нравится стиль и т. Д. – petrbel