投稿

「ポイント換算クイズ」の得点表示の作り方

イメージ
以前「ポイント換算クイズ」の作り方をリクエストして頂きましたが、ようやく完成したので投稿いたします。 ポイント換算クイズのルールは以下の通りです。 ・各プレイヤー、「○」「ポイント」の2種類の変数を持っており、どちらも最初は0である。 ・正解すると、○が1つ加算される。そのとき、○をポイントに交換するかどうかを選択する。 「交換しない」を選んだ場合はそのまま次の問題に移るが、「交換する」を選んだ場合は、今まで持っていた○数に応じてポイントが加算され、○数は0に戻り、次の問題に移る。 ・交換によってもらえるポイント数の計算式は様々なバリエーションが考えられるが、ほとんどの場合は「交換する○の数が多いほど、もらえるポイントが加速度的に多くなる式」である。 (例) ○の数の2乗 1○=1p、2○=4p、3○=9p、4○=16p… 三角数 1○=1p、2○=3p(=1+2)、3○=6p(=1+2+3)、4○=10p(=1+2+3+4)… ※n○のときに交換されるポイントは、n(n+1)/2で求められる。 ・誤答すると、そのときに持っていた○数を全て没収される。 それ以外にも「3回で失格」や「0○時の誤答はN回休み」などのルールを付け加えてもよい。 ・ポイントが規定値に達したプレイヤーから勝ち抜けとなる。 ・限定問題数に達して試合終了となった場合、残りのプレイヤーの順位はポイントの多さで判定する。 終了時点で持っていた○はポイントに交換されない。 ○を貯めれば貯めるほど大逆転が狙えますが、1回の誤答で全てを失ってしまうという、なかなかスリリングなルールですね。 今回は、「交換→+(○の数の2乗)p」「誤答罰→3回で失格」「20p勝抜け」のルールで作っていきたいと思います。 基本⑤ の続きから作っていきます。 完成品は こちら です。 【作り方】 ①「○数表示行」を追加する ポイントと×数の間に○数表示行を追加します。 図1において、各行の文字の大きさは次の通りです。 ポイント…84 ○数…48 ×数…62 ②正誤スルー入力セルに「交換入力列」を追加する 通常は、1問ごとに入力する行は、プレイヤー数だけ用意された「正誤入力列」とその右の「スルー入力列」で構成されていましたが、このルールに限り、さら...

『プレAQL全国大会』の得点表示を担当しました

イメージ
【2019年6月22日 追記】 AQL2018(2019年3月16日開催)で使用した得点表示を配布いたします。 こちら からどうぞ。 2018年3月17日(土)に開催された、全国的クイズ大会「 プレAQL 全国大会」にて使用する得点表示を制作いたしました。 この大会で採用されているルールは「10by10by10 mini」というルールで、2つのチームが5つの早押しボタンを持ち、相手チームよりも先に、各ボタンのポイントの積が200以上に到達すれば勝利、というルールです。 詳細はこちらを御覧ください。 https://quiz-schedule.info/aql/html/AQLofficial.html 制作する上で重要視した点をざっと挙げてみます。 とにかく得点・状態が目立つようにした フォントは「Impact」を使用。 「どのチームとどのチームが戦っていて、何対何なのか」ということが一目で全観客(プレイヤー含む)に分かるようにした。 また、誤答数は得点とは別の行の欄に「×」の字で表示した。 この形式は比較的誤答に厳しいルールなので、誤答の発生は珍しいことである。よって、デフォルトでは誤答に関するマークは一切表示しないことにした。 さらに、各ボタンの「状態」はセルの色で表現した。 黄色:リーチ状態(そのボタンで次に1問正解すれば勝利) 黒:封鎖状態(そのボタンで解答できない状態) 出場チームの出身リーグ・通過順位を表示した 全国大会という場は、「日本各地のリーグから勝ち上がってきたチームが一堂に集う場所」であるので、予選の存在を画面から匂わせる必要があると考えた。 そのため、各チームの出身リーグおよび順位を表示した。各リーグには色が決まっていたため、それもきちんと反映した。 作者の個人的な趣味が出ないようなデザインにした この大会は「皆で作る大会」と銘打っている通り、「みんなのもの、公共のもの」という性格が強い。 よって、フォントにおいて、(見やすさ以外の観点での)自分の個人的な好みを極力排した (つもりですが…)。 プレイヤーが座席を立っても数字が隠れないよう、画面の下部に情報を載せないようにした これは大会長から途中で提案されたものであるが、部屋のメイン画面の高さの関係上、背の...

「運命の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の数字が入力されています。 それでは、数式を入れていきましょう。 ま...

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

