はじめに

 2007年1月に行われた大学入試センター試験の「情報関係基礎」という科目で出題されたプログラミング問題は「数字や演算記号(+,-,×)が書かれたいくつかのブロックを積み上げ、定められたルールに従って計算しながらブロックを操作して消していくゲームを作る」というものでした。問題中で取り上げられたプログラムは、ルールに従ってブロックのデータを操作する部分だけでしたので、その通りにプログラミングしたとしても、ゲームにはなりません。そこで、実際に遊ぶことができるゲームにしてみようと、この「計算ブロック」をつくってみました。
 このページの一番下の部分にあるリンクボタンをクリックすると、別ウィンドウが開いてゲームをすることができます。このゲームを遊ぶことで、計算力はもちろん、記憶力や集中力を養うこともできるかもしれません。ぜひ、挑戦してみてください!

ゲームの概要

 「ブロックを7個積んで、解を80にせよ。」というような問題が出題されます。0から9までの10種類の「数字ブロック」と+,-,×の3種類の「演算ブロック」が用意されていますので、それらのブロックを指定された数だけ積み上げます。
 積み上げたブロックは、あるルールに従って計算され、数字が書き変えられ、ブロックの個数が減っていきます。最終的に2つ以上のブロックが残ったままになってしまったら、失敗です。1つのブロックだけが残ったら、成功です。その残ったブロックに書かれている数字がそのときの「解」となります。その「解」が問題で求められた解と一致すれば、「正解」となり、次の問題に進むことができます。

成功例 失敗例

 ゲーム「計算ブロック」には2つのタイプがあります。「プラクティス」と「タイムトライアル」です。「プラクティス」は、ゲームの遊び方を理解し、問題に正解するためのブロックの積み方を練習するバージョンです。全部で30問の練習問題が出題されます。「タイムトライアル」は、全5問の問題を解くのに要する時間を競うバージョンです。A,B,Cの3つのレベルがあります。

プラクティス版 タイムトライアル版

ブロック操作のルール

  1. ブロックは1段に8個まで並べることができ、4段まで積み上げることができます。
  2. 「計算」によって3つのブロックを1つのブロックに置き換えます。
  3. 「計算」は、最下段のみを対象とし、左端から順に計算可能な組み合わせを調べます。計算可能な組み合わせは、[1][+][2]のように、2つの「数字ブロック」の間に「演算ブロック」が1つあるという形の3つのブロックのみとします。計算した後は、中央の「演算ブロック」を計算結果の数値が書かれた「数字ブロック」と置き換え、左右の「数字ブロック」は取り除きます。この作業を右端まで繰り返します。
  4. 取り除かれたブロックがある場合には、その上のすべてのブロックを1マスずつ落下させます。
  5. 最下段で一度も「計算」が成立しない場合、その時点で操作終了となります。
  6. 計算結果は-999~999の範囲でなければなりません。その範囲から外れた場合、その時点で操作終了となります。

 ブロックが1つのみ残った状態となることを目指して、ブロックをうまく積んでください。

ブロック操作の具体例

 左の画像のような5つのブロックを積み上げた例を考えてみます。
 最下段の左端から順に計算可能な組み合わせを調べます。ここでは、[1][+][2]の3つのブロックの組が見つかりました。
 その計算結果の数が書かれたブロック[3]が中央のブロック[+]と置き換えられ、左右のブロック[1]と[2]は取り除かれます。
 その右側にも計算可能な組み合わせが見つかれば、同じことを繰り返します。この例では、計算可能な組み合わせは見つかりませんので、次に進みます。
 ブロックが取り除かれて空白となったマスに、その上のすべてのブロックが1マスずつ下に落下します。ここでは、ブロック[3]の右側のマスにブロック[×]が落下します。
 再び最下段の左端から順に計算可能な組み合わせを調べます。今度は、[3][×][4]の3つのブロックの組が見つかりました。
 その計算結果の数が書かれたブロック[12]が中央のブロック[×]と置き換えられ、左右のブロック[3]と[4]は取り除かれます。これで、ブロックが1つだけとなりましたので、ブロック操作は終了します。
 ブロック操作が終了した時点で、残ったブロックが1つだけになったら、「成功」です。2つ以上のブロックが残ってしまったら、「失敗」となります。この例の場合は、「成功」ですね。

「計算ブロック」の遊び方

 ゲームのWebページを開くと、「プラクティス」「タイムトライアル」どちらの場合も、タイトルの下に3つのボタンが表示されます。「プラクティス」では(ゲームをはじめる)を、「タイムトライアル」ではどれかのボタンをクリックすると、ゲームがスタートします。
 「プラクティス」では制限時間はありません。全部で30問の問題が用意されています。途中でやめても、次回はその問題からスタートすることができます。
 「タイムトライアル」では、そのレベルに応じた難易度(レベルA:やさしい レベルB:ふつう レベルC:むつかしい)の問題が5問出題されます。5問すべてに正解するまでのタイムを競います。
 ゲームがスタートすると、タイトルの下に問題が表示されます。要求されている解になるように、指定された数のブロックを積みます。
 左図のアの部分(「道具箱」と呼ぶことにします)のどれかをクリックすると、赤い枠で囲まれ、そのブロックを選択することができます。続けて、イの部分(「置き場」と呼ぶことにします)のどこかのマスをクリックすると、そのマスにアで選択したブロックが置かれます。ただし、道具箱の「空」を選択した場合は、クリックしたマスのブロックが取り除かれ、空白に戻ります。「消」をクリックした場合は、その瞬間に置き場のすべてのマスが空白に戻ります。うっかりクリックしないように注意してください。
 左図の例では、[5][+][1]と3つのブロックを置きました。左下のマスから置いていますが、どのマスから置いても構いません。ただし、ブロックがないマスの上のマスにブロックを置いた場合には、計算をスタートするときにチェックされ、下にブロックがある段または最下段まで落下します。
 ブロックを積み終えたら、画面右下にあるボタン(計算する)をクリックします。するとブロックの操作が始まります。
 なお、「プラクティス」では、(改解する)というボタンも表示されます。このボタンをクリックすると、その問題で要求されている解を他の数値に変更することができます。どうしても正解できない場合にクリックしてください。
 ブロック操作が終了すると、その結果が判定されます。「正解」の場合も「失敗」の場合も、画面右下に同じ2つのボタンが表示されます。
 (続ける)をクリックすると、正解の場合には次の問題に進みます。失敗の場合には、同じ問題が再度表示されます。その際、どちらの場合にも、前回積んだブロックがそのまま積まれた状態からスタートします。ゼロからスタートしたい場合は、道具箱の「消」をクリックしてください。
 (やめる)をクリックした場合は、はじめの画面に戻ります。「プラクティス」では、次回は最後に正解した問題の次の問題から再開します。第1問からにしたい場合は、はじめの画面で道具箱の「消」をクリックしてください。「タイムトライアル」では次回も第1問からスタートします。
 「タイムトライアル」では、5問正解すると、それに要した時間が「あなたの記録」として表示されます。それまでの最短記録を更新すると、その記録が最短記録として保存されます。最短記録を他の人と競い合うこともできますし、自分自身の成長を計る目安とすることもできます。
 保存された最短記録は、はじめの画面で道具箱の「消」をクリックすると、初期値に戻すことができます。