add-item!
指定したプレイヤーの持ち物に、指定したアイテムを追加する手続きadd-item!。
答えを見ずに書いたら間違えた。
;; アイテムを追加する (define add-item! (lambda (player item) (let ((items (cdr (assoc 'inventory player)))) (push! items item))))
使ってみる。
gosh> (add-item! *player* 'elixir) (elixir potion potion dagger cookie dagger) gosh> *player* ((hp . 320) (mp . 66) (position . #f) (inventory potion potion dagger cookie dagger))
エリクサー追加できてない!!ヽ(`Д´)ノウワァァァァン
本を見てみると、letでの名前を束縛の仕方が違う。
(let ((p (assoc 'inventory player))) ...)
じゃないっすか。
で、push!するときに
(push! (cdr p) item)
ってしてるのね。
cdrをやるタイミングで違う結果になってる...?
なんでじゃろ?うーむ...