📄 user.cgi
字号:
$ru="四" if ($four >= 1);
$ru="三四" if (($three >= 1) && ($four >= 1));
$ru="四*" if ($h_four >= 1);
$ru="胜利" if ($five >= 1);
}
sub put{
if ($timer < 1){&play;exit;};
@check_v=split(/:/,$entries[2]);
if ($check_v[1] eq "胜利"){&play;exit;};
@new_player=split(/&&/,$entries[0]);
@p_one=@new_player;@p_two=split(/&&/,$entries[1]);
chop($p_one[1]);chop($p_two[1]);
$u_data=$p_one[1].$p_two[1];
@player_dat=split(/;/,$u_data);
foreach $line(@player_dat){@line_po=split(/!/,$line);if ($line_po[0] eq $cgi{'puthere'}){$mark="find"}}
if (($web_name eq $new_player[0]) && ($mark ne "find")){
$old_player=$entries[1];
chop($entries[0]);
$entries[1]="$entries[0]$cgi{'puthere'}";
$chk_r=$entries[1];$other_player=$old_player;
&ru_;
$s_chk_ru="$chk_r!$ru;\n";
$self_ru=$ru;
$chk_r="$old_player";$other_player=$s_chk_ru;
&ru_;
$entries[1]=$s_chk_ru;
$be_v="";
if (($self_ru eq "") && ($ru ne "")){$be_v="$check_v[0]";}
if (($self_ru eq "三")||($self_ru eq "三三")){if (($ru eq "三")||($ru eq "三三")){$be_v=$check_v[0]}}
if (($self_ru eq "四")||($self_ru eq "四*")){if (($ru eq "四")||($ru eq "四*")){$be_v=$check_v[0]}}
if ($self_ru eq "四*") {if (($ru ne "四")||($ru ne "四*")){$be_v=$web_name}}
if ($self_ru eq "三三") {if (($ru eq "")||($ru eq "三")){$be_v=$web_name}}
if ($self_ru eq "三四") {if (($ru eq "")||($ru eq "三")||($ru eq "三三")){$be_v=$web_name}}
if ($self_ru eq "胜利"){$be_v=$web_name}
###$be_v="[$self_ru][$ru]";
$entries[0]="$old_player";$entries[2]="$web_name:$self_ru:\n";$entries[3]="$be_v:\n";
open(file,">$user_file")||die"不能打开文件\n";
foreach $line(@entries){print file"$line";}
close file;
}
#如果是机器人主场且该当然用户走棋,启动robotplay
if (index(pack("h*",$cgi{'room'}),"机器人") >= 0 and index(pack("h*",$cgi{'name'}),"机器人") < 0) {
&robotplay;
}
&play;
}
sub joinhis{
print <<eof;
<html><head><META content="text/html; charset=gb2312" http-equiv=Content-Type><title>$title $web_room $guest_name</title></head>
<FRAMESET COLS="310,*">
<FRAME SRC="$user_cgi?mu=hismaps&name=$pro_name&room=$cgi{'room'}&hismu=hisplay&hisroom=$cgi{'hisroom'}" NAME="map_frm" FRAMEBORDER="0" MARGINWIDTH="0" MARGINHEIGHT="0" SCROLLING="no">
<FRAME SRC="$user_cgi?mu=hisplay&name=$pro_name&room=$cgi{'room'}&hisroom=$cgi{'hisroom'}" NAME="5msg_frm" FRAMEBORDER="0" MARGINWIDTH="0" MARGINHEIGHT="0" SCROLLING="auto">
</FRAMESET>
</html>
eof
exit;}
sub hisplay{
$hisf="$his_path/$cgi{'hisroom'}.log";
if (-e "$hisf"){
open(file,"$hisf")||die"不能打开文件\n";
@entries=<file>;
close file;
$timer= (-M "$hisf")*60*24;
$timer=15-int($timer);
}else{$timer=0;}
$playmode="hisplay";
@hisdate=split(/$cgi{'room'}/,$cgi{'hisroom'});
@daters=split(/-/,$hisdate[1]);
$timer="($daters[0].$daters[1]) $daters[2]时$daters[3]";
&play;}
sub view{}
sub con{
print <<eof;
<html><head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb2312">
</head><body>
<table border=0 bgcolor='#FFFFFF'cellspacing=0 cellpadding=0 width="100%">
<TR><TD><form name="r" action="$user_cgi" method="POST">
<input type=hidden name=mu value=$playmode>
<input type=hidden name=name value=$pro_name>
<input type=hidden name=room value=$cgi{'room'}>
<input type=hidden name=hisroom value=$hisroom>
<input type=submit value=刷新></form></TD>
<TD><form action="$board_cgi" target="_top" method="POST">
<input type=hidden name=mu value="">
<input type=hidden name=name value=$pro_name>
<input type=submit value=退出></form></TD>
</TR></TABLE>
</table></body></html>
eof
}
sub play{
if ($playmode ne "hisplay"){$playmode = "play";$le_mark="<";$hisroom="";$time_over_msg="由于对手已经退出或已经超时,本局比赛结束."}else {$hisroom="$cgi{'hisroom'}";$timeover="ture";$time_over_msg="历史纪录察看模式";$le_mark="于";}
$timeover="ture" if ($timer < 1);
@player_one=split(/&&/,$entries[0]);
@player_one_dat=split(/;/,$player_one[1]);
pop(@player_one_dat);
@player_two=split(/&&/,$entries[1]);
@player_two_dat=split(/;/,$player_two[1]);
pop(@player_two_dat);
@vvv=split(/:/,$entries[2]);
if ($web_room eq $player_one[0]){
@guest_dat=@player_two_dat;
@host_dat=@player_one_dat;
$guest_name=@player_two[0];
}else{
@guest_dat=@player_one_dat;
@host_dat=@player_two_dat;
$guest_name=@player_one[0];
}
$i=0;
foreach $line(@host_dat){
($pl,$result)=split(/!/,$line);
$result=($result eq "三")?"":$result;
push (@points,"$web_room:$pl:$result");
($pl,$result)=split(/!/,$guest_dat[$i]);
$result=($result eq "三")?"":$result;
push (@points,"$guest_name:$pl:$result");
$i++;
}
($be_v,$nothing)=split(/:/,$entries[3]);
if ($web_room eq $player_two[0]){
pop(@points);
if($guest_name eq ""){$msg="等待挑战者."}else{$msg="该$guest_name了. <i>自动估胜:$be_v</i>"}}
else{$msg="该$web_room了. <i>估:$be_v</i>";}
if ($vvv[1] eq "胜利"){$vhead="<body bgcolor='#eee8aa'>";$msg="<font color=#ededed>$vvv[0]胜利!</font>";}
else{
if ($timeover eq "ture"){$vhead="<body bgcolor='#eee8aa'>";$msg="<font color=#ededed>$time_over_msg</font>";}else{
#$vhead="<META HTTP-EQUIV='Refresh' Content='5; URL=$user_cgi?mu=$playmode&name=$pro_name&room=$cgi{'room'}&hisroom=$hisroom'>";
$vhead="<body bgcolor='#eee8aa' onLoad='setTimeout(\"document.r.submit();\",5000)'>";
}}
@points=reverse(@points);
print <<eof;
<html><head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb2312">
<script language='JavaScript'>
if (parent.map_frm.document.maps.mu.value != ""){
Ix = eval("parent.map_frm.document");
eof
foreach $line(@points){
@sl=split(/:/,$line);
$img=($sl[0] eq $web_room)?"$img_path/xx.gif":"$img_path/yy.gif";
print <<eof;
Ix.images["$sl[1]"].src="$img";
eof
}
$new_point=shift(@points);@sl=split(/:/,$new_point);
$tc=($sl[0] eq $web_room)?"$img_path/xx.gif":"$img_path/yy.gif";
print <<eof;
Ix.maps.tc.value="$tc";
Ix.maps.nn.value="$sl[1]";
}</script></head>$vhead
<table border=0 cellspacing=0 cellpadding=0 width="100%">
<tr><td colspan=2>●= $web_room</td></tr>
<tr><td colspan=2>○= $guest_name</td>
<td><form name="r" action="$user_cgi" method="POST">
<input type=hidden name=mu value=$playmode>
<input type=hidden name=name value=$pro_name>
<input type=hidden name=room value=$cgi{'room'}>
<input type=hidden name=hisroom value=$hisroom>
</form></td></tr></table>
<table border=0 bgcolor="#eee8aa" cellspacing=0 cellpadding=0 width="100%">
<tr bgcolor="#1e90ff"><td colspan=3 align=left>$msg</td></tr>
<tr bgcolor="#b0c4de"><td colspan=3 align=right>$le_mark $timer分</td></tr>
<tr><td align=right><font color="red">$sl[0]:</font></td><td align=left><font color="red">$sl[1]</font></td><td>$sl[2]</td></tr>
eof
foreach $line(@points){@sl=split(/:/,$line);print "<tr><td align=right>$sl[0]:</td><td align=left>$sl[1]</td><td>$sl[2]</td></tr>\n";}
print "</table></body></html>";
exit;}
sub time_over {
print <<eof;
<html><head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb2312">
</head><body>
<table border="0" width="100%"><tr bgcolor="#b0c4de"><th>错误!</th></tr><tr><td>对手已经退出或已经超时,请退出,重新再来.</td></tr>
<TR><TD><form action="$board_cgi" target="_top" method="POST">
<input type=hidden name=mu value="">
<input type=hidden name=name value=$cgi{'name'}>
<input type=submit value=退出></form></TD></TR></table>
</body></html>
eof
exit;}
sub readparse {
read(STDIN,$user_string,$ENV{'CONTENT_LENGTH'});
if (length($ENV{'QUERY_STRING'})>0) {$user_string=$ENV{'QUERY_STRING'}};
$user_string =~ s/\+/ /g;
@name_value_pairs = split(/&/,$user_string);
foreach $name_value_pair (@name_value_pairs) {
($keyword,$value) = split(/=/,$name_value_pair);
#print "$keyword=$value<br>";
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/ge;
$value =~s/</</g;
$value =~s/>/>/g;
$value =~s/&/&/g;
$value =~s/:/:/g;
push(@value, "$value");
$cgi{$keyword} = $value;
if ($value=~/<!--\#exec/) {
print "Content-type: text/html\n\nNo SSI permitted";
exit;
}
}
}
#机器人场合,读入5user_file(实际等同@entries),计算后写回。
sub robotplay{
$cgi{'name'}=unpack("h*",$web_room);
$pro_name=$cgi{'name'};
$web_name=pack("h*",$pro_name);
$jz_max=0;
$m_max=0;
$n_max=0;
$win_flg = 0;
$fail_flg = 0;
@x=();
@jz=();
@robot=();
@playuser=();
#将数组填满2(空)初始化棋盘。
for ($m=0; $m<=60;$m++) {
for ($n=0; $n<=60;$n++) {
$x[$m][$n]=2;
}
}
$tempstring="zABCDEFGHIJKLMNO";
@line1=split(/&&/,$entries[0]);
chop($line1[1]);
@blk=split(/;/,$line1[1]);
foreach $robo (@blk) {
@robots=split(/!/,$robo);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -