コンソール(C++)で「ぷよぷよ」作ってみた
こんにちは、缶です。
今回は昨日今日の隙間時間でしょぼめの「ぷよぷよ」を作ってみたのでそれについて書くことにします。
◆作ろうと思ったきっかけ
昨日、クラスメイトが授業後の自習で「ぷよぷよ」を作っていて、バグに悪戦苦闘しているのを見かけました。
「(ぷよぷよなんて簡単だろ…)」と思い彼を助けようとしたのですが、実際に脳内で処理を考えてみると、ぷよぷよの消す判定や回す判定って意外と難しそう。
なので、「(ぷよぷよなんて簡単だろ…)」なんて見当違いなことを思った戒めに自分でも作ってみることにしました(?)。
◆ぷよぷよってどうやって消すの??
ぷよぷよはテトリスやドクターマリオなどと違い、T字やコの字など様々な形を判定しなきゃいけないので、プログラム上でやろうとすると、1列揃っているのを検知すればいい他の二つと比べるとプログラムの難易度が上がってきます。
ぷよぷよの場合、ぷよを消すには、自分と同色のぷよが4つ以上繋がっているのを探索しなければいけません。
・一番左下から始めて右と上の同色ぷよだけ探索していけばいいんじゃね?
⇒コの字型のぷよを判定できない…
・上下左右の同色ぷよを探索すればいいんじゃね?
⇒四角型で無限ループしそうだし…
⇒T字型の時もちょっとバグりそう…
うーん、、、
ネットで正解を探しちゃえばいくらでも見つかりそうなものですが、そんなのはプライドが許さないので、めちゃくちゃ悩みに悩んだ末、今晩やっと正解の1つを見つけだしました。
調べてみると、どうやら深さ優先探索という名前らしいです。
ただ、ここで説明しようと思うとかなり長ったらしくなるので、さっきネットで見つけた似たようなことが書かれた記事を貼っておきます。気になる方はそちらへ…(とてもわかりやすい)
◆できたもの
こちらが、ほぼ1日で作ったしょぼぷよぷよです。
![](https://assets.st-note.com/production/uploads/images/160095865/picture_pc_76976d5d91ac3a91866d364e05d2f32b.gif)
コンソールで作ったにしてはまぁまぁキレイにできたと思います。(ソースコードがキレイとは言っていない)ぷよが落ちるときの描写とかにもこだわりました。
ぷよが落ち切ってから消えるようにしているので、しっかり連鎖とかもできていていい感じです。
……ただ、お気づきの方もいるかもしれませんが…
このゲーム…まだぷよが回りませんッ……!!
すみません!!もう眠いんです!!気が向いたときに完成させます…!!!たぶん…
◆おまけ
このゲームの制作中に、別のクラスメイトにこんなサイトがあるよと教えてもらいました。↓
どうやらぷよぷよ公式が出しているプログラミング学習教材のようです。
気合いでソースコードを写経(!?)して、プログラミングに慣れるというものらしいです。ブラウザで出来るらしいので興味がある方はぜひ。
ここまで読んでいただきありがとうございました!今後も引き続き学習したものや、自主制作物などを投稿していけたらなと思います!