コミュ障だから明日が僕らをよんだって返事もろくにしなかった

何かを創る人に憧れたからブログをはじめたんだと思うよ

三行ぽっきり!! 三目並べ解説

三行で解説する三目並べ

現代人はとにかく時間がありません。一説には三行以上の文章は読むことができないのではないかと言われているぐらい時間がありません。そこで、このブログではそんな忙しい現代人に分かるように三行で三目並べについて解説します。


三目並べとは

ご存知まるばつゲームです。3×3マスの縦横斜めに同じ記号を揃えるとその記号が消え、得点が入ります。三目並べは、この得点の合計を競う対戦型パズルゲームのことを言います。なお、複数の記号を揃えると連鎖が発生し、相手のフィールドにおじゃまブロックが配置されます。


三目並べを作ろう

さて、物事の理解には何かを作るのが一番だと、心理学とか社会学とかなんとか学的なものにはまことしやかに語り継がれています。なので、実際に作ってみて三目並べの真理について一緒に考えていきましょう。


早速作っていきましょう

言語は忙しい現代人にオススメなPHPを使っていきます。なぜオススメなのかは全く良くわかりませんが、僕が簡単に出来そうとか僕が思いついたのがソレだったからとか言うくだらない理由です。なのでこれでいきます。PHPが用意できない方は、紙とペンを用意し三目並べをつくればいいんじゃないかと思います。


まずは、三目並べるデータを作ろう

このような配列を用意します。

$array[] = array("","","");
$array[] = array("","","");
$array[] = array("","","");

これが、三目並べのマルバツが入るデータになります


実際に入れたデータを確認してみよう

実際にPHPが使える画面を出してphp ファイル名.phpで確認してみるとデータが確認できます。

echo $array[0][0].",".$array[0][1].",".$array[0][2]."\n";
echo $array[1][0].",".$array[1][1].",".$array[1][2]."\n";
echo $array[2][0].",".$array[2][1].",".$array[2][2]."\n";
たて、よこ、ななめで終わる判定を作ろう

縦、横、斜めで揃うのは全部で8通りあります。つまり、8個の組み合わせを作ればなんとかなります。
以下のようにすればできるというわけです。パワープレイで書いているのでコードが美しくないと思う方もいると思います。美しいコードが書けるんだったら、こんなところで油売ってないで僕はGitHubの緑化活動をしているよ(謎の逆ギレ)。

// 横
if($array[0][0] == $array[0][1] && $array[0][1] == $array[0][2] && $array[0][0] == $array[0][2]){
	if($array[0][0] == "o" || $array[0][0] == "x"){
    	echo "勝負あり";
	}
}
if($array[1][0] == $array[1][1] && $array[1][1] == $array[1][2] && $array[1][0] == $array[1][2]){
	if($array[1][0] == "o" || $array[1][0] == "x"){
    	echo "勝負あり";
	}
}
if($array[2][0] == $array[2][1] && $array[2][1] == $array[2][2] && $array[2][0] == $array[2][2]){
	if($array[2][0] == "o" || $array[2][0] == "x"){
    	echo "勝負あり";
	}
}

// 縦
if($array[0][0] == $array[1][0] && $array[0][0] == $array[2][0] && $array[1][0] == $array[2][0]){
	if($array[0][0] == "o" || $array[0][0] == "x"){
    	echo "勝負あり";
	}
}
if($array[0][1] == $array[1][1] && $array[0][1] == $array[2][1] && $array[1][1] == $array[2][1]){
	if($array[0][1] == "o" || $array[0][1] == "x"){
    	echo "勝負あり";
	}
}
if($array[0][2] == $array[1][2] && $array[0][2] == $array[2][2] && $array[1][2] == $array[2][2]){
	if($array[0][2] == "o" || $array[0][2] == "x"){
    	echo "勝負あり";
	}
}

// 斜め    
if($array[0][0] == $array[1][1] && $array[1][1] == $array[2][2] && $array[2][2] == $array[0][0]){
	if($array[0][0] == "o" || $array[0][0] == "x"){
    	echo "勝負あり";
	} 
}   
if($array[2][0] == $array[1][1] && $array[1][1] == $array[0][2] && $array[2][0] == $array[0][2]){
	if($array[2][0] == "o" || $array[2][0] == "x"){
    	echo "勝負あり";
	}  
}
飽きた

