CommonLispで作るSTG~その2~


はじめに

以前、「Common LispでSTGを作りますが何か?」のRaspberryPi上で環境構築を行う記事を書きましたが、Quicklispを使った簡単なやり方を見つけたのでそれを記載しておきます。

Quicklispの導入

まずは、以下のコマンドでquicklisp.lispをダウンロードしてきます。

curl -O http://beta.quicklisp.org/quicklisp.lisp

次に、ダウンロードしてきたquicklisp.lispをSBCLで実行します。

sbcl --load quicklisp.lisp

色々処理が終わったら入力できるようになるので、以下のコマンドを入力しQuicklispをインストール。

(quicklisp-quickstart:install)

インストールが終わったら以下のコマンドを入力し、.sbclrcにquicklispのパスを通します。
こうすることで、sbcl起動時に自動的にロードされるようになります。

(ql:add-to-init-file)

QuicklispでLispbuilder-sdlをロード

SBCLを起動し、以下のコマンドを実行することで、Lispbuilder-sdlをロードできます。

(ql:quickload :lispbuilder-sdl)

最初の1回目は結構時間がかかりますが、2回目以降はそんなに時間はかかりません。

追記

Lispbuilder-sdlのロードで失敗する場合は、以下のものをそれぞれインストールすれば成功すると思います。

SDLのインストール

sudo apt install libsdl1.2-dev

SDL_imageのインストール

sudo apt install libsdl-image1.2-dev

SDL_ttfのインストール

sudo apt install libsdl-ttf2.0-dev

SDL_mixerのインストール

sudo apt install libsdl-mixer1.2-dev

SDL_gfxのインストール

sudo apt install libsdl-gfx1.2-dev

パッケージ作成

Lispbuilder-sdlをQuicklispでロードし、パッケージ定義。

packages.lisp
(ql:quickload "lispbuilder-sdl")

(defpackage :cl-sdl
  (:use :common-lisp
        :lispbuilder-sdl))

STGソースコードの修正

「Common LispでSTGを作りますが何か?」の作者様のWebサイト「いで庵」で公開している各章のソースコードの内、最終章であるchapter09の「main.lisp」を修正します。

修正とは言ってもファイルの先頭に以下のソースコードを追加するだけです。

main.lisp
(load "packages.lisp" :external-format :utf-8)

(in-package :cl-sdl)

~(中略)~

また、ファイルをロードするだけでゲームを実行できるように「main.lisp」のファイルの最後に以下のソースコードを追加します。

main.lisp
~(前略)~

(main)

最後に、前章で作成したパッケージ「packages.lisp」をchapter09のフォルダ内に入れておいてください。

実行

以下のコマンドで実行します。

sbcl --load main.lisp

こうすれば、以下のように自動でゲーム起動までしてくれます。

最後に

前回作成した記事ではやたらと面倒な手順を踏んでようやく実行できたことが、Quicklispを使うことでかなり楽にできるようになりました。
今回作成した「packages.lisp」と「main.lisp」の最初と最後に入れたソースコードをテンプレートとしておけば自分で1からゲームを作成するときに便利かもしれません。
また、電子工作と組み合わせたりもできると思うので、センサーを使ったゲームとかも作れるかもしれませんね。