経緯
新卒研修で自作npmを作ろうという課題があり、CLI上で動くスロットゲームのライブラリを作ろうと思い先週の木曜から作成に着手し始めていた。
アイデア図の一部
そして今日、無事パブリックに公開することができた。
見た目は以下のような感じです。
— 桐生あんず (@anzu_mmm) 2020年4月14日
主に頑張ったこと
- keypressというnpmパッケージを利用してキー入力を検知するようにし、タイミングに合わせてEnterボタンを押すと数字を取得して配列に入れるようにした
- setTimeout()とclearTimeout()を駆使してループ処理・終了の実装を用意した。timeoutIDを変数に保存してゲーム終了時にclearTimeout(timeoutID)してループ処理を終了させるようにした。
まとめと反省点
3回までゲームを続けることができて最後まで続けると点数とそれに合わせたメッセージが表示される作りになっている。
そのようにCLI上でゲームっぽい作りを用意することができ、新卒研修の目標課題として設定されていた初めてnpmパッケージを公開するという行為も達成できたので一応満足ではある。
だけれども、ゲーム面の処理は雑な箇所もいくつか残っており機会があれば知っている人たちに直でコードレビューしてもらいたさがある。
ちなみに、参考になりそうな実装がないかnpmのサイトで調べてみたけれど、名前はそれっぽい名前のnpmパッケージもあっても、スロットの中身を用意するライブラリやHTML上でスロットゲームを生成するライブラリばかりで自分がイメージしていたライブラリはなさそうだった。
ただ、CLI上でテトリスができるnpmパッケージを出している人がいてかなり興味深かった。
実際に触ってみた所、すごく見た目がちゃんとしていて処理もそれっぽく動いててここまでやれるとめっちゃ良さそうなので今後CLI上でゲームを作りたくなったら参考にしたい。(このnpmパッケージもkeypressライブラリを導入してキー入力を検知している)
(テトリス久々にやってみたらできなさすぎて全く消せてなくて悲しい)