ここまでこの文章を読んでくれた聡明な読者の方ならお気づきであろう。そう、既に三行で語りきれていないことを……。しかしながら、三目並べのプログラムをもう完成したといっても過言ではありません(過言)。
そうです、先ほどのコードを組み合わせるだけで実はもう完成していたのです。

<?php
$array[] = array("","","");
$array[] = array("","","");
$array[] = array("","","");

//echo $array[0][0].",".$array[0][1].",".$array[0][2];
//echo $array[1][0].",".$array[1][1].",".$array[1][2];
//echo $array[2][0].",".$array[2][1].",".$array[2][2];

// 遊び方-------------------------------------------
// "" の中に o か x を入力しよう
// 交互にo を付ける人 x を付ける人を決めると三目並べになるよ
$array[0][0] = " ";
$array[0][1] = " ";
$array[0][2] = " ";
$array[1][0] = " ";
$array[1][1] = " ";
$array[1][2] = " ";
$array[2][0] = " ";
$array[2][1] = " ";
$array[2][2] = " ";
// ------------------------------------------遊び方

// 横
if($array[0][0] == $array[0][1] && $array[0][1] == $array[0][2] && $array[0][0] == $array[0][2]){
	if($array[0][0] == "o" || $array[0][0] == "x"){
    	echo "勝負あり";
	}
}
if($array[1][0] == $array[1][1] && $array[1][1] == $array[1][2] && $array[1][0] == $array[1][2]){
	if($array[1][0] == "o" || $array[1][0] == "x"){
    	echo "勝負あり";
	}
}
if($array[2][0] == $array[2][1] && $array[2][1] == $array[2][2] && $array[2][0] == $array[2][2]){
	if($array[2][0] == "o" || $array[2][0] == "x"){
    	echo "勝負あり";
	}
}

// 縦
if($array[0][0] == $array[1][0] && $array[0][0] == $array[2][0] && $array[1][0] == $array[2][0]){
	if($array[0][0] == "o" || $array[0][0] == "x"){
    	echo "勝負あり";
	}
}
if($array[0][1] == $array[1][1] && $array[0][1] == $array[2][1] && $array[1][1] == $array[2][1]){
	if($array[0][1] == "o" || $array[0][1] == "x"){
    	echo "勝負あり";
	}
}
if($array[0][2] == $array[1][2] && $array[0][2] == $array[2][2] && $array[1][2] == $array[2][2]){
	if($array[0][2] == "o" || $array[0][2] == "x"){
    	echo "勝負あり";
	}
}

// 斜め    
if($array[0][0] == $array[1][1] && $array[1][1] == $array[2][2] && $array[2][2] == $array[0][0]){
	if($array[0][0] == "o" || $array[0][0] == "x"){
    	echo "勝負あり";
	} 
}   
if($array[2][0] == $array[1][1] && $array[1][1] == $array[0][2] && $array[2][0] == $array[0][2]){
	if($array[2][0] == "o" || $array[2][0] == "x"){
    	echo "勝負あり";
	}  
}




echo $array[0][0].",".$array[0][1].",".$array[0][2]."\n";
echo $array[1][0].",".$array[1][1].",".$array[1][2]."\n";
echo $array[2][0].",".$array[2][1].",".$array[2][2]."\n";
?>
遊び方

コードの中に遊び方が入っているのでここを読んでね。

// 遊び方-------------------------------------------
// "" の中に o か x を入力しよう
// 交互にo を付ける人 x を付ける人を決めると三目並べになるよ
$array[0][0] = " ";
$array[0][1] = " ";
$array[0][2] = " ";
$array[1][0] = " ";
$array[1][1] = " ";
$array[1][2] = " ";
$array[2][0] = " ";
$array[2][1] = " ";
$array[2][2] = " ";
// ------------------------------------------遊び方

うん、そうなんだ。まさかの手動なんだ。
プログラムとは一体何なのだろうかと考えさせられるね。