RxJSとはなんぞや?⑤ サイコロ連打の記録に挑戦
すこしイメージがつかめてきたRxJSですが、ゲームブックアプリで使えそうな部分は
・戦闘イベントでサイコロを短時間で振りまくった時の統計情報を記録保存
位かと思います。
Cookie Clicker的なアプリを作る際にも役に立つかも?
幾つか予想されるトラブルもありますが、試してみましょう。
さて、まずは目的(とその状況)を考えていきます。
・画面上に2つのサイコロが表示され、ボタンを押すことで出目が(ランダムに)変わる
・2つのサイコロのそれぞれの目(1~6)と合計値(2~12)の出現回数を記録する
・記録変更するデータベースは、貧弱な性能で処理と応答に時間がかかるかもしれない
上の2つの条件だけならばRxJS使うまでもないように思いますが、3番目の条件が入ると導入の価値はあるんじゃないかと思います。
次に、思い付きで仕様を考えてみます。
・サイコロを振るごとに出目を配列の末尾に追加
・振った回数が、例えば100回ごとに集計してデータベースの変更を行う
・その際に配列の先頭100を削除(例:Arr.splice(0, 100))
・一定時間(例えば1秒)サイコロが振らなければ、その時点の配列をコピーして集計、DB変更
・その場合、集計したデータ数分だけ配列の先頭から削除
・サイコロを使う画面が他の画面に変わる時、配列の集計とDB変更。配列初期化。
エラー処理とかは無いですが大筋は行けそうな気がします。
"fromEvent"と"interval"の2種類のObservableのマージも使うし”ちゃんとした”RxJSのサンプルになるかも?
このまま続きを書く予定ですが、ここで一旦投稿です。
帰宅しました。
外出中、上の仕様考えなおしました。
"interval"、要らないですよね?
覚えたばかりのテクニックをつい使いたくなるという奴です。
規定回数サイコロを振ったら書き込むとサイコロ使用画面の終了で書き込むだけでよく、画面の終了をチェックボックスか何かでチェンジイベント発生を監視すれば事足ります。
ただMouseMoveでイベントがあっさり拾えた事に油断していました。
fromEventによるチェンジイベントの発生の監視がうまく行かない。
しばらく取り組んでみます。投稿