X-Git-Url: https://git.nubati.net/cgi-bin/gitweb.cgi?p=e-DoKo.git;a=blobdiff_plain;f=index.php;h=a53a23c3b163d789c08df73474303527911f82ae;hp=a2366ed6fda7c54d88a8cdd1538bfa7f01fc46e4;hb=6ea17e122f89f4175a6be53f6573c9957926376f;hpb=9197d1d5144a1d281db321fbaa523172c88da07e diff --git a/index.php b/index.php index a2366ed..a53a23c 100644 --- a/index.php +++ b/index.php @@ -16,7 +16,7 @@ $host = "http://doko.nubati.net/index.php"; $wiki = "http://wiki.nubati.net/index.php?title=EmailDoko"; -$debug = 0; +$debug = 1; /* * end config @@ -30,8 +30,8 @@ function mymail($To,$Subject,$message) if($debug) { - str_replace("\n","
",$message); - echo "
To: $To
Subject: $Subject
$message
"; + $message = str_replace("\n","
",$message); + echo "
To: $To
Subject: $Subject
$message
\n"; } else mail($To,$Subject,$message); @@ -46,7 +46,7 @@ function parse_status() $game["solo-who"] = -1; $game["solo-what"] = "todo"; $game["wedding"] = -1; - $game["poverty"] = -1; + $game["poverty"] = ""; $game["nines"] = -1; $game["startplayer"] = 0; @@ -61,14 +61,31 @@ function parse_status() $player[$tmp[0]]["option"] = $tmp[3]; $player[$tmp[0]]["points"] = $tmp[4]; $player[$tmp[0]]["cards"] = $tmp[5]; - if(ereg("s",$tmp[3])) $game["init"]++; - if(ereg("P",$tmp[3])) $game["poverty"] = $i; - if(ereg("N",$tmp[3])) $game["nines"] = $i; - if(ereg("W",$tmp[3])) $game["wedding"] = $i; - if(ereg("[OSQJCAH]",$tmp[3]) && ($game["solo-who"]<0) ) + if(ereg("s",$tmp[3])) $game["init"]++; /* how many players are ready? */ + if(ereg("P",$tmp[3])) $game["poverty"].= $i; /* players with poverty, could be two, so use a string */ + if(ereg("N",$tmp[3])) $game["nines"] = $i; /* the player with too many nines, only one possible */ + if(ereg("W",$tmp[3])) $game["wedding"] = $i; /* the player with the wedding, also only one possible */ + if(ereg("([OSQJCAH])",$tmp[3],$match) && ($game["solo-who"]<0) ) { $game["solo-who"] = $i; $game["startplayer"] = $i; + switch($match[1]) + { + case "O": + $game["solo-what"] = "No Trump"; + case "S": + $game["solo-what"] = "Trump"; + case "Q": + $game["solo-what"] = "Queen"; + case "J": + $game["solo-what"] = "Jack"; + case "C": + $game["solo-what"] = "Club"; + case "A": + $game["solo-what"] = "Spade"; + case "H": + $game["solo-what"] = "Heart"; + } } } @@ -297,18 +314,18 @@ function card_value($card) function display_card($card) { if( $card/2 - (int)($card/2) == 0.5) - echo "\"".card_to_name($card)."\"\n"; + echo "\"".card_to_name($card)."\"\n"; else - echo "\"".card_to_name($card-1)."\"\n"; + echo "\"".card_to_name($card-1)."\"\n"; return; } function display_link_card($card,$me) { if( $card/2 - (int)($card/2) == 0.5) - echo "\"".card_to_name($card)."\"\n"; + echo "\"".card_to_name($card)."\"\n"; else - echo "\"".card_to_name($card-1)."\"\n"; + echo "\"".card_to_name($card-1)."\"\n"; return; } @@ -377,6 +394,8 @@ function save_status() echo "

If you find bugs, please list them in the wiki

\n"; +echo "

Cards that have a green background have a comment, which you can access by hovering over the card with your mouse ;)

