投稿

「運命の13階段!!~天翔るツーマンセル~」の得点表示の作り方

イメージ
このルールは、漫画『ナナマル サンバツ』に登場する大会「SQUARE」の関東大会決勝で行われた形式です。

プレイヤーは8チーム。
また、「スタート」、「1」、…、「13(ゴール)」の全14マスがあるボードを使います。
最初は全チーム「スタート」マスからスタートし、13マス目のゴールまで進めば勝利となります。ただし、スタートマスとゴールマス以外の12マスは、それぞれ1チームずつしか入ることができません。
早押しクイズに正解すると、「今そのチームから見て最も近い上位の空きマス」に移動します。すなわち、自分の手前に連続して3チームいる状態で正解した場合、一気に4マス進むことができるわけです。
誤答すると、逆に「今そのチームから見て最も近い下位の空きマス」に移動します。誤答したチームの1つ後ろのマスが空いていた場合は1段下降で済みますが、集団で固まっている状態で誤答すると、急転直下という事態になってしまいます。



この他にも「1問正解ごとに、解答席につくメンバーが2人入れ替わる」「エンドレスチャンス制」といったルールがありますが、得点表示の面では関係ないことなので、今回はあまり考えないことにします。

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

【作り方】 ①位置記録テーブル・空席状態記録テーブルを作る オレンジ色の設定マスは次の通りです。
勝ち抜け(N4セル):13
失格(O4セル):絶対に失格しない程度の適当な値(今回は99)


今回は2つのテーブルを作ります。

N~U列は、各プレイヤーのいるマスの位置を記録するテーブルです。
W~AJ列は、各マスが空いているかどうか(そこにプレイヤーが来ることができるか)を記録するテーブルです。それぞれの行が、それぞれのマス(スタートの0~ゴールの13)に対応しており、空いているならば、そのマスの番号が表示されます。誰かがいるならば、何も表示されません。

また、N~U列の、0問目にあたる6行目の一つ上、5行目に、「現時点での各プレイヤーの座席位置」が表示されるようになっています。OFFSET関数を使ったシンプルなものです。
W~AJ列の5行目には、それぞれ0から13の数字が入力されています。

それでは、数式を入れていきましょう。

まずは0問目(6行目)です。
位置記録テーブル(N6からU6まで)には、全て0を入力…

視認性を向上させるために注意すべきこと

イメージ
今回は、得点表示の視認性についてのお話をします。

これまで、いくつもの形式別の得点表示の作り方を説明してきました。
しかし、単に「入力したら数字が動く・色が変わる」というカラクリを作ることだけが、得点表示"道"ではないと考えます。
得点表示は、「観客および参加者に、得点状況をはっきり伝える」のが目的です。そのため、客席から見たときの視認性には可能な限り気を遣ってデザインしたほうがよいでしょう。
そのために気をつけるべきことを、思いつくままに書いてみました。

※私は別にデザインとかを本格的に勉強しているわけではないので、デザインの世界から見るともしかすると間違ったことを書いているかもしれません。あくまでも私の主観です。ご了承下さい。
ご意見がありましたら、気軽にコメントしていただけると幸いです。

①得点の表示位置 大会や例会が開かれる場所は様々です。
舞台と客席があるようなホールで行うこともあれば、大きい会議室のような部屋で行うこともあります。

特に、会議室のような、客席と解答席の高低差が小さい部屋で行う場合、スクリーンの下の部分が解答者の体で隠れてしまうことがあります。
そうなってしまう場合、名前の下に得点を表示するのではなく、名前の上に得点を表示するべきでしょう。

「得点表示」と言っているからには、何よりも得点(および誤答数等の情報)を優先的に見せなければなりません。得点表示の要素の配置はある程度慣習化されてきていますが、「名前の下に得点を表示しなければならない」と誰かが決めたわけではありません。

ちなみに「abc」の得点表示は、8thまで使用されていたものは、名前の上に得点が表示されていました。


会場の特性を考えてレイアウトを決めてみてください。

②数字の大きさ・太さ それぞれのクイズのルールには、正解数・誤答数・連答数・通過チャレンジ回数など、各解答者に与えられるさまざまな成績が存在します。
そして、それらのうち、順位判定に関わるものが存在し、さらに序列が決まっています。

例えば、1試合に決められた問題が全て出題された場合、正解数の多い方が上位→同じならば誤答数の少ない方が上位→それも同じならば、ペーパークイズの順位が高い方が上位、というものです。

ここで私がいいたいのは、判定基準に関わる数値は、重要なもの順に大きく表示すべきである、とい…

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

