`(kakko ,man)

Find a guide into tomorrow by taking lessons from the past

Road to the Programmer

Lisp Game Programming 2 <Bug>

0での除算でエラーが出ていることから、0の場合は除算しなければいいとの安易な対応を実施。 エラー箇所を以下のように変更 ;; Step13 <Set Enemy Shot angle> ;; --------------------------------------------------------------------------------------------- (defvar *rang</set>…

Lisp Game Programming 2 <supplement>

Clozure clがエラーで起動できないのはウィルス対策ソフトだと判明したのもつかの間、今度は、SBCL 1.1.12が起動できなくなったので、最新バージョンのSBCL 1.3.1を入れて、先に作った common-abogadro を起動してみるとこんなことが分かった。さすが、最新…

Lisp Game Programming 2 <Stage 14>

最後はお約束のasdfを使うためのパッケージ化。 package.lisp ⇒ ;;;; package.lisp (defpackage :game (:use :common-lisp :lispbuilder-sdl :sprite-sheets :map-list :enemy-map-list :audio-list :move-pattern :shot-data) (:nicknames :shooting) (:exp…

Lisp Game Programming 2 <Stage 13-3 Program>

弾幕の作成では一気に突っ走った。 今回、目的としていたプログラムは以下のとおり。 なお、このプログラムを動かすための必要なファイルは過去のブログで作成しているため、遊んでみたい方は参照してくださいな。ab-stage13.lisp⇒ ;;;; The Common-Abogadro…

Lisp Game Programming 2 <Stage 13-2 Barrage>

Stage1のボスキャラの弾幕(ショットパターン:6、7) Stage2のボスキャラの弾幕(ショットパターン:8、9、10) ※8と9は32方向に円形の弾幕を張り、10はshipに向かって10連発 ミドルクラスの敵の弾幕(ショットパターン:3、4) ※3は回転しながら4方向に5連…

Lisp Game Programming 2 <Stage 13-1 Structure>

参考にしているサイトのショットパターンをそのまま利用するのが近道と判断し、それをLispで記述した。 当初考えたとおり、ショットパターンの構造体を作りそれを配列にしてみた。 なお、HSPでは360度を256分割した数値で表現しているため、それを考慮して数…

Lisp Game Programming 2 <Stage 12>

Stage12では、shipが敵や敵弾と衝突したときのプログラムを組みこんでみる。 また、STAGEが切り替わるためには、デカキャラを倒す必要があり、普通の敵より激しい爆発として作成したのが以下のプログラム。 これで「ほぼ」完成!(弾幕を除き) ;; Step12 <Ship Hit P> ;;</ship>…

Lisp Game Programming 2 <Stage 11>

Stage11では、左Shiftキーを押すと敵と敵の弾が全て破壊され、爆発するような関数を組み込むことにする。以下のプログラムでは、bomb-managerクラスの作成と、shipが爆発中でなく且つボムが残っていて爆発中でない時に左Shiftキーを押すと、ボムが爆発してボ…

Lisp Game Programming 2 <Stage 10-2 Program>

まだ、衝突判定やオプションのボムを組み込んでいないが、一旦プログラムの全体像を見てみる。 ※OSが7から10に変わったことで、それまでemacs+slimeで動作の検証に使っていたCCLが起動しなくなった。 こんな感じ! Can't allocate required TLS indexes. Fir…

Lisp Game Programming 2 <Stage 10-1 Audio>

そろそろサウンドのプログラムを組み込んでおかないと、後から追加するのは面倒っぽいので、ゲームで使うサウンドを組み込むこととする。 Lisp Game Programmingで作ったプログラムをパッケージ化して流用。 audio-list.lisp⇒ (defpackage :audio-list (:use…

Lisp Game Programming 2 <Stage 9>

前回ではオプションを取ると自分の周りをバルーンが回るように設定したが、敵も弾をださないとつまらないので以下のプログラムを作ってみた。敵が発射する弾は1方向のみだが、自分の移動先をめがけて撃ってくる。 これを実現するために、Lispのsqrt関数を使…

Lisp Game Programming 2 <Stage 8>

マップ上に登場する敵以外のもので「オプション」と「ボム」のアイテムがあるが、どのように処理しているのかざっと見てみると、こんな感じの動作をしている オプション → 取ると、自分の周りを回転するバルーンが1個ずつ増え、最大は2個まで。 それ以上取…

Lisp Game Programming 2 <Stage 7>

マップスクロール、スタート&ゲームオーバー画面、敵の出現と作ってきたのでプログラムが長くなり、読みにくくなったため、表示方法を変更することとした。 ※実はWeb系はまったくの苦手で、CSSって言葉を今回初めて知った。 Stage7では、マップと敵の出現…

Lisp Game Programming 2<Stage 6-2>

<Stage 6-1>で作った,enemy-map-list.lispとmove-pattern.lispを読み込むテストプログラムを作ってみた。 画面イメージのidを使用しているため、敵の画像が回転したりするとidが切り替わる仕様のため、かなりゴチャゴチャしたプログラムとなってしまった。 たとえば、敵</stage>…

Lisp Game Programming 2 <Stage 6-1>

敵のいないシューティングゲームなんて、「○○の入らないコーヒーみたい」(このフレーズを知っている人は相当なオジサン)なので、オリジナルのサイトをまねてやってみた。かなり汚いコードになったが、動けばヨシと割り切る。 まずは、8つの敵の配置データ…

Lisp Game Programming 2 <Stage 5 Information>

ちょっと補足。 プログラムを見れば一目瞭然だけど、メニュー画面では、UP・DOWNキーを押すことでポインターが動き、メニューを指し示すことができる。 また、左のSHIFTキーを押すことで、スクリーンをFULLSCREENかWINDOWに切り替えることができ、STARTやEXI…

Lisp Game Programming 2 <Stage 5>

3面切り替えのスクロールができたので、ここも一気にスタートメニューからゲームオーバーのメッセージまで作成。 ここでの工夫は、画面のモードの切り替え方法。 https://github.com/jueqingsizhe66/lispbuilder-1/blob/master/lispbuilder-sdl/examples/pa…

Lisp Game Programming 2 <Stage 4>

せっかく3面のマップを用意したのだから、stage1→stage2→stage3と切り替わっていくプログラムとする。 まずは font ;; step1 <Fix Ship Position>;; ----------------------------------------------------------------------------------------------- ・・・・・・・・・・・</fix>…

Lisp Game Programming 2 <Stage 3>

さて、スクロールのテスト開始。 スクロール用のプログラムを以下のように追加(青字)して、CL-USER>(common-abogadro)を実行すると、想定どおりにスクロールした。 なお、赤字の*map1*を*map2*や *map3*に変更するとそれぞれのマップが表示される。 ab-sta…

Lisp Game Programming 2 <Stage 2>

参考にさせていただいたサイトのリストを見たところ、キャラクタのidをリストにしていた。 これを参考に、先のプログラムで読み込んだid番号と比べてみたらこんなmap用のプログラムができた。 3面のmapを以下に用意したけど、スクロールの仕方はこんな感じ…

Lisp Game Programming 2 <Stage 1>

mapchipが1つだとスクロールが簡単に実現できた。 http://tomekame0126.hatenablog.com/entry/2014/07/03/055411 でも、地図のようなものはmapchipの組み合わせでできているため、Lispではどのようにスクロールを実現(市販のゲームのようなイメージ)でき…