<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>";
}
?>