summaryrefslogtreecommitdiffstats
path: root/functions.php
diff options
context:
space:
mode:
Diffstat (limited to 'functions.php')
-rw-r--r--functions.php434
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