素人プログラマーの日常

効率の良いコード、美しいコードなんて書けません。

またパズルゲーム

またパズルゲームを作りました。今度はなかなか良作となっています。
と、その話をする前に…、


このブログでいちばん検索されているワードは、なぜか「杏仁豆腐」なんですよね。

杏仁豆腐の美味しい食べ方
http://dgen.hatenablog.com/entry/2015/04/29/184730

 

かなりいい加減に書きなぐって、プリンと一緒のごちゃっとしたあまり美しくない画像もアップしていますが、なぜだかよく検索されています。一応プログラミングがメインでやっているブログなので、それに関した検索流入も少しはありますが、「杏仁豆腐」が断然強いです。もっと杏仁豆腐をフィーチャーしたほうがいいんでしょうか?でもなあ…。これといって記事にするようなこともないですよ。杏の種子から作るところでも書いたらいいのかな。なんなら杏の種を植えて収穫するまでやりすますかっ!

 

いや、しませんっ!

 

だいたい杏が芽を出して実を結ぶまで何年かかるかも知りませんし、その長い間追跡ドキュメントするなんてこのブログの存在すらすっかり忘れていた私にできると思ってんのかーっ!

 

すみません。つい言葉を荒げてしまいました。よくわかりませんが勢いで書いただけです。本人も何に対して怒っているのかわかっていません。何はともあれ杏仁豆腐って美味しいよねってことが言いたかっただけです。

 

楽天で杏仁豆腐を検索

 

さて、前置きが長くなってしまいましたが、気分を入れ替え本題に入りましょう。杏仁豆腐のことはもう忘れてくださいね。あっ、でも今回は少し長くなりそうだからまた次回にしよっかな。いやいや、とりあえず途中まででも書いていくぞっ!

 

前回、前々回とあまりパっとしないものを紹介してしまいましたが、次はパズルゲームが好きならちょっとは時間が潰せるプロダクトとなりました。というのも前2作がてきとーな感じで終わってしまった反省と「もっと良いものを作りたい!」という創作意欲が出てきたので、多少なりともクオリティの高いものを作っていこうじゃないかと考えたからです。

 

今回の元となるゲームは「10×10」というパズルゲームです。最初にアップしたのはどこだか知りませんが、Yahoo や nifty などで遊べます。そのゲームをプレイした感触は評価したいんですが、単なるカジュアルゲームになってしまっているのが個人的に許せなかったので自分で作り始めました。

 

f:id:dgen:20180110141502j:plain

 

ルールは簡単で10×10のマスにブロックを置いていって縦横のラインを揃えるとそのラインが消えるというものです。ブロックが置けなくなったらゲームオーバー。これを私がアレンジしてどうなったかというと…。

 

まずブロックを回転できるようにしました。元のゲームでは向きが固定されているので「回転すれば置けるのに…」と、イラっとする場面が多かったからです。でも回転させると簡単になってしまうので、その分ブロックの種類を増やし難易度を上げました。またブロックの高さを5段階のランダムにしてラインが揃ったらそのラインを1段下げていくシステムにしました。それによって最大5回のコンボが発生しこれを狙ってプレイも熱くなります。もちろんコンボをつなげればそれだけ高得点となります。またラインが凸凹になるので難易度もアップします。

 

元ゲームでは得点があまりにもお粗末で、置いたブロックの数と消したラインによる得点が常に一定だったのでカジュアルゲームっぽさが加速していたわけです。ですから得点に関してはもっと付け加えて一度に一定以上のラインを消すと基礎点が上がるようにしています。こうすることでハイスコアを狙うにはちびちび消すのではなく大量消しが有効になってきます。でもこれが同時にトラップにもなっていて、大量消しを狙うと盤面が不規則に凸凹しやすくなって後からフォローするのが難しくもなったりならなかったり。

 

f:id:dgen:20180110141538j:plain

 

プレイが後半に差し掛かると1×1や2×1の小さい隙間ばかりでブロックが置けない状況になってきます。そこで登場するのがお助けアイテム!1ラインを1段下げたりブロックが無いマスを塗り潰すように埋めたり、使い方によっては差し迫った状況から逆転できます。使うタイミングや場所も結構考えてしまいますね。そしてそのアイテムはイージーモードでは最初から全種類持っていますが、他のモードでは自分で獲得していくしかありません。ここでもラインの大量消しのトラップにハマるように、複数ラインの同時消し(モードやレベルによる)でアイテムゲットとしました。

 

意外と実装してみてから面白いなと感じたのは自爆ボタンです。手詰まりになったときに自爆ボタンで置くべきブロックを全部破棄します。3回このボタンを使って次に押すとゲームオーバーになりますが、なにも手詰まりになってから押す必要もありません。今あるブロックが置けるとしてもあえて破棄することで次のブロックがイイ感じに置けるような状況も多々あるので、ある意味アイテムのひとつとして使う感覚にもなるんですよね。当初はブロックが置けない判定をするのがプログラム的に面倒なので作った自爆ボタンですが、新たな駆け引きの道具としてパズルを奥深くしています。

 

あとはおまけでブロックの見た目を選択できるようにしてあります。これは単に自分で納得のいくデザインのブロックが描けなかったのでいくつか描いている内に「せっかく描いたから全部使おう」となっただけですが…。

 

今回は細かい操作や見た目にも拘って作ったこともあり、今までの作品の中では最高傑作といっても過言ではありません。とはいってもやっぱり全体的に素人っぽさは隠せませんが…。まあ、これまで中途半端な作品ばかりでしたからね。たまにはちょっと気合を入れて作らないと!

 

あっ、BGM作らなかった…。
効果音はいくつか作ったけど。