X-Git-Url: https://git.nubati.net/cgi-bin/gitweb.cgi?p=e-DoKo.git;a=blobdiff_plain;f=index.php;h=2eb0cf75f6b0cea529b7adcda9f30e54806a4ec7;hp=0be1deb3f24d5b48c68227d881c29a13888501e9;hb=f9ebada8e82bef69014f86b14b92534a266164bc;hpb=e923da994ca9e050fc404f267f10d0fff1fb080a diff --git a/index.php b/index.php index 0be1deb..2eb0cf7 100644 --- a/index.php +++ b/index.php @@ -3,14 +3,139 @@ "http://www.w3.org/2002/04/xhtml-math-svg/xhtml-math-svg.dtd"> - Doko via email - + e-Doko + +

Welcome to E-Doko

- +

",$message); + echo "
To: $To
Subject: $Subject
$message
"; + } + else + mail($To,$Subject,$message); + return; +} + +function parse_status() +{ + global $game,$history,$player,$hash,$lines; + + $game["init"] = 0; + $game["solo-who"] = -1; + $game["solo-what"] = "todo"; + $game["wedding"] = -1; + $game["poverty"] = -1; + $game["nines"] = -1; + $game["startplayer"] = 0; + + for($i=0;$i<4;$i++) + { + $tmp = explode( ":",$lines[$i]); + $hash[$i] = $tmp[0]; + $player[$tmp[0]]["number"] = $i; + $player[$tmp[0]]["hash"] = $tmp[0]; + $player[$tmp[0]]["name"] = $tmp[1]; + $player[$tmp[0]]["email"] = $tmp[2]; + $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) ) + { + $game["solo-who"] = $i; + $game["startplayer"] = $i; + } + + } + /* save the game history */ + for($i=4;$i"; + echo "\"".card_to_name($card)."\""; else - echo ""; + echo "\"".card_to_name($card-1)."\""; return; } - function display_link_card($card,$me) + +function display_link_card($card,$me) { if( $card/2 - (int)($card/2) == 0.5) - echo ""; + echo "\"".card_to_name($card)."\""; else - echo ""; + echo "\"".card_to_name($card-1)."\""; return; } @@ -195,6 +321,7 @@ function save_status() { foreach($hash as $key) { + /* sorting the options, not sure why I do that actually */ $tmp=""; if( ereg("i",$player[$key]["option"]) ) $tmp.="i"; @@ -204,8 +331,29 @@ function save_status() $tmp.="t"; if( ereg("c",$player[$key]["option"]) ) $tmp.="c"; + if( ereg("N",$player[$key]["option"]) ) + $tmp.="N"; + if( ereg("W",$player[$key]["option"]) ) + $tmp.="W"; + if( ereg("P",$player[$key]["option"]) ) + $tmp.="P"; + if( ereg("O",$player[$key]["option"]) ) + $tmp.="O"; + if( ereg("S",$player[$key]["option"]) ) + $tmp.="S"; + if( ereg("Q",$player[$key]["option"]) ) + $tmp.="Q"; + if( ereg("J",$player[$key]["option"]) ) + $tmp.="J"; + if( ereg("C",$player[$key]["option"]) ) + $tmp.="C"; + if( ereg("A",$player[$key]["option"]) ) + $tmp.="A"; + if( ereg("H",$player[$key]["option"]) ) + $tmp.="H"; $player[$key]["option"]=$tmp; + /* saving the player stats */ fwrite($output,"".$player[$key]["hash"].":" ); fwrite($output,"".$player[$key]["name"].":" ); fwrite($output,"".$player[$key]["email"].":" ); @@ -244,7 +392,7 @@ if( isset($_REQUEST["PlayerA"]) && isset($_REQUEST["EmailA"]) && isset($_REQUEST["EmailB"]) && isset($_REQUEST["EmailC"]) && - isset($_REQUEST["EmailD"]) ) + isset($_REQUEST["EmailD"]) && sizeof($lines<2)) { $PlayerA = $_REQUEST["PlayerA"]; $PlayerB = $_REQUEST["PlayerB"]; @@ -255,13 +403,29 @@ if( isset($_REQUEST["PlayerA"]) && $EmailC = $_REQUEST["EmailC"] ; $EmailD = $_REQUEST["EmailD"] ; + $hashA = md5("AGameOfDoko".$PlayerA.$EmailA); + $hashB = md5("AGameOfDoko".$PlayerB.$EmailB); + $hashC = md5("AGameOfDoko".$PlayerC.$EmailC); + $hashD = md5("AGameOfDoko".$PlayerD.$EmailD); + /* send out email, check for error with email */ - echo "send out emails to everyone, asking if they want to join"; - echo "use link
"; - echo " player 1
"; - echo " player 2
"; - echo " player 3
"; - echo " player 4
"; + + $message = "\n". + "you are invited to play a game of DoKo (that is to debug the program ;).\n". + "Place comments and bug reports here:\n". + "http://wiki.nubati.net/index.php?title=EmailDoko\n\n". + "The whole round would consist of the following players:\n". + "$PlayerA\n". + "$PlayerB\n". + "$PlayerC\n". + "$PlayerD\n\n". + "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); /* read in random.txt */ if(file_exists("random.txt")) @@ -275,25 +439,25 @@ if( isset($_REQUEST["PlayerA"]) && $output = fopen("status.txt","w"); if ($output) { - fwrite($output, "hash1:$PlayerA:$EmailA:::" ); + fwrite($output, "$hashA:$PlayerA:$EmailA:::" ); for($i=0;$i<11;$i++) fwrite($output,"$randomNR[$i];" ); fwrite($output,"$randomNR[11]:" ); $i++; fwrite($output,"\n"); - fwrite($output, "hash2:$PlayerB:$EmailB:::" ); + fwrite($output, "$hashB:$PlayerB:$EmailB:::" ); for(;$i<23;$i++) fwrite($output,"$randomNR[$i];" ); fwrite($output,"$randomNR[23]:" ); $i++; fwrite($output,"\n"); - fwrite($output, "hash3:$PlayerC:$EmailC:::" ); + fwrite($output, "$hashC:$PlayerC:$EmailC:::" ); for(;$i<35;$i++) fwrite($output,"$randomNR[$i];" ); fwrite($output,"$randomNR[35]:" ); $i++; fwrite($output,"\n"); - fwrite($output, "hash4:$PlayerD:$EmailD:::"); + fwrite($output, "$hashD:$PlayerD:$EmailD:::"); for(;$i<47;$i++) fwrite($output,"$randomNR[$i];" ); fwrite($output,"$randomNR[47]:" ); @@ -309,19 +473,19 @@ if( isset($_REQUEST["PlayerA"]) && if(sizeof($lines)<2) { ?> -

no game in progress, please input 4 names and email addresses

+

no game in progress, please input 4 names and email addresses, please make sure that the addresses are correct!

Name: - Email:
+ Email:
Name: - Email:
+ Email:
Name: - Email:
+ Email:
Name: - Email:
+ Email:
@@ -329,63 +493,7 @@ if(sizeof($lines)<2) } else { /* load game status */ - $game["init"]=0; - - $tmp = explode( ":",$lines[0]); - $hash[0] = $tmp[0]; - $player[$tmp[0]]["number"] = 0; - $player[$tmp[0]]["hash"] = $tmp[0]; - $player[$tmp[0]]["name"] = $tmp[1]; - $player[$tmp[0]]["email"] = $tmp[2]; - $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"]++; - - $tmp = explode( ":",$lines[1]); - $hash[1] = $tmp[0]; - $player[$tmp[0]]["number"] = 1; - $player[$tmp[0]]["hash"] = $tmp[0]; - $player[$tmp[0]]["name"] = $tmp[1]; - $player[$tmp[0]]["email"] = $tmp[2]; - $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"]++; - - $tmp = explode( ":",$lines[2]); - $hash[2] = $tmp[0]; - $player[$tmp[0]]["number"] = 2; - $player[$tmp[0]]["hash"] = $tmp[0]; - $player[$tmp[0]]["name"] = $tmp[1]; - $player[$tmp[0]]["email"] = $tmp[2]; - $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"]++; - - $tmp = explode( ":",$lines[3]); - $hash[3] = $tmp[0]; - $player[$tmp[0]]["number"] = 3; - $player[$tmp[0]]["hash"] = $tmp[0]; - $player[$tmp[0]]["name"] = $tmp[1]; - $player[$tmp[0]]["email"] = $tmp[2]; - $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"]++; - - /* save the game history */ - for($i=4;$i here and fill out the form
"; @@ -448,9 +556,9 @@ if(sizeof($lines)<2) { for($i=0;$i<4;$i++) { - echo "Hello ".$player[$hash[$i]]["name"].",\n"; - echo "\n"; - echo "the game has been cancled due to the request of one of the players.\n"; + $message = "Hello ".$player[$hash[$i]]["name"].",\n\n". + "the game has been canceled due to the request of one of the players.\n"; + mymail($player[$hash[$i]]["email"],"[DoKo-Debug] the game has been canceled",$message); } $output = fopen("status.txt","w"); if($output) @@ -478,21 +586,57 @@ if(sizeof($lines)<2) } echo "
\n"; ?> +

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

- do you want to play solo? - yes - no
- - do you have a wedding? - yes - no
+ do you want to play solo? + +
- do you have poverty? - yes - no
- "; + echo " no
"; + } + else + { + echo " no
"; + }; + + echo "do you have poverty?"; + if(count_trump($player[$b]["cards"])<4) + { + echo " yes"; + echo " no
"; + } + else + { + echo " no
"; + }; + + echo "do you have too many nines?"; + if(count_nines($player[$b]["cards"])>4) + { + echo " yes"; + echo " no
"; + } + else + { + echo " no
"; + }; + echo "\n"; echo "\n"; @@ -504,7 +648,7 @@ if(sizeof($lines)<2) { $c=$_REQUEST["c"]; - if(!isset($_REQUEST["solo"])|| !isset($_REQUEST["wedding"])|| !isset($_REQUEST["poverty"]) ) + if(!isset($_REQUEST["solo"])|| !isset($_REQUEST["wedding"])|| !isset($_REQUEST["poverty"]) || !isset($_REQUEST["nines"]) ) { echo "go back to "; echo " here and fill out the form
"; @@ -515,29 +659,137 @@ if(sizeof($lines)<2) } else if($game["init"]<4) { - echo "handle krankheit
"; - - echo "email this out: you're in. once everyone has filled out the form,"; - echo "the game will start and you'll get an eamil about it"; + if( $_REQUEST["solo"]!="No") + { + switch($_REQUEST["solo"]) + { + case "No trump": + $player[$c]["option"].="O"; + break; + case "Normal solo": + $player[$c]["option"].="S"; + break; + case "Queen solo": + $player[$c]["option"].="Q"; + break; + case "Jack solo": + $player[$c]["option"].="J"; + break; + case "Club solo": + $player[$c]["option"].="C"; + break; + case "Spade solo": + $player[$c]["option"].="A"; + break; + case "Hear solo": + $player[$c]["option"].="H"; + break; + } + } + else if($_REQUEST["wedding"] == "yes") + { + echo "wedding was chosen
"; + $player[$c]["option"].="W"; + } + else if($_REQUEST["poverty"] == "yes") + { + echo "poverty was chosen
"; + $player[$c]["option"].="P"; + } + else if($_REQUEST["nines"] == "yes") + { + echo "nines was chosen
"; + $player[$c]["option"].="N"; + } - $player[$c]["option"].="s"; + $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"; save_status(); + if(file_exists("status.txt")) + $lines = file("status.txt"); + else + die("no file"); + parse_status(); + + if($game["init"]==4) + { + $message = "The game can start now, it's your turn, please use this link to play a card:\n". + $host."?me=".$hash[$game["startplayer"]]."\n"; + mymail($player[$hash[$game["startplayer"]]]["email"],"[DoKo-debug] let's go",$message); + } + } } if($game["init"]==4) { + /* check for sickness*/ + /***** someone has 5 nines and no one is playing solo=> cance5Al 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); + else + echo "problem opening file"; + } + + /* who is requesting this*/ if(!isset($_REQUEST["me"])) - echo "a game is in progress, but you are not playing"; + { + 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:
"; + ?> + + recorvery:
+ +
+=0) + { + $message = "Please try this link: ".$host."?me=".$hash[$ok]."\n". + "\n if this doesn't work, contact the admin.\n"; + mymail($recovery,"[DoKo-Debug] recovery ",$message); + echo "email has been sent."; + } + else + { + echo "can't find this email address, sorry."; + }; + } /* end recovery */ + } else - { + { /* $me is set */ $me = $_REQUEST["me"]; - - echo "game in progress and you are in it
"; - foreach($history as $play) + + echo "game in progress and you are in it
"; + if($game["solo-who"]>=0) + echo $player[$hash[$game["solo-who"]]]["name"]." is playing a ".$game["solo-what"]." solo!
"; + else if($game["wedding"]>=0) + echo $player[$hash[$game["wedding"]]]["name"]." is playing a wedding!
"; + + /* show history */ + foreach($history as $play) { echo "
"; - + $trick = explode(":",$play); $last=-2; @@ -555,6 +807,7 @@ if(sizeof($lines)<2) } } + /* figure out who needs to play next */ $next = $last + 1; if ($next>=4) $next -= 4 ; @@ -562,20 +815,24 @@ if(sizeof($lines)<2) { $next=$history[sizeof($history)-1][0]; } - - + + /* are we trying to play a card? */ if(isset($_REQUEST["card"])) { if($hash[$next]==$me) { - $card=$_REQUEST["card"]; + $card = $_REQUEST["card"]; $mycards = explode(";",$player[$me]["cards"]); + + /* do we have that card */ if(in_array($card,$mycards)) { - $tmp=array(); + /* delete card from array */ + $tmp = array(); foreach($mycards as $m) - if($m!=$card) + if($m != $card) $tmp[]=$m; + $tmp2=""; for($i=0;$i".$card.":\n"; @@ -595,106 +853,128 @@ if(sizeof($lines)<2) $history[sizeof($history)-1]=join(":",$tmp); } save_status(); - + echo " you played "; display_card($card); + /* send out email to players who want/need to get informed */ 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) { - echo "
** $next** \n Hello ".$player[$hash[$i]]["name"].",\n"; - echo "\n"; + $message = " Hello ".$player[$hash[$i]]["name"].",\n\n"; + if($i==$mynext) - echo "it's your turn now.\n"; - echo $player[$me]["name"]. "has played the following card ".card_to_name($card)."\n"; + { + $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"; - echo " player 1
"; - echo " player 2
"; - echo " player 3
"; - echo " player 4
"; + 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
"; } } } else echo "seems like you don't have that card
"; - + } - } + } /* end if card is set */ else if(isset($_REQUEST["win"]) && strlen($history[sizeof($history)-1])>3) { $win=$_REQUEST["win"]; $history[]=$win.":\n"; /* count points of the last trick */ $points=0; - echo "
".$history[sizeof($history)-2]."is the last trick played
"; + $tmp = explode(":",$history[sizeof($history)-2]); for($i=0;$i<4;$i++) { $tmp2 = explode("->",$tmp[$i]); $c = $tmp2[1]; $points += card_value($c); - echo "adding card value ".card_value($c)."
"; } $player[$hash[$win]]["points"]+=$points; echo "
".$player[$hash[$win]]["name"]." won: $points Points
"; - + save_status(); - } + }; /* end if win is set */ echo "
"; $tmp = explode(":",$history[sizeof($history)-1]); + /* check last history entry: end of a trick? ask who won it */ if(sizeof($tmp)==5) { ?>
- +who won? "; echo ""; ?> - +
"; + + if($debug) + echo "DEBUG: the next move is for the next player
"; + if(strlen(trim($player[$me]["cards"]))==0) { echo "
game over, count points
"; - for($i=0;$i>4;$i++) + for($i=0;$i<4;$i++) { echo $player[$hash[$i]]["name"]." got ".$player[$hash[$i]]["points"]."
"; } } } - if($hash[$next]==$me && strlen(trim($player[$me]["cards"]))>0 ) + echo "
"; + } /* end check for winner */ + + /* do we still have cards? display them */ + if(strlen(trim($player[$me]["cards"]))>0 ) + { + $allcards = trim($player[$me]["cards"]); + $mycards = explode(";",$allcards); + + sort($mycards); + + /* is it our turn? */ + if($hash[$next]==$me) { - - echo "ITS YOUR TURN
"; - $allcards = trim($player[$me]["cards"]); - $mycards = explode(";",$allcards); - - sort($mycards); - echo "your cards are
"; + echo "ITS YOUR TURN
"; + echo "your cards are:
"; foreach($mycards as $card) { display_link_card($card,$me); } - echo "
\n"; } - echo "
"; - + else + { /* not our turn, just show the hand */ + echo "your cards are:
"; + foreach($mycards as $card) + { + display_card($card); + } + } + echo "
\n"; } } } @@ -702,6 +982,6 @@ if(sizeof($lines)<2) } ?> - +