<feff><?php

$style = 1;                 /*设置页面风格*/
$player = $_GET["id"];      /*设置get提交的id为用户标志*/
$position = $_GET["pos"];
$file = "./five1.dat";       /*设置数据存放位置*/
define("ROW","20");         /*设置棋盘大小,默认认为20x20*/


show_head(五子棋);

game($style,$player);
function game ($style,$player) {
        global $position;
        global $file;
        if($player == 1) $echoplayer = 2;
        else $echoplayer = 1;
        echo "<table border=2 width=90% height=80% align=\"center\"><tr>";
        echo "<td width=60% bgcolor=teal>"; /*左边棋盘空间*/
        echo "<table cellpadding=0 cellspacing=0 border=1 width=420 height=420 align=\"center\">";
/*********************main**************************/


        if ($player == 0) {
                init();             /*当id没有赋值时,初始化页面*/
        }
        else {
        writetofile($file,$position,$player); /*把前一玩家棋子写入文件*/
        $box = readfromfile($file);/*从文件中读取棋子位置,重新画图*/
        $win = iswin($file,$player);/*判断前一玩家是否获胜*/
        for ($i=1;$i<=ROW;$i++) {

                echo "<tr align=\"center\">";
                for ($j=1;$j<=ROW;$j++) {
                        echo "<td align=\"center\">";

                        if ($player == 1) $id = 2;
                        else $id = 1;
                        if ($box[$i][$j] == 0 && $win == 0) echo "<a href=\"$index?id=$id&pos=$i:$j\"><img src=\"chessblank.gif\" alt=\"$nbsp\"></a></td>";
                        else if ($box[$i][$j] == 0 && $win == 1) echo "<img src=\"chessblank.gif\" alt=\"$nbsp\"></td>";
                        else if ($box[$i][$j] == 1) echo "<img src=\"chessblack.gif\" alt=\"$nbsp\"></td>";

                        else if ($box[$i][$j] == 2) echo "<img src=\"chesswhite.gif\" alt=\"$nbsp\"></td>";

                /*if ($player == 2) {
                        if ($box[$i][$j] == 0) echo "<a href=\"$index?id=$player&pos=$i:$j\"><img src=\"chessblank.gif\" alt=\"$nbsp\"></a></td>";
                        else if ($box[$i][$j] == 1) echo "<img src=\"chessblack.gif\" alt=\"$nbsp\"></td>";
                        else if ($box[$i][$j] == 2) echo "<img src=\"chesswhite.gif\" alt=\"$nbsp\"></td>"; 
                }*/
        }/*fisrt for*/
}/*first else*/

        echo "</tr>";

}
        echo "</table>";
/*************************************************/
        echo "<td width=20% valign=top bgcolor=teal>";
        echo "<table height=10%  align=center>";
        echo "<tr><td>PHP五子棋[情侣版]</td></tr>";
        echo "<tr><td>作者:cocobear</td></tr>";
        echo "<tr><td>该玩家$echoplayer"."下子"."</td></tr>";
        //echo "$position";
        echo "</table>";
        if ($win == 1) {
                if ($player == 1) echo "<table height=50%  align=center><tr><td>玩家$player"."执黑子胜利</td></tr>";
                if ($player == 2) echo "<table height=50%  align=center><tr><td>玩家$player"."执白子胜利</td></tr>";
                echo "<meta http-equiv=\"refresh\" content=5;url=./index.php>";
                echo "<tr><td>5秒后自动返回</td></tr>";
                echo "</table>";
        }
        echo "</td>";/*右边的说明表格*/
        echo "<tr></table>";/*最大的表格*/
}/*end of game function*/


show_foot(本程序遵循GPL);
/*******************function************************************/

function readfromfile($file) {
        $fd = file_get_contents($file);
        //echo $fd;

        $pieces = explode("|",$fd);                /*从文件中读入棋子位置信息,然后以二维数组的方式存储在box数组中*/
        for ($i=1;$i<=20;$i++) {
                $m = $i-1;
                //echo "<br>$pieces[$m]";
                $piece = explode(":",$pieces[$m]);
                for ($j=1;$j<=20;$j++) {
                        $n = $j-1;
                        //echo "<br>piece$i:$piece[$n]";
                        $box[$i][$j] = $piece[$n];
                }
        }
        return $box;

}

/*********************writetofile()**************************/
function writetofile($file,$pos,$player) {

        $initpos = 0;
        $postion = explode(":",$pos);
        if($player != 0) $state = readfromfile($file);
        else $state = 0;
        //print_r($state);     
        if(!$fp = fopen($file,"w")) echo "Can't create file!\nPlease check current dir,make sure you have write permission.";
        for($i=1;$i<=ROW;$i++) {
                for($j=1;$j<=ROW;$j++) {
                        if ($player != 0 && $state[$i][$j] != 0) fwrite($fp,$state[$i][$j]);
                        else if($i == $postion[0] && $j == $postion[1]) fwrite($fp,$player);
                        else fwrite($fp,$initpos);    /*默认情况下写入0*/
                        if($j != ROW) fwrite($fp,":");
                }
                if($i != ROW) fwrite($fp,"|");           /*添加一些分隔信息*/
        }
        fclose($fp);


}
/*********************页面初始化*************************/
function init() {
        global $file;
        $pos = "";
        $player = 0;
        writetofile($file,$pos,$player);
        for ($i=1;$i<=ROW;$i++) {
                echo "<tr align=\"center\">";
                for ($j=1;$j<=ROW;$j++) {
                        echo "<td align=\"center\">";
                        echo "<a href=\"$index?id=1&pos=$i:$j\"><img src=\"chessblank.gif\" alt=\"$nbsp\"></a></td>";                                  /*id=1,设置用户*/
        }

}/*end of function init()*/
        echo "</tr>";

}





function iswin($file,$player) {

        $box = readfromfile($file);
        for($i=1;$i<=ROW;$i++) {
                for($j=1;$j<=ROW;$j++) {
                        $row = 0;
                        $col = 0;
                        $dia = 0;
                        for($k=0;$k<5;$k++) {

                                if($box[$i][$j+$k] == $player) $row++;
                        }
                        if($row == 5) return 1;  /*横向判断*/
                        for($k=0;$k<5;$k++) {

                                if($box[$i+$k][$j] == $player) $col++;
                        }
                        if($col == 5) return 1; /*纵向判断*/
                        for($k=0;$k<5;$k++) {

                                if($box[$i+$k][$j+$k] == $player) $dia++;
                        }
                        if($dia == 5) return 1; /*纵向判断*/

                }
        }


        return 0;/*默认返回为未胜利*/

}
function show_head($title) {

        echo "<html>";
        echo "<meta http-equiv=\"Content-Type\" content=\"text/html;charset=UTF-8\"/>";
        echo "<head><title>$title</title></head>";
        echo "<body bgcolor=black text=white>";
}

function show_foot($copyright) {
        echo "<br><hr>";
        echo "<div align=center>$copyright</div>";
        $date = date("Y年 n月 j日");
        echo "<br><div align=center>$date</div>";
        echo "</body>";
        echo "</html>";
}
?>