イメージ
今回は、得点表示の視認性についてのお話をします。 これまで、いくつもの形式別の得点表示の作り方を説明してきました。 しかし、単に「入力したら数字が動く・色が変わる」というカラクリを作ることだけが、得点表示"道"ではないと考えます。 得点表示は、「観客および参加者に、得点状況をはっきり伝える」のが目的です。そのため、 客席から見たときの視認性 には可能な限り気を遣ってデザインしたほうがよいでしょう。 そのために気をつけるべきことを、思いつくままに書いてみました。 ※私は別にデザインとかを本格的に勉強しているわけではないので、デザインの世界から見るともしかすると間違ったことを書いているかもしれません。あくまでも私の主観です。ご了承下さい。 ご意見がありましたら、気軽にコメントしていただけると幸いです。 ①得点の表示位置 大会や例会が開かれる場所は様々です。 舞台と客席があるようなホールで行うこともあれば、大きい会議室のような部屋で行うこともあります。 特に、会議室のような、 客席と解答席の高低差が小さい部屋で行う場合、スクリーンの下の部分が解答者の体で隠れてしまう ことがあります。 そうなってしまう場合、 名前の下に得点を表示するのではなく、名前の上に得点を表示 するべきでしょう。 「得点表示」と言っているからには、 何よりも得点(および誤答数等の情報)を優先的に見せなければなりません 。得点表示の要素の配置はある程度慣習化されてきていますが、 「名前の下に得点を表示しなければならない」 と誰かが決めたわけではありません。 ちなみに「abc」の得点表示は、8thまで使用されていたものは、名前の 上に 得点が表示されていました。 会場の特性を考えてレイアウトを決めてみてください。 ②数字の大きさ・太さ それぞれのクイズのルールには、正解数・誤答数・連答数・通過チャレンジ回数など、各解答者に与えられるさまざまな成績が存在します。 そして、それらのうち、順位判定に関わるものが存在し、さらに序列が決まっています。 例えば、1試合に決められた問題が全て出題された場合、正解数の多い方が上位→同じならば誤答数の少ない方が上位→それも同じならば、ペーパークイズの順位が高い方が上位、というものです。 ...

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

イメージ
得点表示画面に選手名を表示する際、名前の最初の文字と最後の文字の位置はみな揃えてあった方が理想的です。 しかし、日本人の名前は文字数がバラバラです。2文字の人もいれば、6文字の人もいます。 何も工夫していなければ、高さがバラバラに表示されてしまいます。6文字の人にいたっては、名前がはみ出てしまっています。 出来ることなら、苗字と名前の間に適切なスペースを入れたり、字数が多ければ自動的に小さくしたりして、高さを統一したいものです。 このような表示を可能にするには、参加者管理シリーズで作った参加者リストの段階で、各プレイヤーの苗字と名前を分離しておく必要があります。 今回は、「1つのセルにはデフォルトで5文字の名前が入る」という原則に従い、4文字以下の名前についてはスペース含めて5文字になるようにスペースを入れる、6文字以上の名前はスペースを入れず、文字数に応じてフォントの大きさを調節してくれるようにします。 なお、苗字と名前を分離しておくと、ネームプレート作成時や記録集を作る際の得点記録出力など、他の場面においても役に立ちます。 それでは、 基本⑤ から作っていきます。 完成品は こちら です。 【新しく登場するExcelの機能】 関数「FIND」 関数「LEN」 【作り方】 エントリーフォームにおいて、名前入力欄の段階で苗字と名前を別の入力ボックスに使っている場合、①、②のステップは必要ありません。 もしエントリーフォームの名前入力欄がフルネームを要求するものの場合、「苗字と名前の間に 1文字だけスペースを入れる こと」を参加希望者に伝えておいてください。 それでも、苗字と名前の間にスペースが入っていない人がいた場合、大会主催者側が手動で苗字と名前の間にスペースを 1文字 入れていくしかありません。 ①参加者リストを作り、参加者の名前を入力していく 参加者リスト用のシートを作り、参加者リストを作ります。 現段階では、全ての参加者が、苗字と名前の間に全角スペースが入っている状態です。 ②苗字列・名前列に数式を入力する 続いて、B列に入力されたフルネームを、それぞれ苗字(C列)と名前(D列)に分離します。 それぞれ、以下の数式を入力します。 C列:苗字 (C2セルの場合)...

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

イメージ
これまで、誤答数表示は、「(誤答数)×」という形式で表現しておりました。 ですが、たとえば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引数に「文字列の個数」を指定するだけです。 これで、誤答した数の分だけ「×」が表示されるようになりました。 ×の字は、見やすくなるように文字の大きさを大きくしたり、ボールド体にしたりするとよいでしょう。 ボールド体は、上のメニューからボタンをク...

【参加者管理⑨】決勝戦

イメージ
前回: 【参加者管理⑧】敗者復活~準決勝 前回で準決勝までが終わりました。 いよいよ決勝戦です。 完成品は こちら です。 【作り方】 ①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行目までドラッグします。 さて、ここで満足しては行けません。 得点表示セル()・誤答表示セル()は なお、得点・誤答の参照範囲の変更がめんどくさいという場合は、他の形式同様に得点・誤答記録テーブ...