VSは今年で開催二回目。昨年はタワーディフェンスを題材にし、押し寄せてくる敵から自分の城を守るためのアルゴリズムをつくったようです。今年のテーマは、「落ちものパズル」。C初心者の僕もがんばってプログラムを書こうと思います。タテ・ヨコ・ナナメで10をつくれば消えるルールを知るためにとりあえずサンプルゲームで遊んでみる。公式サイト下の「試しにゲームを遊んでみる」をクリックするとPCにゲームがダウンロードされる。やってみるがいまいちルールがつかめない。ブロックの数字はなんだ、色は関係ないのか、同じ色がよっつあつまれば消えるというわけではなさそうだ。全てのブロックが落下した状態になると、所定の条件をみたすようなブロックが全て消去されます。この際、消去された状況に応じてスコアが加算されます。なると、その和を構成する全てのブロックが消滅します。2.0(コードバーサス2.0)いや、わからんし。試行錯誤しながらゲームを遊び、サンプルゲームの場合はS=10ではないかと気付いた。タイプ:Small場合と同じだ。スコアの計算方法等も載っているがややこしいので今は考えないことにした。半角スペースを開けてこの順で一行で与えられます。形で、値は半角スペースを開けて与えられます。このうち、一行目が最も天井に近い行、一番最後に与えられる行が最も底に近い行になります。空白を意味し、それ以外の値はそのブロックが持つ値を意味します。書かれた行で区切られています。これらのパックの情報はゲーム開始時に全て与えられます。ややこしいので図で表してみた。ブロックはT×T個の正方行列の固まり(パック)で落ちてくる。0のときはブロックははいっていない。テトリスをイメージするとわかりやすいかもしれない。パックの情報はゲーム開始時に与えられている。良いスコアを計算し、そうなるようにパックを詰めばいいのだが、パックの数が多すぎる。SmallでもN=1000パック。2つの数値をスペースを開けて一行で出力します。度回して落下させる場合は、以下のように一行で出力します。この二つの数より多い、あるいは少ない数の数字を出力した場合は不正な出力をしたとしてゲームが終了します。こちらもややこしいので図を貼っておく。(幅:W=15のときのもの)数字の書いてあるブロックが枠の外に落ちるとゲームが終了してしまうので、落ちないようにXに制限をつけないといけない。回転回数もR=4以上にするとだめなのだろう。図の場合、一番右のパックは枠をはみ出しているのでこの数値で落とすのはよくない。こちらが決める値はパックを落とす位置Xとそれを時計回りに回転させる回数Rのみ。これをパックごとに指定する。意外とシンプルである。おわりにそれにしてもこの公式サイトの説明がいちいちわかりづらい。どれがどのブロックに対応しているのかはじめみたときは分からなかった。ルールを理解することもプログラマーの能力の一つだというのなら、何も言えない。明日からはサンプルコードの解読をはじめる。このペースで自分のプログラムを書き上げることはできるのか......!?おまけさいきんはまっている曲。2.0のゲームルールを理解する。サンプルコードを理解する。週間)1989年生まれ。