\n"; + $history=array(); /* check for status file and read it, if possible */ @@ -424,10 +443,10 @@ if( isset($_REQUEST["PlayerA"]) && "If you want to join this game, please follow this link:\n\n". " ".$host."?a="; - mymail($EmailA,"Invite for a game of DoKo","Hello $PlayerA,\n".$message.$hashA); - mymail($EmailB,"Invite for a game of DoKo","Hello $PlayerB,\n".$message.$hashB); - mymail($EmailC,"Invite for a game of DoKo","Hello $PlayerC,\n".$message.$hashC); - mymail($EmailD,"Invite for a game of DoKo","Hello $PlayerD,\n".$message.$hashD); + mymail($EmailA,"You are invited to a game of DoKo","Hello $PlayerA,\n".$message.$hashA); + mymail($EmailB,"You are invited to a game of DoKo","Hello $PlayerB,\n".$message.$hashB); + mymail($EmailC,"You are invited to a game of DoKo","Hello $PlayerC,\n".$message.$hashC); + mymail($EmailD,"You are invited to a game of DoKo","Hello $PlayerD,\n".$message.$hashD); /* read in random.txt */ if(file_exists("random.txt")) @@ -435,7 +454,7 @@ if( isset($_REQUEST["PlayerA"]) && else die("no random file"); - $randomNR = explode( ":", $random[1] ); + $randomNR = explode( ":", $random[2] ); /* write initial status into file */ $output = fopen("status.txt","w"); @@ -470,6 +489,11 @@ if( isset($_REQUEST["PlayerA"]) && else echo "can't open file for writing"; }; +/* reread file */ +if(file_exists("status.txt")) + $lines = file("status.txt"); + else + die("no file"); /* test if a game is running, else output everything for a new game */ if(sizeof($lines)<2) @@ -581,14 +605,14 @@ if(sizeof($lines)<2) $mycards = explode(";",$allcards); sort($mycards); - echo "your cards are
\n"; + echo "your cards are
\n"; foreach($mycards as $card) { display_card($card); } echo "
\n"; ?> -

aehm... at the moment please just answer everything with no, still need to implement this

+

