<?php
//五子棋求是否有贏的一方,在一個30的棋盤內下棋。白子爲1,黑子爲0.白子獲勝返回1,黑子獲勝返回-1.沒有獲勝返回0.
//$xindex 爲某個旗子的x位置,yIndex爲y的位置
function gobng_win($xIndex,$yIndex){
$max=0;
$X = $xIndex;
$Y = $yIndex;
$dir = [ //將一個子附近所有相鄰的位置都定義出來
[[-1,0],[1,0]],//左,右
[[0,-1],[0,1]],//下,上
[[1,1],[-1,-1]],//右上,左下
[[1,-1],[-1,1]]//右下,左上
];
for($i=0;$<4;$i++){
$count = 1;
for($j=0;$j<2;+j++){
$flag=true;//定義當在循環中未達到五個子一起就改變成false 拋出,並停止循環
/**
while語句中爲一直向某一個方向遍歷
有相同顏色的棋子的時候,Count++
否則置flag爲false,結束該該方向的遍歷
**/
while($flag){
$X = $X+$dir[$i][$j][0];
$Y = $Y +$dir[$i][$j][1];
if($X>=0&&$X<=30&&$Y>=0&&$Y<=30){
if($a[$X][$Y]==$a[$xIndex][$yIndex]){
$count++;
}else{
$flag = false;
}
}else{
$flag = false;
}
}
$X = $xIndex;
$Y = $yIndex;
}
if($count>=5){
$max = 1;
break;
}else{
$max = 0;
}
if($max==1){
if($a[$xIndex][$yIndex]==1){
return 1;//白子獲勝
}else{
return -1;//黑子獲勝
}
}else{
return 0;//沒有獲勝方
}
}
}
}
?>