<?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;//没有获胜方
}
}
}
}
?>