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でロードし、パッケージ定義。
(ql:quickload "lispbuilder-sdl")
(defpackage :cl-sdl
(:use :common-lisp
:lispbuilder-sdl))
STGソースコードの修正
「Common LispでSTGを作りますが何か?」の作者様のWebサイト「いで庵」で公開している各章のソースコードの内、最終章であるchapter09の「main.lisp」を修正します。
修正とは言ってもファイルの先頭に以下のソースコードを追加するだけです。
(load "packages.lisp" :external-format :utf-8)
(in-package :cl-sdl)
~(中略)~
また、ファイルをロードするだけでゲームを実行できるように「main.lisp」のファイルの最後に以下のソースコードを追加します。
~(前略)~
(main)
最後に、前章で作成したパッケージ「packages.lisp」をchapter09のフォルダ内に入れておいてください。
実行
以下のコマンドで実行します。
sbcl --load main.lisp
こうすれば、以下のように自動でゲーム起動までしてくれます。
最後に
前回作成した記事ではやたらと面倒な手順を踏んでようやく実行できたことが、Quicklispを使うことでかなり楽にできるようになりました。
今回作成した「packages.lisp」と「main.lisp」の最初と最後に入れたソースコードをテンプレートとしておけば自分で1からゲームを作成するときに便利かもしれません。
また、電子工作と組み合わせたりもできると思うので、センサーを使ったゲームとかも作れるかもしれませんね。
Author And Source
この問題について(CommonLispで作るSTG~その2~), 我々は、より多くの情報をここで見つけました https://qiita.com/fireflower0/items/aafc9945185a266d5c74著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .