summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorarun <arun@nubati.net>2006-11-30 08:44:14 +0000
committerarun <arun>2006-11-30 08:44:14 +0000
commit2e1249944123a9df07d60e8066f74238f2a1ba9a (patch)
tree2c8d03a9b89d997c3967d6938b4bfd4a08ef8207
parent048d8cb807f4b76a0fb989d3945bda7ebb683803 (diff)
downloade-DoKo-2e1249944123a9df07d60e8066f74238f2a1ba9a.tar.gz
e-DoKo-2e1249944123a9df07d60e8066f74238f2a1ba9a.tar.bz2
e-DoKo-2e1249944123a9df07d60e8066f74238f2a1ba9a.zip
new design once again, lots of bugfixes and cleaning up
-rw-r--r--index.php218
-rw-r--r--standard.css78
2 files changed, 203 insertions, 93 deletions
diff --git a/index.php b/index.php
index 413b810..22c23a8 100644
--- a/index.php
+++ b/index.php
@@ -34,7 +34,6 @@
<body onload="high_last();">
<div class="header">
<h1> Welcome to E-Doko </h1>
-<p>(please hit shift-reload:))</p>
<?php
/*
@@ -46,10 +45,16 @@ $wiki = "http://wiki.nubati.net/index.php?title=EmailDoko";
$debug = 1;
$last=-2;
+$number_of_trick;
/*
* end config
*/
+
+echo "</div>\n";
+
+/* end header */
+
/* helper function */
function mymail($To,$Subject,$message)
@@ -66,6 +71,71 @@ function mymail($To,$Subject,$message)
return;
}
+function is_trump($c) { return (($c<27) ? 1:0);}
+function is_club($c) { return (in_array($c,array('27','28','29','30','31','32','33','34')));}
+function is_space($c) { return (in_array($c,array('35','36','37','38','39','40','41','42')));}
+function is_heart($c) { return (in_array($c,array('43','44','45','46','47','48')));}
+
+function compare_cards($a,$b)
+{
+ /* if a is higher than b return 1, else 0, a being the card first played */
+
+ /* first map all cards to the odd number */
+ if( $a/2 - (int)($a/2) != 0.5)
+ $a--;
+ if( $b/2 - (int)($b/2) != 0.5)
+ $b--;
+
+ if(is_trump($a) && $a<=$b)
+ return 1;
+ else if(is_trump($a) && $a>$b)
+ return 0;
+ else
+ { /*$a is not a trump */
+ if(is_trump($b))
+ return 0;
+ else
+ {
+ /* both clubs? */
+ if( is_club($a) && is_club($b))
+ if($a<=$b)
+ return 1;
+ else
+ return 0;
+ /* both spade? */
+ if( is_spade($a) && is_spade($b))
+ if($a<=$b)
+ return 1;
+ else
+ return 0;
+ /* both heart? */
+ if( is_heart($a) && is_heart($b))
+ if($a<=$b)
+ return 1;
+ else
+ return 0;
+ return 1;
+ }
+ }
+
+}
+
+function get_winner($p)
+{
+ $c1 = $p[0];
+ $c2 = $p[1];
+ $c3 = $p[2];
+ $c4 = $p[3];
+
+ if( compare_cards($c1,$c2) && compare_cards($c1,$c3) && compare_cards($c1,$c4) )
+ return 0;
+ if( compare_cards($c2,$c3) && compare_cards($c2,$c4) )
+ return 1;
+ if( compare_cards($c3,$c4) )
+ return 2;
+ return 3;
+}
+
function parse_status()
{
global $game,$history,$player,$hash,$lines;
@@ -352,10 +422,15 @@ function display_card($card)
function display_link_card($card,$me)
{
- if( $card/2 - (int)($card/2) == 0.5)
+ /* if( $card/2 - (int)($card/2) == 0.5)
echo "<a href=\"index.php?me=$me&amp;card=$card\"><img src=\"cards/".$card.".png\" alt=\"".card_to_name($card)."\" /></a>\n";
else
echo "<a href=\"index.php?me=$me&amp;card=$card\"><img src=\"cards/".($card-1).".png\" alt=\"".card_to_name($card-1)."\" /></a>\n";
+ */
+ if( $card/2 - (int)($card/2) == 0.5)
+ echo "<input type=\"radio\" name=\"card\" value=\"".$card."\" /><img src=\"cards/".$card.".png\" alt=\"\" />\n";
+ else
+ echo "<input type=\"radio\" name=\"card\" value=\"".$card."\" /><img src=\"cards/".($card-1).".png\" alt=\"\" />\n";
return;
}
@@ -424,11 +499,6 @@ function save_status()
/***************** M A I N **************************/
-echo "<p>If you find bugs, please list them in the <a href=\"".$wiki."\">wiki</a>.</p>\n";
-echo "</div>\n";
-
-/* end header */
-
$history=array();
@@ -855,12 +925,6 @@ else
{ /* $me is set */
$me = $_REQUEST["me"];
- /* 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!<br />\n";
- else if($game["wedding"]>=0)
- echo $player[$hash[$game["wedding"]]]["name"]." is playing a wedding!<br />\n";
-
/* show history */
/* old tricks as list */
echo "<ul class=\"oldtrick\">\n";
@@ -873,11 +937,11 @@ else
/* found old trick, display it */
if(sizeof($trick)==5)
- echo " <li onclick=\"hl('$j');\">Trick $j\n <div class=\"table\" id=\"trick".$j."\">\n <img class=\"table\" src=\"pics/table".$play[0].".png\" alt=\"table\" />\n";
+ echo " <li onclick=\"hl('$j');\"><a href=\"#\">Trick $j</a>\n <div class=\"table\" id=\"trick".$j."\">\n <img class=\"table\" src=\"pics/table".$play[0].".png\" alt=\"table\" />\n";
else
{
/* display current trick */
- echo "<li onclick=\"hl('$j');\">Current Trick\n <div class=\"table\" id=\"trick".$j."\">\n <img class=\"table\" src=\"pics/table".$play[0].".png\" alt=\"table\" />";
+ echo "<li onclick=\"hl('$j');\"><a href=\"#\">Current Trick</a>\n <div class=\"table\" id=\"trick".$j."\">\n <img class=\"table\" src=\"pics/table".$play[0].".png\" alt=\"table\" />";
}
for($i=0;$i<sizeof($trick)-1;$i++)
{
@@ -912,6 +976,22 @@ else
}
echo "</ul>\n";
+ echo "<div class=\"line\"></div>";
+
+ /* output if we are playing a solo or a wedding */
+ echo "<div class=\"info\">";
+ if($game["solo-who"]>=0)
+ echo $player[$hash[$game["solo-who"]]]["name"]." is playing a ".$game["solo-what"]." solo!<br />\n";
+ else if($game["wedding"]>=0)
+ echo $player[$hash[$game["wedding"]]]["name"]." is playing a wedding!<br />\n";
+ echo "</div>";
+ echo "<div class=\"bug\"> Poverty not working yet! <br />".
+ " Schweinchen not working yet <br />".
+ "Bug: at the end of the game the winner of the last trick can add more points to his score by reloading the page <br />".
+ "If you find more bugs, please list them in the <a href=\"".$wiki.
+ "\">wiki</a>.Hit shift reload every now and then too.</div>\n";
+
+
/* figure out who needs to play next */
$next = $last + 1;
if ($next>=4)
@@ -928,6 +1008,8 @@ else
{
$card = $_REQUEST["card"];
$mycards = explode(";",$player[$me]["cards"]);
+ $comment = $_REQUEST["comment"];
+ $comment = str_replace(":","",$comment); /*can't have ":" in comments */
/* do we have that card */
if(in_array($card,$mycards))
@@ -949,12 +1031,12 @@ else
/* add card to history, special case if this is the first card */
if($last<0)
{
- $history[sizeof($history)-1]="".$player[$me]["number"]."->".$card.":\n";
+ $history[sizeof($history)-1]="".$player[$me]["number"]."->".$card."->$comment:\n";
}
else
{
$tmp = explode(":",$history[sizeof($history)-1]);
- $tmp[sizeof($tmp)-1] = "".$player[$me]["number"]."->".$card.":";
+ $tmp[sizeof($tmp)-1] = "".$player[$me]["number"]."->".$card."->$comment:";
$history[sizeof($history)-1]=join(":",$tmp);
}
save_status();
@@ -964,13 +1046,6 @@ else
display_card($card);
echo "</div>\n";
- ?>
-<form action="index.php" method="post">
- A short comment:<input name="comment" type="text" size="30" maxlength="50" />
- <input type="hidden" name="me" value="<?php echo $me; ?>" />
- <input type="submit" value="submit comment" />
-</form>
-<?php
/* send out email to players who want/need to get informed */
/* 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 */
@@ -1005,30 +1080,27 @@ else
}
else
echo "seems like you don't have that card<br />\n";
-
}
-
} /* end if card is set */
- 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(substr_count($history[sizeof($history)-1],":")==4)
+ { /* count points, email winner */
+ $p = array();
+ $c = array();
- if(sizeof($tmp2)<=2)
- $tmp[sizeof($tmp)-2] .= "->".$comment;
- $history[sizeof($history)-1]=join(":",$tmp);
+ $tmp = explode(":",$history[sizeof($history)-1]); /*last played trick */
- save_status();
- }
- else if(isset($_REQUEST["win"]) && substr_count($history[sizeof($history)-1],":")==4)
- { /* count points, email winner */
- $win = $_REQUEST["win"];
+ /* get player and cards of last trick */
+ for($i=0;$i<4;$i++)
+ {
+ $tmp2 = explode("->",$tmp[$i]);
+ $p[] = $tmp2[0];
+ $c[] = $tmp2[1];
+ };
+ $win = $p[get_winner($c)];
+
if(strlen($player[$hash[0]]["cards"]))
- $history[] = $win.":\n";
+ $history[] = "\n".$win.":\n"; /* not sure why I need the first \n here */
/* email the player who needs to move next*/
for($i=0;$i<4;$i++)
@@ -1074,43 +1146,22 @@ else
}; /* end if win is set */
echo "<br />\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]);
- if(sizeof($tmp)==5 && strlen($player[$hash[0]]["cards"]))
- {
- ?>
-<form action="index.php" method="post">
-who won?
-<?php
- for($i=0;$i<4;$i++)
- echo $player[$hash[$i]]["name"]." <input type=\"radio\" name=\"win\" value=\"$i\" /><br />";
- echo "<input type=\"hidden\" name=\"me\" value=\"$me\" />";
-?>
-<input type="submit" value="submit" />
-
-</form>
-<?php
- }
- else if(sizeof($tmp)<5 && 1<sizeof($tmp) && !isset($_REQUEST["card"]))
+ /* check if game is done */
+ $end = 1;
+ for($i=0;$i<4;$i++)
+ if(strlen(trim($player[$hash[$i]]["cards"]))!=0)
+ $end = 0;
+
+ if($end)
{
- if(sizeof($tmp)==2 && strlen($tmp[0])==1)
+ echo "<br /> game over, count points <br />\n";
+ for($i=0;$i<4;$i++)
{
- $next=$tmp[0];
-
- if($debug)
- echo "DEBUG: the next move is for <a href=\"index.php?me=".$hash[$next]."\">the next player</a><br />\n";
- if(strlen(trim($player[$me]["cards"]))==0)
- {
- echo "<br /> game over, count points <br />\n";
- for($i=0;$i<4;$i++)
- {
- echo $player[$hash[$i]]["name"]." got ".$player[$hash[$i]]["points"]."<br />\n";
- }
- }
+ echo $player[$hash[$i]]["name"]." got ".$player[$hash[$i]]["points"]."<br />\n";
}
- echo "<br />\n";
- } /* end check for winner */
-
+ }
+ /* check end of game */
+
/* do we still have cards? display them */
if(strlen(trim($player[$me]["cards"]))>0 )
{
@@ -1119,14 +1170,21 @@ who won?
sort($mycards);
- echo "<p class=\"mycards\">\n";
+ echo "<div class=\"mycards\">\n";
/* is it our turn? */
- if($hash[$next]==$me && !isset($_REQUEST["card"]) && !isset($_REQUEST["win"]))
+ if($hash[$next]==$me && !isset($_REQUEST["card"]))
{
- echo "ITS YOUR TURN! <br />\n";
+ echo "Hello ".$player[$me]["name"].", it's your turn! <br />\n";
echo "Your cards are: <br />\n";
+ echo "<form action=\"index.php\" method=\"post\">\n";
foreach($mycards as $card)
display_link_card($card,$me);
+?>
+ <br />A short comment:<input name="comment" type="text" size="30" maxlength="50" />
+ <input type="hidden" name="me" value="<?php echo $me; ?>" />
+ <input type="submit" value="move" />
+</form>
+<?php
}
else
{ /* not our turn, just show the hand */
@@ -1134,7 +1192,7 @@ who won?
foreach($mycards as $card)
display_card($card);
}
- echo "</p>\n";
+ echo "</div>\n";
}
}
}
diff --git a/standard.css b/standard.css
index 75eb567..8abd07c 100644
--- a/standard.css
+++ b/standard.css
@@ -4,17 +4,32 @@
border-bottom:3px solid gray;
}
+.card {
+ position:absolute;
+ z-index:20;
+ top:18em;
+ left:28em;
+ text-aling:center;
+ background-color:white;
+ border:2px solid gray;
+}
+.card img { width:8em; }
+
+
ul.oldtrick {
list-style:none;
- margin:0;
+ margin:3px;
padding:0;
- background-color:yellow;
+ /*background-color:yellow;*/
+ text-align:center;
}
+ul.oldtrick a { text-decoration:none; color:#000;}
+
ul.oldtrick li {
/*background-color:blue;*/
margin:0 0.5em;
- float:left;
+ display:inline;
}
ul.oldtrick li:hover {
background-color: yellow;
@@ -35,8 +50,8 @@ ul.oldtrick li div.table {
margin:0;
padding:0;
/*border: 5px solid green;*/
- top: 14em;
- left: 8em;
+ top: 10em;
+ left: 18em;
height:28em;
width:28em;
z-index:9;
@@ -77,7 +92,7 @@ ul.oldtrick li div div.card3 {
margin:0;
padding:0;
/*border: 1px solid red;*/
- top: 28em;
+ top: 29em;
left:0;
width:28em;
text-align:center;
@@ -129,23 +144,60 @@ ul.oldtrick li div div span span {
background-color:white;
margin:0;
padding:0;
+ width:10em;
border: 1px solid yellow;
- top:1em;
z-index:11;
}
+ul.oldtrick li div div.card0 span span{
+ top:1em;
+ left:-14em;
+ border: 3px solid green;
+}
+ul.oldtrick li div div.card1 span span{
+ top:-1em;
+ left:3em;
+ border: 3px solid green;
+}
+ul.oldtrick li div div.card2 span span{
+ top:-2em;
+ left:3em;
+ border: 3px solid green;
+}
+ul.oldtrick li div div.card3 span span{
+ top:-1em;
+ left:3em;
+ border: 3px solid green;
+}
.mycards {
- position:absolute;
+ clear:both;
margin:0;
+ margin-top:33em;
padding:0;
- right:0;
- top:15em;
- width:12em;
- float:right;
border:1px solid red;
background-color:yellow;
}
-.mycards img{
+.mycards img {
height:6em;
+}
+
+.line{
+ clear:both;
+ border-top:2px solid gray;
+ margin:0;
+ padding:0;
+}
+
+.info {
+ float:right;
+ border:2px solid gray;
+ border-top:0;
+}
+
+.bug {
+ float:left;
+ width:10em;
+ border:2px solid gray;
+ border-top:0;
} \ No newline at end of file