イメージ
得点表示画面に選手名を表示する際、名前の最初の文字と最後の文字の位置はみな揃えてあった方が理想的です。

しかし、日本人の名前は文字数がバラバラです。2文字の人もいれば、6文字の人もいます。


何も工夫していなければ、高さがバラバラに表示されてしまいます。6文字の人にいたっては、名前がはみ出てしまっています。

出来ることなら、苗字と名前の間に適切なスペースを入れたり、字数が多ければ自動的に小さくしたりして、高さを統一したいものです。


このような表示を可能にするには、参加者管理シリーズで作った参加者リストの段階で、各プレイヤーの苗字と名前を分離しておく必要があります。

今回は、「1つのセルにはデフォルトで5文字の名前が入る」という原則に従い、4文字以下の名前についてはスペース含めて5文字になるようにスペースを入れる、6文字以上の名前はスペースを入れず、文字数に応じてフォントの大きさを調節してくれるようにします。

なお、苗字と名前を分離しておくと、ネームプレート作成時や記録集を作る際の得点記録出力など、他の場面においても役に立ちます。

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

【新しく登場するExcelの機能】 関数「FIND」
関数「LEN」
【作り方】 エントリーフォームにおいて、名前入力欄の段階で苗字と名前を別の入力ボックスに使っている場合、①、②のステップは必要ありません。

もしエントリーフォームの名前入力欄がフルネームを要求するものの場合、「苗字と名前の間に1文字だけスペースを入れること」を参加希望者に伝えておいてください。

