Lisp Game Programming <Step3-4>
step3の4番目はクラスから生成したオブジェクトのイメージidからキャラクタidを指定しての描画
;; step3 <Draw images>
;; -----------------------------------------------------------------------------------------------
(defun Draw (obj)
"character draw"
(ecase (imageid obj)
(0 (sdl:draw-surface-at-* *image0* (x obj) (y obj) :cell (id obj)))
(1 (sdl:draw-surface-at-* *image1* (x obj) (y obj) :cell (id obj)))
(2 (sdl:draw-surface-at-* *image2* (x obj) (y obj) :cell (id obj)))))
そしてイニシャライズ
ゲームのフレームレートを60にセット
乱数の設定
step<3-1>で作ったイメージデータのセット
カーソルの非表示
;; step3 <Initialize>
;; -----------------------------------------------------------------------------------------------
(defun Initialize ()
"graphics initialize"
(setf (sdl:frame-rate) 60) ; frame rate set
(setf *random-state* (make-random-state t)) ; random set
(Set-imageid) ; imageid set
(sdl:show-cursor nil)) ; cursor not show
プログラムは以下のような形となる
(defun Common-shooter ()
"main routine"
・・・・・・
; step 3
(Initialize)
; step 3
(let((ship (make-instance 'entity :imageid 0 :id 0 :x 224 :y 416 :width 32 :height 32 :dx 4 :dy 4 :state 1)))
・・・・・・
(sdl:with-events (:poll)
・・・・・・
;step 3
(when (= (state ship) 1)
(Draw ship))
(sdl:update-display))))