「Head of the Stage」の得点表示の作り方

前回は、上座クイズの基本である解答者の上下の処理のみを行える段階まで作りました。
ここから、さらにルールを付け加えていきます。

今回は、かつてSTUの準決勝で行われていた「Head of the Stage」の得点表示の作り方を解説します。

このクイズは9人で行います。まず、客席から見て左側(下手)から前Rの成績順に並びます。
左に行くほど「上位の席」となっており、早押しクイズで正解すると2つ上位の席に上がることができます。
また、このクイズではポイントを稼ぐ必要があり、1位席で正解すると+4p、2位席で正解すると+2p、3位席で正解すると+1pとなります。それ以外の席で正解してもポイントは増えないため、勝ち抜けるためにはまず上位席に登らなければなりません。
10p以上に到達すれば勝ち抜けとなります。

ただし、誤答はいかなる位置でも即座に最下位の席に落とされてしまいます。また、誤答数はカウントされており、通算5×で失格となります。
(最下位席で誤答した場合は2×が加算)

それでは、「上座クイズ」の得点表示の作り方(基本形)の続きから作っていきます。
完成品はこちらです。

【作り方】

①ルール設定をする

デフォルト設定は以下の通りです。

勝ち抜け:10
失格:5
上昇:2
下降:8

「下降」は(プレイヤー数-1)以上の数ならば、誤答時に最下位席降格と同じことになります。

②勝ち抜け者数記録テーブル・失格者数記録テーブル・ポイント数記録テーブル・×数記録テーブルを作る

上座クイズの得点表示では既に3つのテーブルを作りましたが、ここではさらに4つのテーブルを増設します。
また、プレイヤーの人数も9人に増やす必要があります。

[既設]解答者配置テーブル(O~W列)
[新設]勝ち抜け者数記録テーブル(X列)
[新設]失格者数記録テーブル(Y列)
[既設]順位加減テーブル(Z~AH列)
[既設]順位更新テーブル(AJ~AR列)
[新設]ポイント数記録テーブル(AT~BB列)
[新設]×数記録テーブル(BD~BL列)

最後の2つのテーブルにおいて、各行は各解答者に対応しています。
すなわち、AT列とBD列は番号1の解答者の記録、AU列とBE列は番号2の解答者の記録、…、BB列とBL列は番号9の解答者の記録というわけです。


とりあえずまずは格子を引きます。
今回は0問目の行である6行目から格子を作って下さい。

続いて、加算ポイント数と加算×数の表を作ります。
どこでもいいのですが、4,2,1,0,0,0,0,0,0という配列と1,1,1,1,1,1,1,1,2という配列を入力しておいてください。
これは、それぞれ「各席における正解時の加算ポイント」および「各席における誤答時の加算×」を表しています。
ここでは、AT4~BB4に加算ポイント表を、BD4~BL4に加算×表を書きます。

いよいよ、数式を入力します。
新設した4つのテーブルの数式を入力するだけではなく、順位加減テーブルの数式の修正も必要です。

<勝ち抜け者数記録テーブル>

X6セルには0を入力します。
X7セルに以下の数式を入力し、X56セルまでオートフィルします。

=SUMPRODUCT(($AT7:$BB7>=$O$4)*($AT$6:$BB$6<>""))

<失格者数記録テーブル>

Y6セルには0を入力します。
Y7セルに以下の数式を入力し、Y56セルまでオートフィルします。

=SUMPRODUCT(($BD7:$BL7>=$P$4)*($AT$6:$BB$6<>""))

<順位加減テーブル>

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

=Z$5-IF(D7=1,$S$4+0.1,IF(D7="x",-$T$4-0.1,0))-IF($X7>=Z$5,$S$4+0.1,0)+IF(9-$Y7<Z$5,$T$4+0.1,0)

このように書き換えることで、勝ち抜け者が発生した後、「上位陣が正解したときに勝ち抜け者を押しのけて上位に潜り込む」ということや「誤答者が出た場合、失格者を押しのけて最下位席に落ちる」ということを防ぐことができます。
そのために、勝ち抜け者数記録テーブルと失格者数記録テーブルを作ったのです。

<ポイント数記録テーブル>

AT6~BB6セルには全て0を入力します。
AT7セルに以下の数式を入力し、BB56セルまでオートフィルします。

=IF(INDEX($D7:$L7,MATCH(Z$5,$O7:$W7,0))=1,AT6+INDEX($AT$4:$BB$4,MATCH(Z$5,$O7:$W7,0)-$X6),AT6)

<×数記録テーブル>

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

=IF(INDEX($D7:$L7,MATCH(Z$5,$O7:$W7,0))="x",BD6+INDEX($BD$4:$BL$4,MATCH(Z$5,$O7:$W7,0)+$Y6),BD6)


各テーブルの関係図は以下の通りです。




③解答者表示セルの上に解答者番号を表示させる

解答者配置テーブルの番号を参照し、解答者番号を表示させます。
これをすることで、続く手順④の手間を少しだけ省くことができます。

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

=OFFSET(O$7,$Q$4,0)



こうすることで、D3セルを以下のように書き換えることもできます。
(書き換えなくてもよいですが)

=INDEX($Z$3:$AH$3,OFFSET(O$7,$Q$4,0))

=INDEX($Z$3:$AH$3,D$2)

この部分を見せたくない場合は、見出しを右クリックして「非表示」を選択して隠すか、文字の色を白に設定するなどしてください。

④得点表示セル・×数表示セルを作る

<得点表示セル>

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

=IF(INDEX(OFFSET($AT$6:$BB$6,$Q$4,0),D$2)>=$O$4,"WIN",IF(INDEX(OFFSET($BD$6:$BL$6,$Q$4,0),D$2)>=$P$4,"LOSE",INDEX(OFFSET($AT$6:$BB$6,$Q$4,0),D$2)))

勝ち抜け時には「WIN」、失格時には「LOSE」と表示されるようになっております。

<×数表示セル>

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

=INDEX(OFFSET($BD$6:$BL$6,$Q$4,0),D$2)&"×"







コメント

このブログの人気の投稿

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

クイズにおける「得点表示」とは?

【参加者管理①】ペーパークイズの成績を管理する