それでも、苗字と名前の間にスペースが入っていない人がいた場合、大会主催者側が手動で苗字と名前の間にスペースを1文字入れていくしかありません。
①参加者リストを作り、参加者の名前を入力していく 参加者リスト用のシートを作り、参加者リストを作ります。
現段階では、全ての参加者が、苗字と名前の間に全角スペースが入っている状態です。 ②苗字列・名前列に数式を入力する 続いて、B列に入力されたフルネームを、それぞれ苗字(C列)と名前(D列)に分離します。 それぞれ、以下の数式を入力します。 C列:苗字(C2セルの場合)
=LEFT(B2,FIND(" ",B2)-1) D列:名前列(D2セルの場合)
=RIGHT(B…

誤答数を数値ではなく「×」の個数で表現する

イメージ
これまで、誤答数表示は、「(誤答数)×」という形式で表現しておりました。
ですが、たとえば2×なら「××」、4×なら「××××」と、×数を並べる表示法も考えられます。
いわば一進法による表現方法です。

表示スペースに余裕がある場合、こちらのほうが見ている人にとっては直感的に分かることがあります。
正解数や誤答数といった複数のパラメータを、どちらも数値で表現するのではなく、片方(できればあまり大きい値にならない方)を一進法によって表示すると、見やすくなるはずです。

Excel関数には、これを簡単に表現出来る関数が存在します。

今回は、【基本⑤】を改造して作ってみたいと思います。
完成品はこちらです。
【新しく登場するExcelの機能】 関数「REPT」
関数「MAX」
関数「CHAR」
関数「LEFT」
関数「RIGHT」
【作り方】 ①後で非表示にする、誤答数カウントセルを作る
現状、誤答数は5行目のセルに直接COUNTIF関数と"×"を連結させて表示しています。
ここでは、COUNTIF関数を使って誤答数だけ表示する(="×"の字が付かない)セルを新たに作り(6行目)、誤答数を表示する5行目では6行目の数値をもとに表示します。

6行目の見出しをクリックし、6行目全体を選択してから、「挿入」を押します。
1行増設されました。
そこに、数式を入力します。
D6セルに以下の数式を入力し、K6セルまでオートフィルします。

=COUNTIF(D$8:D$57,"x")


②誤答数表示セルを改造する 続いて、その上の5行目を書き換えます。
D5セルに以下の数式を入力し、までオートフィルします。

=REPT("×",D$6)


さて、新しい関数が登場しました。
これが、冒頭で述べた関数、REPT関数です。
第1引数に「何回も表示させたい文字列」、第2引数に「文字列の個数」を指定するだけです。
これで、誤答した数の分だけ「×」が表示されるようになりました。
×の字は、見やすくなるように文字の大きさを大きくしたり、ボールド体にしたりするとよいでしょう。
ボールド体は、上のメニューからボタンをクリックしてもいいですが、Ctrl+Bで簡単に切り替えることが出来ることを覚えておいてもいいでしょう。③誤答数カウントセルを非表示に…

【参加者管理⑨】決勝戦

イメージ
前回:【参加者管理⑧】敗者復活~準決勝

前回で準決勝までが終わりました。
いよいよ決勝戦です。

完成品はこちらです。

【作り方】 ①1R順位・名前を表示する 決勝の得点表示シートを開きます。

例によって、得点表示に1R順位・名前を表示させていきます。

1R順位表示は、名前を表示している13行目の上に新しい行を挿入します。
また、得点タワー(3~12行目)の上に、順位を参照させるための行を新たに作り、非表示にします。

やり方は【参加者管理④】で説明した通りです。

まず、後に非表示にする2行目はこうです。

(D2の場合)
=参加者管理!AE15

前回のステップ⑨で作った4人の勝者をそのまま参照します。


ただし、敗者復活の人が決勝に勝ち進んだ場合、このままですと「99位」と表示されてしまいます。
そのような場合を考慮し、順位表示列はこのような数式にしておきます。

(D14セルの場合)
=IF(D3=99,"敗者復活",D3&"位")

名前表示セルはこれまでと同様です。
ただし、これまでとは違い、参照範囲を1行多く取る必要があることを忘れないでください。

(D15セルの場合)
=INDEX(参加者管理!$C$3:$C$63,MATCH(Final!D$3,参加者管理!$A$3:$A$63,0))

INDEX関数の第1引数と、MATCH関数の第2引数に注目してください(上の式の下線部)。
参加者管理シートの3行目(1R1位の人)から62行目まで(1R60位の人)までに加え、【参加者管理⑧】のステップ③で追加した敗者復活者までを参照範囲としています。


②正誤入力セルを60行に増やす 今回、決勝戦は60問限定という設定でした。
正誤入力セルも60行に増やす必要があります。

まず、オートフィルで10行追加します。
49問目と50問目の一番左の行からスルー入力列まで(A67:H68)を選択し、78行目までドラッグします。


さて、ここで満足しては行けません。
得点表示セル()・誤答表示セル()は


なお、得点・誤答の参照範囲の変更がめんどくさいという場合は、他の形式同様に得点・誤答記録テーブルを作っておけば、出題数が何問に増えても大丈夫(少なくとも記録テーブルの行数分はOK)なので、
③優勝決定時の処理を行う いざ、決勝戦!

参加者59さんが10問…

【参加者管理⑧】敗者復活~準決勝

イメージ
前回:【参加者管理⑦】3R勝者集計まで

3Rまで終了し、勝者が12名決まりました。
続いて敗者復活戦により1名を合流させ、13人でアタック風サバイバルを行います。

なお、ここで想定している大会の敗者復活では、得点表示は行いません。
得点表示を行わなくても進行できる形式としては、以下のようなものが挙げられます。
A.サバイバルクイズ 参加者全員にあらかじめ選択肢札もしくは解答用紙を配り、全員を起立させてスタート。
問題を1問出題し、制限時間内に手持ちの解答用紙に答えを書きます(択一形式なら手持ちの札を掲げる)。
誤答が出た時点でその人は失格となり、着席します。
規定人数以下になったら終了。
多くの場合はその後、2ndステップと称し早押しクイズに移行する。
B.2○1× 「1問正解で起立、2問正解で勝ち抜け、1問誤答で即失格」という早押し形式ならば、小道具を使わなくても進行することが可能です。
3○以上のノルマを課したい場合は、首からかけるレイなどを用意する必要があります。その際、レイをかけるスタッフも舞台上に1~2人用意しておくとよいでしょう。


今回までの完成品はこちらです。

【作り方】 ①準決勝の参加者テーブル・勝者テーブルを作る 「参加者管理」シートを開いてください。
まず、左の参加者管理テーブルの準決勝の行に、3Rと同様「順番」行を挿入します。M列が「順番」行になりました。
(無計画ですみません…)

続いて数式です。
M3セルに以下の数式を入力し、M62セルまでオートフィルします。

=IF(COUNTIF($AE$10:$AG$13,A3)>0,RANK.EQ(A3,$AE$10:$AG$13,1),"")

まず、3Rの勝者テーブル(AE10:AG13)の中に、その人がいるかどうかを探します。もしあった場合は、その人が勝者の中で何番目かを返します。このとき、第3引数に「1」を指定しておくのを忘れないでください。ペーパー順位なのですから、「数字が小さい方が上位」というわけです。


続いて、準決勝の参加者テーブルです。
作り方は【参加者管理⑥】のステップ④を参考にしましょう。



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

=SUMPRODUCT(($M$3:$M$62=R$3)*($A$3:$A$62))


②準決勝の得点表示…