`(kakko ,man)

Find a guide into tomorrow by taking lessons from the past

Lisp Game Programming 再履修 <その13> game map

正月のイベントもほぼ終わったので再開!前回はアニメーションテストを行ったけど、アニメーションを表示するためのマップが必要なので、一度マップ表示に戻ろう。 今回から、共通に利用するファイルも用意する。 (ほぼ原作のままだけど、いらないもの?があ…

Lisp Game Programming 再履修 <その12> animation test

前回 multithreading③ のプログラムコードの動きもメモっておこう。 次は、何にも表示していないウィンドウ内にマップを表示すること。 そして、マップ上で player を動かしてみることが次のテーマとなる。ちょっと味付けを変えて、player を動かすアニメー…

Lisp Game Programming 再履修 <その11> multithreading ③

ウィンドウを出すのは、このブログの一番最初にやったプログラムコードをそのまま(Play-game) に付け加えるだけ。 http://tomekame0126.hatenablog.com/entry/2014/06/26/222706すなわち、これを (defun Play-game () ; game main routine (Close-socket)) …

Lisp Game Programming 再履修 <その10> multithreading ②

Web サーバなら分かるけど、ゲームでは usocket や bordeaux-threads を使うシチュエーションはそうそうないのだろう。 なので、自分自身が後からこのプログラムコードを見たときに参考になるメモの意味合いで、理解を助けるためのイメージ図を残しておこう…

Lisp Game Programming 再履修 <その9> multithreading ①

Lisp の再履修のために勉強材料としたサイトにあった別のプログラムコードを見たら、マルチスレッド化されたゲームのようだったのでちょっとつまみ食い。 でも、忘年会で食べすぎたのか、sbcl がエラーを吐きまくりで、結局つまみ食いどころか、Lisp のプロ…

Lisp Game Programming 再履修 <その8> アクセスログ プチ整形

ささくれだった気持ちで書いていたせいか、ちょっと見逃していた。 クライアントサーバ型ゲームの実験をしていたら気がついたんだけど、前回のプログラムコードではアクセスが連続するとこんな感じになる。 醜い(見にくい)じゃん! なので、Windows 用にプ…

Lisp Game Programming 再履修 <その7> アクセスログでララバイ

会社にある様々なシステムにアクセスすると、もれなくアクセス監査ログが数か月後についてくる。 それを確認するのがマネージャの仕事とは言え、年末でチョー忙しい(加えて町内会の役員業務もね)のにちょっとひどくね? 注)電○事件を受け、労務管理には皆…

Lisp Game Programming 再履修 <その6> usocket 小話

その筋では有名な usocket も使う機会がなかったため、どんなものか試したときのお話。 以下にある、cl-tcpip.lisp をサーバとクライアントに分け、チョットだけ手を入れて実行してみた。https://gist.github.com/shortsightedsid/71cf34282dfae0dd2528サー…

Lisp Game Programming 再履修 <その5> Bordeaux-threads トライアル

Bordeaux-threads を sbclrc に書き加え、ライブラリとして使える状況になっているものの、未だ使ったことがない。 ならばと無理矢理使ってみたものの、微妙な結果に終わった。defpackage の部分に、 ;; --------------------------------------------------…

Lisp Game Programming 再履修 <その4>

player が動きまわったときに、rock や diamond が落ちてくるロジックは以下 ;; step3 <Handle-falling-objects> ;; ----------------------------------------------------------------------------------------------- (defun handle-falling-objects (level falling-objects playe</handle-falling-objects>…

Lisp Game Programming 再履修 <その3>

師走に入って何かと慌ただしくなる前にドンドン行ってみよう。 前回の続きから。Draw-game 関数の特徴は、player を画面の中心に表示し、player が移動するのと連動して、周りの表示を変化させていくというもの。では、具体的に見てみよう。まず、y には pla…

Lisp Game Programming 再履修 <その2>

いつも行くガソリンスタンドのバイトの兄ちゃん(工学部3年)と話しをしたら、「今、Pythonの勉強してるんすよ!」って。 「ふーん。俺、Lisp・・・・」と言いかけてやめた。 ライブラリが充実していて、一押しだそうな。随分遠くに来ちゃった感があるな。(遠…

Lisp Game Programming 再履修 <その1>

今年は町内会の役員業務に忙殺され、しばらくLispでのプログラム作成から離れていたら、「Lispってなんですか?」みたいな状態になってしまった。年齢相応のボケも進み、気力も続かないため、過去に作成されたLispのゲームプログラムをリメイクして、老いた…

Lisp Game Programming 1 and 2 <information>

先に作成した、Common-shooterやCommon-abogadroのソースコードは全てブログに掲載している。でも、各々のSTEP毎にプログラムを試しながら動作を確認するためには、使用するファイルをまとめて置いておいたほうがいいだろうと考えた。このため、GitHubにファ…

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 を起動してみるとこんなことが分かった。さすが、最新…

cl-glut pre-study <page 11>

なんやかんやと試してみた結果、課題のレポートとして、以下のプログラムを提出させていただきます。 歩くというよりランニングしているようにも見えますが、一応完成ということで単位をくださいな。common lispですけど。 あ!、インターネット聴講生だから…

cl-glut pre-study <page 10>

歩く姿をsinとcosを使用して実験してみた。 正面だと分かりにくいので、移動を止めて斜め45度の角度から動きを確認してみる。 試してみると、腕や脚の移動範囲を25度位の角度にすると何となく歩いている感じに見えた。 角度だけでなくいろいろな数値をいじっ…

cl-glut pre-study <page 9>

歩いてはいないが、グラウンド上を円形に滑るように動くプログラムは意外と簡単にできる。 しかし、マウスボタンの真ん中を押すと止まるだけなはずなのに、右ボタンと同様に少しずつ動くのはなんなのさ? どこまちがえてんだろ? BoxMan sliding! ;; ;; Box…

cl-glut pre-study <page 8>

勝手に聴講生になったので、どのグループでもないから予備の課題を選び、取り合えずは表示のみ。 やっぱりこれでしょ。何だかわかるかな? BoxMan standing! ;; ;; BoxMan standing ;; -------------------------------------------------------------------…

cl-glut pre-study <page 7>

さて、ここも一気にいってみよう。レッスン21.光を当ててみる ;; ;; lesson21 <shading> ;; ----------------------------------------------------------------------------------------------- (defparameter *vertex* #(#(0.0 0.0 0.0) #(1.0 0.0 0.0) #(1.0 1.</shading>…

cl-glut pre-study <page 6>

なかなかいいサンプルがあったので、レッスン17を以下のように変えてみた http://blog.lowsnr.net/2013/04/14/using-opengl-with-common-lisp-and-macos-x/ ;; ;; lesson17 <animation> ;; ------------------------------------------------------------------------</animation>…

cl-glut pre-study <page 5>

レッスン13.2次元と3次元 y軸を中心に25°回転してみた。 ;; ;; lesson13 <2D & 3D> ;; ----------------------------------------------------------------------------------------------- ;; Set window class (defclass Window (glut:window) () (:…

cl-glut pre-study <page 4>

レッスン8.マウスボタンをクリックする ;; lesson1 <Open the window> ;; lesson2 <Fill in the blue> ;; lesson3 <Draw the lines> ;; lesson4 <Put the color lines> ;; lesson5 <Set polygon and several colors> ;; lesson6 <Reshape > ;; lesson7 <Window size and position> ;; lesson8 <mouse> ;; ----------------------------------…</mouse></window></reshape></set></put></draw></fill></open>

cl-glut pre-study <page 3>

さて3日目。 レッスン6.座標軸とビューポート ;; ;; lesson1 <Open the window> ;; lesson2 <Fill in the blue> ;; lesson3 <Draw the lines> ;; lesson4 <Put the color lines> ;; lesson5 <Set polygon and several colors> ;; lesson6 <Reshape > ;; ------------------------------------------------------------------------------------…</reshape></set></put></draw></fill></open>

cl-glut pre-study <page 2>

聴講2日目はここからスタート。レッスン3.線を引く lesson3.lisp ⇒ ;; ;; lesson1 <Open the window> ;; lesson2 <Fill in the blue> ;; lesson3 <Draw the lines> ;; ----------------------------------------------------------------------------------------------- ;; Set window class (defclass Windo</draw></fill></open>…

cl-glut pre-study <page 1>

これまでは、HSPで作られたシューティングゲーム2本をcommon-lispでリメイクしてみた。 lispbuilder-sdlは結構便利で、若干古さは否めないものの簡単なゲームを作るには十分だと感じた。 だけど、グラフィックスと言えばopenGLは外せない。 なので、どこま…

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ではどのようにスクロールを実現(市販のゲームのようなイメージ)でき…

Lisp Game Programming <Step17 Information>

クラスをマクロ化していく中で、工夫が必要な点がでた ;; Step13 <Stage Class> <----------- step 14 correct;; ----------------------------------------------------------------------------------------------- ;(defclass stage (); ((%stage-flag :initarg :stage</stage>…

Lisp Game Programming <Step17>

そういえば「楽しみ」のマクロが残っていた。 step3でクラスを作ったが、もっとカッコよくするには? ;;step3 <Character object>;; -----------------------------------------------------------------------------------------------(defclass object () ((%imageid :initar</character>…

Lisp Game Programming <Step16 Information>

このシューティングゲームの完成形はこんな感じ 初めてCommon Lispでプログラムを作ったため、やっつけ仕事感ありありだけど、とりあえず動けば目的達成! common-shooter.lisp ⇒ ;;;; The Common-Shooter ;;; step1 <Game Frame>;;; step2 <Audio>;;; step3 <Sprite Sheets> <Character Object> <Draw Images> <Initialize>;;; step4 <Scroll> <Scroll Counter>;;; </scroll></scroll></initialize></draw></character></sprite></audio></game>…

Lisp Game Programming <Step16>

Step16はスタンドアローンの実行ファイルの作成 プログラム(common-shooter.lisp)に以下を追加 ;;; step1 <Game Frame>;;; step2 <Audio>;;; step3 <Sprite Sheets> <Character Object> <Draw Images> <Initialize>;;; step4 <Scroll> <Scroll Counter>;;; step5 <Font> <Score Panel>;;; step6 <Key State>;;; step7 <Game Field>;;; step8 <Shot>;;; ste…</shot></game></key></score></font></scroll></scroll></initialize></draw></character></sprite></audio></game>