aehm... at the moment poverty is not implented. so I guess you need to play a normal game, even if you have less than 3 turmp :(...sorry

do you want to play solo? @@ -704,8 +728,8 @@ if(sizeof($lines)<2) $player[$c]["option"].="N"; } - $message = "you're in. once everyone has filled out the form,". - "the game will start and you'll get an eamil on your turn\n"; + $message = "You're in. Once everyone has filled out the form, ". + "the game will start and you'll get an eamil on your turn.\n"; mymail($player[$c]["email"],"[DoKo-debug] the game will start soon",$message); $player[$c]["option"].="s"; @@ -728,14 +752,15 @@ if(sizeof($lines)<2) if($game["init"]==4) { /* check for sickness*/ - /***** someone has 5 nines and no one is playing solo=> cance5Al game */ + /***** someone has 5 nines and no one is playing solo=> cancel game */ if($game["nines"]>=0 && $game["solo-who"]<0) { $message = $player[$hash[$game["poverty"]]]["nines"]." has more than 4 nines. Game aborted!\n"; for($i=0;$i<4;$i++) { mymail($player[$hash[$i]]["email"],"[DoKo-debug] the game has been canceled",$message); - } + }; + $output = fopen("status.txt","w"); if($output) fclose($output); @@ -748,7 +773,7 @@ if(sizeof($lines)<2) { if(!isset($_REQUEST["recovery"])) { - echo "a game is in progress, but you are not playing.
\n"; + echo "A game is in progress and kibitzing is not allowed. Sorry!.
\n"; echo "In case you are playing, but lost your email or can't access the game anymore, please input your email here:
\n"; ?> @@ -781,7 +806,7 @@ if(sizeof($lines)<2) { /* $me is set */ $me = $_REQUEST["me"]; - echo "game in progress and you are in it
\n"; + /* output if we are playing a solo or a wedding */ if($game["solo-who"]>=0) echo $player[$hash[$game["solo-who"]]]["name"]." is playing a ".$game["solo-what"]." solo!
\n"; else if($game["wedding"]>=0) @@ -790,23 +815,35 @@ if(sizeof($lines)<2) /* show history */ foreach($history as $play) { - echo "
\n"; - $trick = explode(":",$play); $last=-2; /* found old trick, display it */ + if(sizeof($trick)==5) + echo "
\n"; + else + echo "
\n"; for($i=0;$i",$card)) { $tmp = explode("->",$card); - echo $player[$hash[$tmp[0]]]["name"]." played "; + + if(strlen($tmp[2])>0) + echo "
"; + else + echo "
"; + echo $player[$hash[$tmp[0]]]["name"]."
"; display_card($tmp[1]); - $last=$tmp[0]; + /* check for comment */ + if(strlen($tmp[2])>0) + echo "
".$tmp[2]."
\n"; + $last = $tmp[0]; + echo "
\n"; } } + echo "
\n"; } /* figure out who needs to play next */ @@ -815,7 +852,7 @@ if(sizeof($lines)<2) $next -= 4 ; if($last<0) { - $next=$history[sizeof($history)-1][0]; + $next = $history[sizeof($history)-1][0]; } /* are we trying to play a card? */ @@ -856,33 +893,50 @@ if(sizeof($lines)<2) } save_status(); - echo " you played "; + echo "
"; + echo " you played
"; display_card($card); - + echo "
\n"; + + ?> +
+ + A short comment: + + + +3)$mynext-=4; - if((ereg("c",$player[$hash[$i]]["option"]) || $i==$mynext) && $hash[$i]!=$me) - { - $message = " Hello ".$player[$hash[$i]]["name"].",\n\n"; - - if($i==$mynext) - { - $message .= "it's your turn now.\n". - "Use this link to play a card: ".$host."?me=".$hash[$i]."\n\n" ; - } - $message .= $player[$me]["name"]. "has played the following card ".card_to_name($card)."\n"; - - if($game["solo-who"]>=0) - $message.= $player[$hash[$game["solo-who"]]]." is playing a ".$game["solo-what"]." solo!\n"; - - mymail($player[$hash[$i]]["email"],"[DoKo-debug] a card has been played",$message); - - if($debug) - echo " next player
\n"; - } - } + /* check if we are in a trick, if trick is done, this needs to be handelt in the + * who-won-the-trick section further down */ + $tmp = explode(":",$history[sizeof($history)-1]); + if(sizeof($tmp)<5) + for($i=0;$i<4;$i++) + { + $mynext = $next+1; if($mynext>3)$mynext-=4; + + if((ereg("c",$player[$hash[$i]]["option"]) || $i==$mynext) && $hash[$i]!=$me) + { + $message = " Hello ".$player[$hash[$i]]["name"].",\n\n"; + + if($i==$mynext) + { + $message .= "it's your turn now.\n". + "Use this link to play a card: ".$host."?me=".$hash[$i]."\n\n" ; + } + $message .= $player[$me]["name"]." has played the following card ". + card_to_name($card)."\n"; + + if($game["solo-who"]>=0) + $message .= $player[$hash[$game["solo-who"]]]["name"]." is playing a ". + $game["solo-what"]." solo!\n"; + + mymail($player[$hash[$i]]["email"],"[DoKo-debug] a card has been played",$message); + + if($debug) + echo " next player
\n"; + } + } } else echo "seems like you don't have that card
\n"; @@ -890,12 +944,57 @@ if(sizeof($lines)<2) } } /* end if card is set */ + else if(isset($_REQUEST["comment"])) + { + $comment = $_REQUEST["comment"]; + $tmp = explode(":",$history[sizeof($history)-1]); + $tmp2 = explode("->",$tmp[sizeof($tmp)-2]); + + $comment = str_replace(":","",$comment); + + if(sizeof($tmp2)<=2) + $tmp[sizeof($tmp)-2] .= "->".$comment; + $history[sizeof($history)-1]=join(":",$tmp); + + save_status(); + } else if(isset($_REQUEST["win"]) && strlen($history[sizeof($history)-1])>3) { - $win=$_REQUEST["win"]; - $history[]=$win.":\n"; + $win = $_REQUEST["win"]; + + if(strlen($player[$hash[0]]["cards"])) + $history[] = $win.":\n"; + + /* email the player who needs to move next*/ + for($i=0;$i<4;$i++) + { + if((ereg("c",$player[$hash[$i]]["option"]) || $i==$win) ) + { + $message = " Hello ".$player[$hash[$i]]["name"].",\n\n"; + + if($i == $win) + { + $message .= "You won the last trick,it's your turn now.\n". + "Use this link to play a card: ".$host."?me=".$hash[$i]."\n\n" ; + } + else + $message .= $player[$hash[$win]]["name"]." has won the last trick\n". + "Use this link to look at the game: ".$host."?me=".$hash[$i]."\n\n" ; + + if($game["solo-who"]>=0) + $message.= $player[$hash[$game["solo-who"]]]["name"]." is playing a ". + $game["solo-what"]." solo!\n"; + + mymail($player[$hash[$i]]["email"],"[DoKo-debug] a card has been played",$message); + + if($debug) + echo " next player
\n"; + } + } + + /* count points of the last trick */ - $points=0; + $points = 0; $tmp = explode(":",$history[sizeof($history)-2]); for($i=0;$i<4;$i++) @@ -904,7 +1003,7 @@ if(sizeof($lines)<2) $c = $tmp2[1]; $points += card_value($c); } - $player[$hash[$win]]["points"]+=$points; + $player[$hash[$win]]["points"] += $points; echo "
\n ".$player[$hash[$win]]["name"]." won: $points Points
\n"; save_status(); @@ -913,8 +1012,8 @@ if(sizeof($lines)<2) $tmp = explode(":",$history[sizeof($history)-1]); - /* check last history entry: end of a trick? ask who won it */ - if(sizeof($tmp)==5) + /* check last history entry: end of a trick? ask who won it, unless it was the last trick */ + if(sizeof($tmp)==5 && strlen($player[$hash[0]]["cards"])) { ?>
@@ -950,6 +1049,7 @@ who won? echo "
\n"; } /* end check for winner */ + echo "
"; /* do we still have cards? display them */ if(strlen(trim($player[$me]["cards"]))>0 ) { @@ -960,7 +1060,7 @@ who won? echo "

\n"; /* is it our turn? */ - if($hash[$next]==$me) + if($hash[$next]==$me && !isset($_REQUEST["card"]) && !isset($_REQUEST["win"])) { echo "ITS YOUR TURN
\n"; echo "your cards are:
\n";