見出し画像

なでしこさんで降を降らす

今週は、Qiita の記事数稼ぎは「回が回る回」と「Hello World あたたたた」の活躍で、そこそこ進んだ。
しかし、note は大変遺憾ながら書けなかった。
頭の良さが足りない。

というわけで、安定の雑プログラムでの繋ぎを行使。
今回も文字アクションシリーズで。

今回やったこと

なでしこで、「降」を降らす。
面倒なので、「画面更新時実行」と時刻による管理ではなく、昔ながらのフレーム単位での制御を採用した。

プログラム

降を降らす (プログラム貯蔵庫)

ポイント

画面と文字のサイズを決める

横幅は400。
縦幅は240。
文字サイズは20。

画面として用いる領域と、そこに降らせる文字のサイズをピクセル単位で用意する。

画面を用意する

「DIV」のDOM部品作成。
それに{
  "position": "relative",
  "width": "{横幅}px",
  "height": "{縦幅}px",
  "border": "1px solid currentColor",
  "overflow": "clip",
}をDOMスタイル一括設定。
それにDOM親要素設定。

画面として用いる領域を用意する。

降を降らせる

進行中は空配列。

降っている「降」の情報を管理する配列を用意する。

1/60秒毎には

各「フレーム」の処理を行う。

  もし、20の乱数が0と等しいならば
    定数の新ラベルは「降」のラベル作成。
    それに{
      "position": "absolute",
      "font-size": "{文字サイズ}px",
      "left": "{(横幅-文字サイズ)の乱数}px",
    }をDOMスタイル一括設定。
    {
      "部品": 新ラベル,
      "位置": -文字サイズ,
      "速度": 0,
    }を進行中に配列追加。
  ここまで。

だいたい20フレームに1回、新しい「降」をランダムな位置に生成し、落とし始める。
表示用の部品と、管理用の位置と速度の情報を用意する。

  進行中を反復
    対象$位置を対象$速度だけ増やす。
    対象$速度を0.1だけ増やす。
    対象$部品の「top」に「{対象$位置}px」をDOMスタイル設定。
    もし、対象$位置が縦幅超ならば
      対象$部品をDOM部品削除。
    ここまで。
  ここまで。
  進行中を配列フィルタには(E)
    E$位置が縦幅以下を戻す。
  ここまで。
  進行中はそれ。
ここまで。

今落ちている「降」の位置と速度を更新する。
数値を更新した後、表示用の部品の位置をそれに合わせて更新する。

さらに、「降」が画面の下端を過ぎたら、部品と管理情報を削除する。

おわりに

なでしこで、降を降らせることができた。

昔、Tonyu System でこんな感じで画像を降らせたこともあったっけな……。
降った後そのまま画面下に消えるのではなく、積もらせるようにしたことはあったかな……?

いいなと思ったら応援しよう!

コメント

コメントするには、 ログイン または 会員登録 をお願いします。
なでしこさんで降を降らす|みけCAT
word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word

mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1