본문 바로가기

개발관련/LISP 배워볼까?

물건 내려 놓는건? ( pickdown )

아이템을 집었을 때의 동작 모습


 5장에 있는 텍스트 게임 엔진 만들기에 보면 다 맘에 드는데 한가지 어처구니 없는 것이 있다.

 아이템을 집었으면 다시 놓는 것도 있어야 하는데.. 없다..;;

 게다가 리스트에 넣을때는 'push' 로 간단하게 넣으면 되는데 'pop'은? 

 인덱스에도 없는 걸 보면 없는건지.. 아님 내가 못찾는 건지..ㅜ;;

 그래서 그냥 지금까지 배운 것으로 대충.; ( 사실 있는 소스에 살짝.ㅋ )

(defun pickdown (obj)
        (cond ((member obj (inventory))
                (push (list obj *location*) *object-locations*)
                `(you are now pick-down the ,obj in ,*location*))     
                (t '(You have not that item.))))

 (inventory) 를 쓸 경우 obj 에 'item- 를 넣을 경우도 해당 되지만..모 지금은 테스트용이니까

아이템을 놓았을 때의 모습


 object-at 함수에서 쓰는 assoc 명령어 특성 때문에 그냥 최상위에 놓아도 된다지만..

그럼 들었다 내렸다 할 때마다 *object-locations* 에 리스트가 계속 늘어날텐데.. 상관

없는건지 어떤건지..--;;

 이건 아직 어떤식으로 동작하는 지도 모르겠으니..--?; 

( 테스트 환경 : windows-7 - CLISP )