X-Git-Url: https://git.nubati.net/cgi-bin/gitweb.cgi?p=e-DoKo.git;a=blobdiff_plain;f=index.php;h=a53a23c3b163d789c08df73474303527911f82ae;hp=2eb0cf75f6b0cea529b7adcda9f30e54806a4ec7;hb=6ea17e122f89f4175a6be53f6573c9957926376f;hpb=f9ebada8e82bef69014f86b14b92534a266164bc diff --git a/index.php b/index.php index 2eb0cf7..a53a23c 100644 --- a/index.php +++ b/index.php @@ -9,14 +9,14 @@

Welcome to E-Doko

-

",$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)."\""; + echo "\"".card_to_name($card)."\"\n"; else - echo "\"".card_to_name($card-1)."\""; + 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)."\""; + echo "\"".card_to_name($card)."\"\n"; else - echo "\"".card_to_name($card-1)."\""; + echo "\"".card_to_name($card-1)."\"\n"; return; } @@ -375,6 +392,10 @@ function save_status() return; } +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 */ @@ -422,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")) @@ -433,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"); @@ -468,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) @@ -548,7 +574,7 @@ if(sizeof($lines)<2) else if( (!isset($_REQUEST["in"])|| !isset($_REQUEST["update"])) && !ereg("i",$player[$b]["option"])) { echo "go back to "; - echo " here and fill out the form
"; + echo " here and fill out the form
\n"; } else { /* show the hand */ @@ -579,14 +605,14 @@ if(sizeof($lines)<2) $mycards = explode(";",$allcards); sort($mycards); - echo "your cards are
"; + 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? @@ -608,33 +634,33 @@ if(sizeof($lines)<2) if(check_wedding($player[$b]["cards"])) { echo " yes"; - echo " no
"; + echo " no
\n"; } else { - echo " no
"; + echo " no
\n"; }; echo "do you have poverty?"; if(count_trump($player[$b]["cards"])<4) { echo " yes"; - echo " no
"; + echo " no
\n"; } else { - echo " no
"; + echo " no
\n"; }; echo "do you have too many nines?"; if(count_nines($player[$b]["cards"])>4) { echo " yes"; - echo " no
"; + echo " no
\n"; } else { - echo " no
"; + echo " no
\n"; }; echo "\n"; @@ -651,7 +677,7 @@ if(sizeof($lines)<2) if(!isset($_REQUEST["solo"])|| !isset($_REQUEST["wedding"])|| !isset($_REQUEST["poverty"]) || !isset($_REQUEST["nines"]) ) { echo "go back to "; - echo " here and fill out the form
"; + echo " here and fill out the form
\n"; } else if( ereg("s",$player[$c]["option"]) && $game["init"]<4 ) { @@ -688,22 +714,22 @@ if(sizeof($lines)<2) } else if($_REQUEST["wedding"] == "yes") { - echo "wedding was chosen
"; + echo "wedding was chosen
\n"; $player[$c]["option"].="W"; } else if($_REQUEST["poverty"] == "yes") { - echo "poverty was chosen
"; + echo "poverty was chosen
\n"; $player[$c]["option"].="P"; } else if($_REQUEST["nines"] == "yes") { - echo "nines was chosen
"; + echo "nines was chosen
\n"; $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"; @@ -726,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); @@ -746,8 +773,8 @@ if(sizeof($lines)<2) { if(!isset($_REQUEST["recovery"])) { - echo "a game is in progress, but you are not playing.
"; - echo "In case you are playing, but lost your email or can't access the game anymore, please input your email here:
"; + 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"; ?> recorvery:
@@ -779,32 +806,44 @@ if(sizeof($lines)<2) { /* $me is set */ $me = $_REQUEST["me"]; - echo "game in progress and you are in it
"; + /* 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!
"; + echo $player[$hash[$game["solo-who"]]]["name"]." is playing a ".$game["solo-what"]." solo!
\n"; else if($game["wedding"]>=0) - echo $player[$hash[$game["wedding"]]]["name"]." is playing a wedding!
"; + echo $player[$hash[$game["wedding"]]]["name"]." is playing a wedding!
\n"; /* show history */ foreach($history as $play) { - echo "
"; - $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 */ @@ -813,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? */ @@ -854,46 +893,108 @@ 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
"; - } - } + /* 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
"; + echo "seems like you don't have that card
\n"; } } /* 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++) @@ -902,17 +1003,17 @@ if(sizeof($lines)<2) $c = $tmp2[1]; $points += card_value($c); } - $player[$hash[$win]]["points"]+=$points; - echo "
".$player[$hash[$win]]["name"]." won: $points Points
"; + $player[$hash[$win]]["points"] += $points; + echo "
\n ".$player[$hash[$win]]["name"]." won: $points Points
\n"; save_status(); }; /* end if win is set */ - echo "
"; + echo "
\n"; $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"])) { ?>
@@ -934,20 +1035,21 @@ who won? $next=$tmp[0]; if($debug) - echo "DEBUG: the next move is for the next player
"; + echo "DEBUG: the next move is for the next player
\n"; if(strlen(trim($player[$me]["cards"]))==0) { - echo "
game over, count points
"; + echo "
game over, count points
\n"; for($i=0;$i<4;$i++) { - echo $player[$hash[$i]]["name"]." got ".$player[$hash[$i]]["points"]."
"; + echo $player[$hash[$i]]["name"]." got ".$player[$hash[$i]]["points"]."
\n"; } } } - echo "
"; + echo "
\n"; } /* end check for winner */ + echo "
"; /* do we still have cards? display them */ if(strlen(trim($player[$me]["cards"]))>0 ) { @@ -956,11 +1058,12 @@ who won? sort($mycards); + echo "

\n"; /* is it our turn? */ - if($hash[$next]==$me) + if($hash[$next]==$me && !isset($_REQUEST["card"]) && !isset($_REQUEST["win"])) { - echo "ITS YOUR TURN
"; - echo "your cards are:
"; + echo "ITS YOUR TURN
\n"; + echo "your cards are:
\n"; foreach($mycards as $card) { display_link_card($card,$me); @@ -968,13 +1071,13 @@ who won? } else { /* not our turn, just show the hand */ - echo "your cards are:
"; + echo "your cards are:
\n"; foreach($mycards as $card) { display_card($card); } } - echo "
\n"; + echo "

\n"; } } } @@ -982,6 +1085,5 @@ who won? } ?> -