X-Git-Url: https://git.nubati.net/cgi-bin/gitweb.cgi?p=e-DoKo.git;a=blobdiff_plain;f=index.php;h=b8a714159cf6f807f92bea430f88efcec8b70cc9;hp=a2366ed6fda7c54d88a8cdd1538bfa7f01fc46e4;hb=01703346aa74f93edd32854c3e250907f3209cf3;hpb=9197d1d5144a1d281db321fbaa523172c88da07e diff --git a/index.php b/index.php index a2366ed..b8a7141 100644 --- a/index.php +++ b/index.php @@ -8,8 +8,11 @@ +

Welcome to E-Doko

+

(please hit shift-reload:))

",$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 +50,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 +65,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"; + } } } @@ -124,19 +145,21 @@ function count_trump($cards) /* count each trump */ foreach($card as $c) - { - if( (int)($c) <27) $trump++; - } + if( (int)($c) <27) + $trump++; - /* subtract one, in case player has both foxes */ - if( in_array("19",$card) && in_array("20",$card) ) + /* subtract foxes */ + if( in_array("19",$card)) $trump--; + if( in_array("20",$card) ) + $trump--; + /* add one, in case the player has both foxes (schweinchen) */ + if( in_array("19",$card) && in_array("20",$card) ) + $trump++; return $trump; } - - function card_to_name($card) { switch($card) @@ -214,7 +237,7 @@ function card_to_name($card) case 48: return "nine of hearts"; default: - return "something went wrong, please contact the admin"; + return "something went wrong, please contact the admin. Error: code1."; } } @@ -289,7 +312,7 @@ function card_value($card) case 47: return 0; default: - echo "something went wrong, please contact the admin
"; + echo "something went wrong, please contact the admin. ErrorCode 2
"; return 0; } } @@ -297,18 +320,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; } @@ -370,21 +393,29 @@ function save_status() fclose($output); } else - echo "can't open file for writing, please inform the admin."; + echo "can't open file for writing, please inform the admin.errorcode3"; return; } -echo "

If you find bugs, please list them in the wiki

\n"; +/***************** M A I N **************************/ + +echo "

If you find bugs, please list them in the wiki.

\n"; +echo "

Names that are underlined have a comment, which you can access by hovering over the name with your mouse ;)

\n"; +echo "
\n"; + +/* end header */ + + $history=array(); /* check for status file and read it, if possible */ if(file_exists("status.txt")) $lines = file("status.txt"); - else - die("no file"); +else + die("no file"); /* check if we want to start a new game */ if( isset($_REQUEST["PlayerA"]) && @@ -424,10 +455,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 +466,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 +501,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) @@ -493,9 +529,9 @@ if(sizeof($lines)<2)
Do you want to play a game of DoKo? @@ -531,7 +565,6 @@ if(sizeof($lines)<2) echo "
\n"; } } - /* *** * * * * *** @@ -541,56 +574,59 @@ if(sizeof($lines)<2) */ if(isset($_REQUEST["b"])) { - $b=$_REQUEST["b"]; + $b = $_REQUEST["b"]; if( ereg("s",$player[$b]["option"]) && $game["init"]<4) - { + { /* the player already filled out everything */ echo "just wait for the game to start"; } else if( (!isset($_REQUEST["in"])|| !isset($_REQUEST["update"])) && !ereg("i",$player[$b]["option"])) - { + { /* the player didn't fill out the form at "a" correctly */ echo "go back to "; echo " here and fill out the form
\n"; } else - { /* show the hand */ + { /* show the hand and check if the player is sick*/ if($_REQUEST["in"]=="no") - { + { /* player doesn't want to play, cancel the game */ for($i=0;$i<4;$i++) { $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) - fclose($output); - else - echo "problem opening file"; + /* canceling the game is as easy as removing the contents of the status file*/ + $output = fopen("status.txt","w"); + if($output) + fclose($output); + else + echo "problem opening file"; } else { - if($_REQUEST["update"]=="card") $player[$b]["option"].="c"; - if($_REQUEST["update"]=="turn") $player[$b]["option"].="t"; + /* player wants to play, save information from "a"*/ + if($_REQUEST["update"]=="card") + $player[$b]["option"] .= "c"; + else + $player[$b]["option"] .= "t"; - $player[$b]["option"].="i"; + $player[$b]["option"] .= "i"; /* player finished stage "a" */ save_status(); $allcards = $player[$b]["cards"]; - $mycards = explode(";",$allcards); + $mycards = explode(";",$allcards); sort($mycards); - echo "your cards are
\n"; + echo "

your cards are:
\n"; foreach($mycards as $card) - { - display_card($card); - } - echo "
\n"; + 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 trump :(...sorry

+
- + do you want to play solo? + + +
+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 +977,56 @@ if(sizeof($lines)<2) } } /* end if card is set */ - else if(isset($_REQUEST["win"]) && strlen($history[sizeof($history)-1])>3) - { - $win=$_REQUEST["win"]; - $history[]=$win.":\n"; + else if(isset($_REQUEST["comment"])) + { /*save comment */ + $comment = $_REQUEST["comment"]; + $tmp = explode(":",$history[sizeof($history)-1]); /*last played trick */ + $tmp2 = explode("->",$tmp[sizeof($tmp)-2]); /*last played card */ + + $comment = str_replace(":","",$comment); /*can't have ":" in comments */ + + if(sizeof($tmp2)<=2) + $tmp[sizeof($tmp)-2] .= "->".$comment; + $history[sizeof($history)-1]=join(":",$tmp); + + save_status(); + } + else if(isset($_REQUEST["win"]) && substr_count($history[sizeof($history)-1],":")==4) + { /* count points, email winner */ + $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,17 +1035,16 @@ 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(); }; /* end if win is set */ echo "
\n"; + /* check last history entry: end of a trick? ask who won it, unless it was the last trick */ $tmp = explode(":",$history[sizeof($history)-1]); - - /* check last history entry: end of a trick? ask who won it */ - if(sizeof($tmp)==5) + if(sizeof($tmp)==5 && strlen($player[$hash[0]]["cards"])) { ?>
@@ -930,14 +1060,13 @@ who won? the next player
\n"; - if(strlen(trim($player[$me]["cards"]))==0) { echo "
game over, count points
\n"; @@ -954,28 +1083,24 @@ who won? if(strlen(trim($player[$me]["cards"]))>0 ) { $allcards = trim($player[$me]["cards"]); - $mycards = explode(";",$allcards); + $mycards = explode(";",$allcards); 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
\n"; - echo "your cards are:
\n"; + echo "ITS YOUR TURN!
\n"; + echo "Your cards are:
\n"; foreach($mycards as $card) - { - display_link_card($card,$me); - } + display_link_card($card,$me); } else { /* not our turn, just show the hand */ - echo "your cards are:
\n"; + echo "Your cards are:
\n"; foreach($mycards as $card) - { - display_card($card); - } + display_card($card); } echo "

\n"; } @@ -987,3 +1112,12 @@ who won? ?> + +