はかせのラボ

私の頭の中を書いていく雑記ブログです

落ちモノパズル 詰めテト作ってみた

あいさつ

どうも、はかせです。
今回は詰めテトを作ってみたので
その紹介です。

実装しようとした経緯

以前Tスピン実装の記事をあげたとき
私が下手で確認が出来ないって嘆いていたら
詰めテトとか作ってみたらどうでしょうっていう
ありがたいコメントを頂きました。

ちなみにその記事はこちら↓
hakase0274.hatenablog.com


そのすぐ後に就活関連で東京行ったりとかで時間がなかなか取れず
実装できていませんでした。

ただようやっとまとまった時間を開発に充てることができるようになったので
実装しようと思い今回実装してみました。

実装

指定したキー(今回はテンキーの1)を押したら
Tスピンが可能な盤面に盤面を切り替えて
手持ちのテトリミノをTミノに切り替えます。

今回Tスピン盤面としてはよくDT砲といわれている盤面です。
f:id:hakase0274:20190322210653g:plain

盤面切り替えは盤面情報をcsvファイルで用意しておき、
キー入力を受けて読み込んで反映しているだけです。

void FieldManager::SetTSpinField()
{
    auto dataTable = GetCSVData("Data/DT.csv");

    auto i = ROWNUM - 1;
    auto j = COLUMNNUM - 1;

    for (auto datas : dataTable)
    {
	i = ROWNUM - 1;
	for (auto data : datas)
	{
	    if (data == "s")
	    {
		UpdatePiece(i, j, Space, Red);
	    }
	    if (data == "r")
	    {
		UpdatePiece(i, j, FieldLock, Red);
	    }
	    if (data == "b")
	    {
		UpdatePiece(i, j, FieldLock, Blue);
	    }
	    if (data == "g")
	    {
		UpdatePiece(i, j, FieldLock, Green);
	    }
	    if (data == "o")
	    {
		UpdatePiece(i, j, FieldLock, Orange);
	    }
	    if (data == "l")
	    {
		UpdatePiece(i, j, FieldLock, LightBlue);
	    }
	    if (data == "p")
	    {
		UpdatePiece(i, j, FieldLock, Purple);
	    }
	    if (data == "y")
	    {
		UpdatePiece(i, j, FieldLock, Yellow);
	    }
	    i--;
	}
	j--;
    }
}

GetCSVDataは以前実装したcsvファイル読み込みをメソッドとして抽出しただけです。
csvファイル読み込みの詳細はこちらの記事をどうぞ
hakase0274.hatenablog.com

あとがき

今回は詰めテトを実装してみたという話でした。

実装してみて使ってみて思ったのが
「めちゃめちゃデバッグがしやすい」です。

目的の状況をキー入力一発で作りだせて
しかも何度でも可能なので
Tスピンの練習も出来ますし、
誰かに機能を見せる時にも使えるしで
実装して本当によかったなと思いました。

詰めテト実装の助言をして頂き本当にありがとうございました。
この場を借りてお礼申し上げます。

それでは今回はこの辺でノシ