0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

麻雀で学ぶTypeScript 4 ポン

Last updated at Posted at 2023-01-16

前回:麻雀で学ぶTypeScript 3 鳴き
ソースコード:https://github.com/bonetaro/mahjong-ts

今回はポン(明刻)の実装をしました。
スクリーンショット 2023-01-16 000941.png
鳴きアクションは、アクションによってどのプレイヤーのアクションなのか決定されます(できます)。

前回の記事からだいぶ経ってしまいましたが、その分UIの改善もしました。
スクリーンショット 2023-01-16 001033.png

これまでは、捨て牌を選択する時は手牌の左端からの位置(0から13の数値)を入力していましたが、それだと手牌の中ほどにある牌を捨てる時にパッとわかりませんでした。改善したUIでは、矢印キーの上下で牌を選択できるので、UXがよくなりました。その反面、手牌を縦に表示しているため表示行数が増えてしまっていますが、メリットの方が大きいので許容することにします。手牌を横に一覧表示して、カーソル選択できるかも調べたのですが、力不足でした。

牌を選択するUIは、Promptsを使わせていただきました。
ターミナルアプリ(コンソールアプリケーション)を開発することはままありますが、凝ったUIのものはなかったので、割とお目にかかる便利なUIがどう作られているかをよい知る機会になりました。inquirer enquirer keypressなどほかの候補も結構あり、検討して学びもありましたし、その他調べている過程で、Stream APIやRxJS、cycle.jsなど普段触れることが少ない技術を知るとっかかりになりました。芋づる式に勉強になりますね。
 
明刻の表示は、通常鳴いた相手(上家、対面、下家)に応じて牌を横向きにしますが、ターミナル上で絵文字表示しているため、横向きにできない(方法があったら教えてください)、対面から鳴いた場合 🀉(🀉)🀉 のように()で表現しています。リーチ宣言牌の表示も同様になりそうですね。

ゲームをつくるのが目的ではないため、これでいいといえばいいのですが、Web技術なら可能でしょうから早くWebアプリなどにしたくなりますね。TypeScriptの応用範囲は広いので、今後どう発展させようかとモチベーションも掻き立てられますね。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?