Lisp Scheme Part39
■ このスレッドは過去ログ倉庫に格納されています
0256デフォルトの名無しさん
2014/11/02(日) 10:58:51.49ID:5lL/XLna環境の状態を、関数の引数に渡していく方法でゲームを作ってて、
毎回コピーしてから値の更新するのが面倒だったんだよね
大体こんな感じ↓
(defun battle (player enemy)
(battle (move player 1 2)
(attack player enemy)))
(defun attack (a b)
(update-struct b
:hp (- (player-hp b)
(player-attack a))))
(defun move (s x y)
(let ((pos-x (pos-x (player-pos s)))
(pos-y (pos-y (player-pos s))))
(update-struct s
:pos (make-pos :x (+ pos-x x)
:y (+ pos-y y)))))
; update-struct を使用しない場合
(defun attack (a b)
(let ((copy-b (copy-player b)))
(setf (player-hp b)
(- (player-hp b)
(player-attack a)))))
■ このスレッドは過去ログ倉庫に格納されています