「アタック風サバイバル(アタサバ)」の得点表示の作り方

「アタック風サバイバル(通称:アタサバ)」の得点表示の作り方を説明します。

正解によってポイントを積み重ねていく普通の形式とは違い、「アタック風サバイバル」は、相手のポイントを削り合っていく、サバイバル方式のルールです。
詳しく説明しますと…
・まず、各プレイヤーにライフポイント(2桁の値が多い)が与えられる。
・早押しクイズで正解すると、その人以外の解答者のライフが減る(かつ、正解者に加点される場合もある)。
・誤答すると、その人だけライフが減る。
・持ちライフが0点以下になった人から失格していく。
・規定人数以下になったらゲームセット。もし勝ち抜け枠よりも少なくなった場合はサドンデス等を行い調整する。問題数限定がある場合は、残りライフの多さなどで勝敗を決める。

この名前は、『パネルクイズ アタック25』で1989年から3回行われた、大学対抗の団体戦で行われたルールに由来しています。
1チーム25人のメンバーが順番に並び、各チーム1人ずつ解答席につきます。正解したチームの解答者はそのまま、それ以外のチームは次のメンバーに交代します。誤答した場合はそのチームのみ次のメンバーに交代します。
基本的には通常どおり、25枚のパネルが埋まった時点での獲得枚数を競いましたが、この企画では特別に、「途中で25人目のメンバーがアウトになったチームはパネルの枚数に関わらず敗退決定」というルールが追加されました。
現在行われているアタサバは、いわばこの"メンバーの人数"のみを勝敗の基準として採用しているわけです。

このルールは大会によってルールが異なる場合が多いです。そのため、簡単にルール変更ができるようにしておいたほうがよいでしょう。
そこで、前回の「基本③:勝ち抜け・失格等のルール設定を変更できるようにする」の続きから作っていきます。

ルール設定のためのパラメータは以下の4つです。
「ライフ初期値(A)」
「正解時に減る相手のライフ(B)」
「正解時に増える自分のライフ(C)」
「誤答時に減る自分のライフ(D)」
※「誤答で自分以外ライフ増加」というルールを採用した大会もあるにはありますが、ここでは実装しません。

全部でN人の選手がいて、解答者i(i=1,2,…,N)の正解数をp_i、誤答数をq_iとします。また、参加者全体の正解数の合計をΣpとおきます。
このとき、iの残りライフL_iは、

L_i = A + C×p_i - {B×(Σp - p_i) + D×q_i }
      = A + (B+C)×p_i - D×q_i - B×Σp

これを意味する数式を、ポイント表示セルに書けばいいのです。
そして、IF関数で、0以下になったら「OUT」と表示する処理をすればとりあえずOK。

完成品はこちらからダウンロードできます。

※9月4日追記
基本シリーズを踏まえて作った「完全版」はこちらです。

【使用するExcelの機能】

・行(列)の挿入
・関数「OR」

【作り方】

ここでは、正誤スルー入力セルの記録(7~56行目)とポイント表示セル(5行目)は全て消した状態から始めます。

①ルール設定セルを作る

N3~Q3セルにそれぞれ以下の通りに記入します。

N3:初期値
O3:正解時の相手の減点
P3:正解時の自分の得点
Q3:誤答時の自分の減点

これらの設定値を入力する場所は、それぞれN4,O4,P4,Q4です。それら4つは入力欄ということで着色しておきます。
画面上部の「ホーム」タブの「フォント」グループから、バケツを傾けたようなアイコン(その右隣には「A」のマーク)をクリックし、好きな色に変えます(黒文字が見えるような色で入力して下さい)。

そして、N4~Q4の数値を適当に決めます。
ここでは、『STU』のSemi Finalで行われているルールを拝借し、以下のように設定します。
N4:20
O4:1
P4:1
Q4:2



②残りライフを表示する

D4~K4セルには、先ほどの計算式で求められる残りライフを表示しなければなりません。
しかし、このセルは、ライフが0以下になった際に「LOSE」等と表示し、黒くなってもらわなければなりません。
直接4行目のセルに数式を入れてもいいのですが、IF関数を使用するので、あの長い式を2回も入れなくてはなりません。

そこで、5行目(誤答数表示セル)の下に1行加え、そこに先ほどの計算式を入力します。
そして、4行目のセルには、その値が0以下になったら「LOSE」、そうでない場合は6行目の値をそのまま表示するようにしてもらいます。
すなわち、6行目を経由して4行目に表示させればよいのです。
なお、本番で使用する際は、6行目は非表示にします(③で説明)。

行の加え方は簡単です。
画面左端の見出しから6行目をクリックし、6行目全体を選択します。
そして、画面上部の「ホーム」タブから「セル」グループの「挿入」をクリックします。
すると、1つ上の5行目の書式が継承されたまま、新しい行が追加されます。

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

=$N$4+($O$4+$P$4)*SUM(D$8:D$57)-$Q$4*COUNTIF(D$8:D$57,"x")-$O$4*SUM($D$8:$K$57)

このうち、相対参照はSUM(D$8:D$57)との2つです。ここでは、列のアルファベットに$をつけません。列によってそれぞれ参照すべき列が違うからです。
それ以外の、先ほど設定した4つのパラメータ(N4~Q4)や、全員の合計正解数を求める項 SUM($D$8:$K$57) は、プレイヤーによって参照する場所が違うということはないため、絶対参照を用います。

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

=IF(D6<=0,"LOSE",D6)

こうすることで、ライフが0以下になったら失格の表示になります。
条件付き書式では「4行目のセルが"LOSE"になったら黒くする」という設定だったため、ここを変更する必要はありません。

③ライフ計算用セル(6行目)を非表示にする

最後に、6行目のセルを非表示にします。
行を挿入したときと同様、6行目の見出しをクリックし、6行目全体を選択します。
そして、右クリックで開くメニューから「非表示」を選びます。

これで、6行目は隠されました。

再び表示させたい場合は、幾つか方法がありますが、
・5行目と7行目を見出し上でドラッグすることにより選択し、右クリックメニューから「再表示」を選択
・見出しの5行目と7行目の間にポインターを合わせ、マークが以下のように変わったら下にドラッグorダブルクリック
を試して下さい。

これで基本は完成です。


ただ、STUのSemi Finalの場合、残りライフだけでなく、誤答回数でも失格条件が決められております(3セット合計で5回)。
ここでは、3回誤答でも失格となるように設定してみましょう。

失格条件が複数になる場合は、OR関数を使用します。
OR関数の中に複数の条件式をカンマ区切りで入れれば、その条件式のうち1つでも満たしていればTRUE、全て満たしていないならばFALSEとみなします。

④誤答数でも失格するように設定する

D4セルを以下のように書き換え、K4セルまでオートフィルします。

=IF(OR(D6<=0,COUNTIF(D$8:D$57,"x")>=3),"LOSE",D6)


8行目以降に正誤を入力し、適切に動作しているか確認して下さい。


また別の機会があれば、「残り○人になった時点でWINと表示する」というような処理を解説します。

コメント

このブログの人気の投稿

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

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

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