Photo by
38mol
なでしこさんで元素記号?スロット
今週も、結局アレを書くための作業ができなかった。
頭ついてない。
にゃーん。
というわけで、雑プログラムで繋ぎます。
今回やったこと
なでしこで「元素記号?スロット」を作った。
「英大文字1個」と「英小文字1個、または空文字列」をそれぞれランダムに選び、繋げて表示する。
存在する元素記号になっていればラッキー!?
プログラム
元素記号?スロット (プログラム貯蔵庫)
ポイント
画面を用意する
DOM親要素の「行揃え」に「中央」をDOMスタイル設定。
スロット欄は空のラベル作成。
それの「文字サイズ」に「500%」をDOMスタイル設定。
改行作成。
リトライボタンは「次!」のボタン作成。選択結果を表示するラベルと、再選択を行うためのボタンを用意する。
選択する候補を用意する
大文字配列は空配列。
文字でASC("A")からASC("Z")まで繰り返す
大文字配列にCHR(文字)を配列追加。
ここまで。
大文字リストは大文字配列を配列只結合。
大文字リストを小文字変換。
小文字リストはそれと「 」を連結。「A」以上「Z」以下の文字コードの文字を並べ、それらを結合することで1文字目の候補リストを作成する。
それを小文字に変換し、さらに空文字列を表す空白を連結することで、2文字目の候補リストを作成する。
ランダム選択を行う関数を用意する
●(Sから)ランダム文字抽出とは
1から(Sの文字数)までの乱数範囲。
Sでそれから1文字抜き出して戻す。
ここまで。文字列から、ランダムな1文字を取り出して返す。
「乱数範囲」で取り出す位置を選び、「文字抜出」で実際に抜き出す。
なでしこでは、配列は 0-origin だが、文字列は 1-origin であることに注意する。
●スロットとは
定数の一文字目は大文字リストからランダム文字抽出。
定数の二文字目は小文字リストからランダム文字抽出。
一文字目と二文字目を連結してトリム。
スロット欄にそれをテキスト設定。
ここまで。用意した「ランダム文字抽出」で1文字目と2文字目をそれぞれ選び、結合する。
さらに、「トリム」で空白を削除することで、「空文字列を表す空白」を実際の空文字列に変換する。
結果をラベルで表示する。
ランダム選択を行う
スロット。
{関数}スロットでリトライボタンをクリックした時。起動時、および再選択ボタンが押された時、選択処理を実行する。
おわりに
なでしこで、「英大文字1字」と「英小文字1字、または空文字列」をランダムに選び、繋げて表示することができた。
今回は、面倒なので、選択結果が元素記号になっているかの判定は行わない。


コメント