桐生あんずです

日常やプログラミングについて書いています。

Node.js製のCLI上で動くスロットゲームをnpmにパッケージ公開した

経緯

kiryuanzu.hatenablog.com

新卒研修で自作npmを作ろうという課題があり、CLI上で動くスロットゲームのライブラリを作ろうと思い先週の木曜から作成に着手し始めていた。

イデア図の一部

f:id:kiryuanzu:20200415005500j:plain

そして今日、無事パブリックに公開することができた。

www.npmjs.com


見た目は以下のような感じです。

主に頑張ったこと

  • keypressというnpmパッケージを利用してキー入力を検知するようにし、タイミングに合わせてEnterボタンを押すと数字を取得して配列に入れるようにした

www.npmjs.com

 

  • setTimeout()とclearTimeout()を駆使してループ処理・終了の実装を用意した。timeoutIDを変数に保存してゲーム終了時にclearTimeout(timeoutID)してループ処理を終了させるようにした。

developer.mozilla.org

 

まとめと反省点

3回までゲームを続けることができて最後まで続けると点数とそれに合わせたメッセージが表示される作りになっている。

そのようにCLI上でゲームっぽい作りを用意することができ、新卒研修の目標課題として設定されていた初めてnpmパッケージを公開するという行為も達成できたので一応満足ではある。

だけれども、ゲーム面の処理は雑な箇所もいくつか残っており機会があれば知っている人たちに直でコードレビューしてもらいたさがある。

 

ちなみに、参考になりそうな実装がないかnpmのサイトで調べてみたけれど、名前はそれっぽい名前のnpmパッケージもあっても、スロットの中身を用意するライブラリやHTML上でスロットゲームを生成するライブラリばかりで自分がイメージしていたライブラリはなさそうだった。

www.npmjs.com

 

ただ、CLI上でテトリスができるnpmパッケージを出している人がいてかなり興味深かった。

www.npmjs.com

実際に触ってみた所、すごく見た目がちゃんとしていて処理もそれっぽく動いててここまでやれるとめっちゃ良さそうなので今後CLI上でゲームを作りたくなったら参考にしたい。(このnpmパッケージもkeypressライブラリを導入してキー入力を検知している)

gyazo.com

(テトリス久々にやってみたらできなさすぎて全く消せてなくて悲しい)