lispbuilder-sdlでウィンドウ表示
大体lispbuilder-sdlの環境構築は前回と前々回書いてきました。
なんとなく、今回は実際にウィンドウ表示などでもしてみようかと思います。
lispbuilder-sdlウィンドウ表示するための最小限のコードは以下のような感じになります。
(sdl:with-init () (sdl:window 640 480 :title-caption "Window Test") (sdl:with-events () (:quit-event () t) (:key-down-event () (sdl:push-quit-event)) (:idle () (sdl:clear-display sdl:*black*) (sdl:update-display))))
短くていい感じですね。
実行すると
こんな感じでウィンドウが表示されます。
コードの解説
with-init,with-eventsはマクロです。こういったマクロを用意してくれているので、無駄なコードを余り記述しないでゲームを作成していくことができます。
- with-init
これはsdlの初期化を行ってくれるマクロです。このwith-initで囲われた部分から出るときにsdlの後始末も実行してくれます。普通のCommon Lispにあるwith-系マクロと同じ系統のものですね。
- with-events
このマクロは便利ですね。このwith-eventsで囲われた部分が無限ループとして展開されます。ループの間にキーボード入力、終了イベントといったイベント発生時に、イベントに対応するフォームを実行するマクロです。例えば、キーボードが押された場合には:key-down-eventのフォーム、終了イベントでは:quit-eventといったよう各種イベントに対応するフォームが実行されます。:idleだけ若干扱いが違って毎フレームの描画や更新といったことを実行する場合のフォームとなっています。
この:idleで始まっている部分にゲーム本体を記述していくことでゲームの開発を進めることができます。
ね。簡単でしょ。
じゃー。