Light.vnが俺にもっと輝けと囁いている
さとーす、めそです。
突然ですがLight.vnを使用したもぐらたたきのサンプルを作ってみました。
そうです、それです。今年のエイプリルフールに間に合わなかったやつです。
きっかけは、いず助さんのツイートでした。
lightvnはもぐらたたき的なのできないかなーってところで止まってる。質問するのに分かりやすい画像があった方がいいな→描けない!!ってところで。とまってる
— いず助 (@momomo709) January 20, 2019
つくろうかな…
つくれるかも…
つくった! です。
できあがりのサンプルはこちら
みんな大好きGitHubで公開しています。
https://github.com/mmmesooo/Light.vn-Lua-mogura
設計思想はオブジェクト指向です。
Luaにもぐらクラスを定義して
もぐらインスタンスを作成しています。
オブジェクト指向ってなに? という方はこちらの記事をどうぞ。
オブジェクト指向が5000%理解できる記事 - Qiita
もぐらクラスに
もぐら表示位置クラスと
もぐらキャラクタークラス(ともぐらデバッグクラス)を持たせて汎化を目指しました。
生粋のLight.vnのユーザーの方がどの程度luaと仲良くなりたいかはわかりませんが
個人的には「ぶいえぬくんの考えてること、わかんないよ…」ってなったので
Luaでいい?Luaでいいよね?Luaがいいよね?Luaでいいの?Luaにする?Luaにしとく?
って感じになりました。なました。ですのでプログラムに不慣れな方向けではないです。
もぐらの出現と退場の状態はもぐらクラスのコルーチンで管理しています。
最初はもぐらの状態ごとにLight.vn内部のタイマー(砂時計)で管理していましたが
コードが煩雑になりすぎたためコルーチンで書き直しました。
おかげでだいぶすっきりしたので、コルーチンかわいいよコルーチン、って感じです。
Luaのコルーチンが内部処理的に軽いのか重いのかは不明ですが
Light.vn内部でもコルーチン使って制御している気がするので
ほぼほぼ等価な気がします。気がするだけです。
もぐらに対するパラメータの与え方は、実現したい動かし方によって調整が必要かと思います。
サンプルはあくまでサンプルですので、お好みでカスタマイズしてください。
GitHubのページ見てもらったらわかりますが、未実装の処理の多いこと…
そんなこんなで、もぐらたたきのサンプルでした。
Luaもmarkdownもずっとなんとなく好きじゃなかったんですが
Light.vnのおかげで好きになれました。ありがとうぶいえぬくん。ズッと忘れないょ。
個人的にはLight.vnのエディタが見づらい上にすぐに落ちるし終了確認が鬱陶しいし
シンタックスハイライト狂ってるしコードエディタとしての機能が貧弱だったためお別れしたので
vs code推奨です。特にLuaを編集する際には必須です。
Light.vnの記事と見せかけてLuaと仲良くなりたいあなた向けの記事でした。それでは。