diff options
Diffstat (limited to 'functions.php')
-rw-r--r-- | functions.php | 434 |
1 files changed, 434 insertions, 0 deletions
diff --git a/functions.php b/functions.php new file mode 100644 index 0000000..0ce10e2 --- /dev/null +++ b/functions.php @@ -0,0 +1,434 @@ +<?php + +/* + * config + */ + +$host = "http://doko.nubati.net/index.php"; +$wiki = "http://wiki.nubati.net/index.php?title=EmailDoko"; +$debug = 1; + +$last=-2; + +/* + * end config + */ + + +/* helper function */ +function mymail($To,$Subject,$message) +{ + global $debug; + + if($debug) + { + $message = str_replace("\n","<br />",$message); + echo "<br />To: $To<br />Subject: $Subject <br />$message<br />\n"; + } + else + mail($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_spade($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) +{ + /* get all 4 cards played in a trick */ + $c1 = $p[1]; + $c2 = $p[2]; + $c3 = $p[3]; + $c4 = $p[4]; + + /* find out who won */ + if( compare_cards($c1,$c2) && compare_cards($c1,$c3) && compare_cards($c1,$c4) ) + return 1; + if( compare_cards($c2,$c3) && compare_cards($c2,$c4) ) + return 2; + if( compare_cards($c3,$c4) ) + return 3; + return 4; +} + +function count_nines($cards) +{ + $nines = 0; + + foreach($cards as $c) + { + if($c == "25" || $c == "26") $nines++; + else if($c == "33" || $c == "34") $nines++; + else if($c == "41" || $c == "42") $nines++; + else if($c == "47" || $c == "48") $nines++; + } + + return $nines; +} + +function check_wedding($cards) +{ + + if( in_array("3",$cards) && in_array("2",$cards) ) + return 1; + + return 0; +} + +function count_trump($cards) +{ + $trump = 0; + + /* count each trump */ + foreach($cards as $c) + if( (int)($c) <27) + $trump++; + + /* subtract foxes */ + if( in_array("19",$cards)) + $trump--; + if( in_array("20",$cards) ) + $trump--; + /* add one, in case the player has both foxes (schweinchen) */ + if( in_array("19",$cards) && in_array("20",$cards) ) + $trump++; + + return $trump; +} + +function card_to_name($card) +{ + switch($card) + { + case 1: + case 2: + return "ten of hearts"; + case 3: + case 4: + return "queen of clubs"; + case 5: + case 6: + return "queen of spades"; + case 7: + case 8: + return "queen of hearts"; + case 9: + case 10: + return "queen of diamonds"; + case 11: + case 12: + return "jack of clubs"; + case 13: + case 14: + return "jack of spades"; + case 15: + case 16: + return "jack of hearts"; + case 17: + case 18: + return "jack of diamonds"; + case 19: + case 20: + return "ace of diamonds"; + case 21: + case 22: + return "ten of diamonds"; + case 23: + case 24: + return "king of diamonds"; + case 25: + case 26: + return "nine of diamonds";; + case 27: + case 28: + return "ace of clubs"; + case 29: + case 30: + return "ten of clubs"; + case 31: + case 32: + return "king of clubs"; + case 33: + case 34: + return "nine of clubs"; + case 35: + case 36: + return "ace of spades"; + case 37: + case 38: + return "ten of spades"; + case 39: + case 40: + return "king of spades"; + case 41: + case 42: + return "nine of spades"; + case 43: + case 44: + return "ace of hearts"; + case 45: + case 46: + return "king of hearts"; + case 47: + case 48: + return "nine of hearts"; + default: + return "something went wrong, please contact the admin. Error: code1."; + } +} + +function card_value($card) +{ + switch($card) + { + case 1: /* heart */ + case 2: + return 10; + case 3: /* clubes */ + case 4: + case 5: /* spades */ + case 6: + case 7: /* hearts */ + case 8: + case 9: /* diamonds */ + case 10: + return 3; + case 11: /* clubes */ + case 12: + case 13: /* spades */ + case 14: + case 15: /* hearts */ + case 16: + case 17: /* diamonds */ + case 18: + return 2; + case 19: /* diamonds */ + case 20: + case 27: /* clubs */ + case 28: + case 35: /* spades */ + case 36: + case 43: /* hearts */ + case 44: + return 11; + case 21: /* diamonds */ + case 22: + case 29: /* clubs */ + case 30: + case 37: /* spades */ + case 38: + return 10; + case 23: /* diamonds */ + case 24: + case 31: /* clubs */ + case 32: + case 39: /* spades */ + case 40: + case 45: /* hearts */ + case 46: + return 4; + case 25: /* diamonds */ + case 26: + case 33: /* clubs */ + case 34: + case 41: /* spades */ + case 42: + case 47: /* hearts */ + case 48: + return 0; + default: + echo "something went wrong, please contact the admin. ErrorCode: 2<br>"; + return 0; + } +} + +function display_card($card) +{ + /* cards are only availabl for the odd values, e.g. 1.png, 3.png, ... + * convert even cards to the matching odd value */ + + if( $card/2 - (int)($card/2) == 0.5) + echo "<img src=\"cards/".$card.".png\" alt=\"".card_to_name($card)."\" />\n"; + else + echo "<img src=\"cards/".($card-1).".png\" alt=\"".card_to_name($card-1)."\" />\n"; + + return; +} + +function display_link_card($card) +{ + 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; +} + +function create_array_of_random_numbers() +{ + $r = array(); + $a = array(); + + for($i=1;$i<49;$i++) + $a[$i]=$i; + + $r = array_rand($a,48); + + return $r; +} + +function check_want_to_play($me) +{ + ?> + <form action="index.php" method="post"> + Do you want to play a game of DoKo? + yes<input type="radio" name="in" value="yes" /> + no<input type="radio" name="in" value="no" /> <br /> + + Do you want to get an email for every card played or only if it your move? + every card<input type="radio" name="update" value="card" /> + only on my turn<input type="radio" name="update" value="turn" /> <br /> +<?php + echo "<input type=\"hidden\" name=\"me\" value=\"$me\" />\n"; + echo "\n"; + echo "<input type=\"submit\" value=\"count me in\" />\n"; + echo " </form>\n"; + + return; +} + +function check_for_sickness($me,$mycards) +{ + ?> + <p> nothing implemented so far, but give it a try anyway ;) </p> + + <form action="index.php" method="post"> + + do you want to play solo? + <select name="solo" size="1"> + <option>No</option> + <option>trumpless</option> + <option>trump</option> + <option>queen</option> + <option>jack</option> + <option>club</option> + <option>spade</option> + <option>heart</option> + </select> + <br /> + + <?php + + echo "wedding?"; + if(check_wedding($mycards)) + { + echo " yes<input type=\"radio\" name=\"wedding\" value=\"yes\" />"; + echo " no <input type=\"radio\" name=\"wedding\" value=\"no\" /> <br />\n"; + } + else + { + echo " no <input type=\"hidden\" name=\"wedding\" value=\"no\" /> <br />\n"; + }; + + echo "do you have poverty?"; + if(count_trump($mycards)<4) + { + echo " yes<input type=\"radio\" name=\"poverty\" value=\"yes\" />"; + echo " no <input type=\"radio\" name=\"poverty\" value=\"no\" /> <br />\n"; + } + else + { + echo " no <input type=\"hidden\" name=\"poverty\" value=\"no\" /> <br />\n"; + }; + + echo "do you have too many nines?"; + if(count_nines($mycards)>4) + { + echo " yes<input type=\"radio\" name=\"nines\" value=\"yes\" />"; + echo " no <input type=\"radio\" name=\"nines\" value=\"no\" /> <br />\n"; + } + else + { + echo " no <input type=\"hidden\" name=\"nines\" value=\"no\" /> <br />\n"; + }; + + echo "<input type=\"hidden\" name=\"me\" value=\"$me\" />\n"; + echo "<input type=\"submit\" value=\"count me in\" />\n"; + + echo "</form>\n"; + + return; +} + +function display_status() +{ + echo "<div class=\"info\">"; + echo " is someone playing solo, etc?"; + echo "</div>"; + + return; +} + +function display_news() +{ + global $wiki; + echo "<div class=\"bug\"> ". + "Please hit shift+reload.<br /><hr />". + "New Database backend, lost a few features on the way.<br /><hr />". + "If you find more bugs, please list them in the <a href=\"".$wiki. + "\">wiki</a>.</div>\n"; + return; +} + +function display_cards($me,$myturn) +{ + return; +} + +?>
\ No newline at end of file |