前回は、1から99までの数字から連続する16個の数字を1ずつ数え上げていった。今回は、1から99、1から999、1から9999のいずれかの範囲から連続する16個の数字を取り出し、1ずつ、2ずつ、3ずつのいずれかで数え上げていくが、どの組み合わせになるかはランダムに選択されるように設定した。例えば、1から999の範囲から3ずつの連続した16個の数字が取り出されるとか。
実行画面:
4桁の数字だと、頭がイライラしてきた。あまりやりたくないアプリになってしまった。録画中も早く終わりたい、と初めて思った。
スクリーンのデザイン:
特に変更はなし。
ブロック・コード:
1. ランダムな値を設定:
3つのグループ(1〜99、1〜999、1〜9999)の一つをランダムに選択するのだが、実際には以下の関数makeMaxNumが示すように、返すのは各グループの最大値(99又は999又は9999)。
また、関数makeStepNumで、いくつずつ数え上げるか(1又は2又は3)をランダムに選択し、その数値を返す。
2. 変数maxNumber及びstepNumを設定。初期値を与えている。いずれも0で初期化しても良いが、とりあえず99と1で初期化。
startButtonをタップした時に、maxNumber には上記関数makeMaxNumが返してくる値(99又は999又は9999)を、stepNum には上記関数makeStepNumが返してくる値(1又は2又は3)
数え上げる数値の最初の数値をランダムに決めるが、その選択範囲は、1から( maxNumber ー 15 * stepNum )まで。例えば、maxNumberが99の場合、1から84までの数値の中から一連の数字の最初の数字を選択する。
最初の数字が決まったら、その数字より ( 最初の数値 + 15 * stepNum )までの範囲をstepNumずつ数え上げていく一連の数字をoriginalListに割り当てていく。
前回と同様であるが、originalListに割り当てられた一連の数字をシャッフルし、shuffledListに格納する。
その後は、shffledListの数字を各ボタンに順番に割り当てる。
後は、これに時間的要素(制限時間など)を加えれば、ちょっとゲームらしくなると思う。