「Square20」の得点表示の作り方

STUの3R・コース別の1つ、「Square20」のルールを説明します。
この形式では、「by」同様、各プレイヤーに2つの変数が与えられ、その積が得点となります。この2つの変数をα、βと呼ぶことにします。試合開始時、α・βはともに1です。
そして、奇数問目を正解するとαが1増加し、偶数問目を正解するとβが1増加します。α×βの値が20以上に達すれば勝ち抜けとなります。
一方、奇数問目を誤答するとαが、偶数問目を誤答するとβが0にリセットされます。すなわち、その人のスコアは0になります。
また、通算3回の誤答で失格となります。

うまく問題が噛み合えば最低7問正解で勝ち抜けられる(5×4=20p)一方、タイミングが悪ければいくら正解を重ねても思うように点が伸ばせません。
また、誤答罰も厳しい。誤答直後は0に逆戻りとなり、しかもたった3回で失格となります。

それでは、基本⑤の続きから作っていきます。
完成品はこちらです。

【新しく出て来るExcelの機能】

・関数「MOD」

【作り方】

①ルール設定セルにルールを入力する

勝ち抜け条件を20p、失格条件を3にします。

②α記録テーブル・β記録テーブル・ポイント記録テーブルを作る

N~U列を「α記録テーブル」、W~AD列を「β記録テーブル」、AF~AM列を「ポイント記録テーブル」とします。
まずはそれぞれのテーブルについて格子を引きましょう。

次に、数式を入れていくのですが、そのまえに、初期値はα・βともに1でしたね。なので、1問目の1つ前である6行目の全てのプレイヤーに、両テーブルとも1を入力しておきます。

つづいて、式を入力します。

α記録テーブル

N7セルに以下の数式を入力し、U56セルまでオートフィルします。

=IF(MOD($C7,2)=1,IF(D7="x",0,N6+D7),N6)

β記録テーブル

W7セルに以下の数式を入力し、AD56セルまでオートフィルします。

=IF(MOD($C7,2)=0,IF(D7="x",0,W6+D7),W6)

ポイント記録テーブル

AF6セルに以下の数式を入力し、AM56セルまでオートフィルします。

=N6*W6

さてここで、MOD関数というものが出てきましたね。MOD関数は、割り算のあまりを計算する関数です。例えば、17÷3のあまりだったら、「=MOD(17,3)」と入力すれば、答えの2が表示されます。
それぞれのテーブルにおいて、まず、今の問題が偶数か奇数かを判定します。問題番号はC列に書いてあるのでしたね。α記録テーブルにおいては、問題番号が奇数なら次の判定に進み、そうでないならば正誤に関係なく1問前の値を継承します。β記録テーブルについてはその逆で、偶数問目なら次の判定に進み、奇数問目なら1問前の値を継承します。
2つ目の判定は、誤答しているかどうかです。誤答しているのであれば、その値を問答無用で0にリセットします。誤答していない場合は、「正解しているなら1増え、そうでない場合は1問前と同じ」とすればよいですから、正誤スルー記録セルとα/β記録テーブルの1問前の数値を足し算すればよいのです。

なお、偶数・奇数を調べる手段としては、もう一つ、ISODD関数/ISEVEN関数というものもあるそうですが、MOD関数の方が汎用性が高いため、ここでは詳しい説明はしません。

③ポイント表示セルの数式を変更する

D4セルを以下のように書き換え、K4セルまで書き換えます。

=IF(SUM(D8:D57)>=$N$4,"WIN",IF(COUNTIF(D8:D57,"x")>=$O$4,"LOSE",SUM(D8:D57)))

=IF(OFFSET(AF6,$P$4,0)>=$N$4,"WIN",IF(COUNTIF(D8:D57,"x")>=$O$4,"LOSE",OFFSET(AF6,$P$4,0)))


④ポイント表示セルの下に掛け算表示セルを設ける

ポイント表示セル(4行目)の1つ下に新しく行を足します。
4行目の見出しをクリックして5行目を足したあと、「挿入」を押します。

そして、D5セルに以下の数式を入力し、K5セルまでオートフィルします。

=IF(MOD($P$4,2)=0,"*","  ")&OFFSET(N7,$P$4,0)&"×"&
OFFSET(W7,$P$4,0)&IF(MOD($P$4,2)=1,"*","  ")

この式はちょっと長いですが、分解して考えます。
この数式は、4つの式を&で結んでいる構造です。
その4つのうち、真ん中の2・3番目のOFFSET関数は、それぞれα記録テーブルとβ記録テーブルから数字を参照しています。
一方、両端の2式は、偶数か奇数かをMOD関数でチェックし、アスタリスクを表示させるものです。
これは、「次正解すると、αとβのうちどちらが増加するのか」を伝えるためのものです。

得点表示は、プレイヤーに必要な情報を伝え、戦況をしっかり把握させることが要求されます。
そのため、このルールでは、「次どちらの値が増えるか」という情報も、きちんと表示させなければなりません。
しかし、IF関数では、文字の色を変えたりすることはできません。
そのため、苦し紛れではありますが、このように小さな記号を使って伝えました。

コメント

このブログの人気の投稿

基本①:「m○n×クイズ」の得点表示の作り方

参加者の苗字と名前を分離する/選手名を均等な大きさで表示する

勝ち抜け時に順位を表示する