".abs($re_score);
+
+ /* check for solo */
+ if(DB_get_gametype_by_gameid($gameid)=="solo")
+ $output.= " S";
+ $output.="
\n
\n";
+ }
+
+ $output.="
\n";
+
+ return $output;
+}
+
?>
diff --git a/index.php b/index.php
index 74b4fc1..77c2c22 100644
--- a/index.php
+++ b/index.php
@@ -1,7 +1,7 @@
Game ".DB_format_gameid($gameid).
" has been cancled.
";
}
@@ -237,7 +237,7 @@ else if(myisset("cancle","me"))
else if(myisset("remind","me"))
{
$me = $_REQUEST["me"];
-
+
/* test for valid ID */
$myid = DB_get_userid_by_hash($me);
if(!$myid)
@@ -248,9 +248,9 @@ else if(myisset("remind","me"))
DB_close();
exit();
}
-
+
DB_update_user_timestamp($myid);
-
+
/* get some information from the DB */
$gameid = DB_get_gameid_by_hash($me);
$myname = DB_get_name_by_hash($me);
@@ -263,13 +263,13 @@ else if(myisset("remind","me"))
$name = DB_get_name_by_userid($r[1]);
$To = DB_get_email_by_userid($r[1]);
$userhash = DB_get_hash_from_gameid_and_userid($gameid,$r[1]);
-
+
$message = "Hello $name, \n\n".
"It's your turn in game ".DB_format_gameid($gameid)." \n".
"Actually everyone else is waiting for you for more than a week now ;)\n\n".
"Please visit this link now to continue: \n".
" ".$host."?me=".$userhash."\n\n" ;
-
+
if(DB_get_reminder($r[1],$gameid)>0)
{
echo "
An email has already been sent out.
\n";
@@ -278,7 +278,7 @@ else if(myisset("remind","me"))
{
DB_set_reminder($r[1],$gameid);
mymail($To,$EmailName."Reminder: game ".DB_format_gameid($gameid)." it's your turn",$message);
-
+
echo "
Game ".DB_format_gameid($gameid).
": an email has been sent out.
";
}
@@ -291,7 +291,7 @@ else if(myisset("remind","me"))
else if(myisset("me"))
{
$me = $_REQUEST["me"];
-
+
/* test for valid ID */
$myid = DB_get_userid_by_hash($me);
if(!$myid)
@@ -308,7 +308,7 @@ else if(myisset("me"))
/* the user had done something, update the timestamp */
DB_update_user_timestamp($myid);
-
+
/* get some information from the DB */
$gameid = DB_get_gameid_by_hash($me);
$myname = DB_get_name_by_hash($me);
@@ -320,7 +320,7 @@ else if(myisset("me"))
/* get prefs and save them */
DB_get_PREF($myid);
/* end set pref */
-
+
/* get rule set for this game */
$result = mysql_query("SELECT * FROM Rulesets".
" LEFT JOIN Game ON Game.ruleset=Rulesets.id ".
@@ -340,9 +340,9 @@ else if(myisset("me"))
$gametype = DB_get_solo_by_gameid($gameid);
$GT = $gametype." ".$GT;
}
-
+
/* does anyone have both foxes */
- $GAME["schweinchen"]=0;
+ $GAME["schweinchen"]=0;
for($i=1;$i<5;$i++)
{
$hash = DB_get_hash_from_game_and_pos($gameid,$i);
@@ -370,13 +370,13 @@ else if(myisset("me"))
{
if($hash == $me)
echo "$i \n";
- else
+ else
echo "$i \n";
$i++;
}
echo "\n";
}
-
+
/* display the table and the names */
display_table();
@@ -419,14 +419,14 @@ else if(myisset("me"))
/* cancel the game */
$message = "Hello, \n\n".
"the game has been canceled due to the request of one of the players.\n";
-
+
$userids = DB_get_all_userid_by_gameid($gameid);
foreach($userids as $user)
{
$To = DB_get_email_by_userid($user);
mymail($To,$EmailName."game ".DB_format_gameid($gameid)." canceled",$message);
}
-
+
/* delete everything from the dB */
DB_cancel_game($me);
}
@@ -436,12 +436,12 @@ else if(myisset("me"))
sort($mycards);
output_check_for_sickness($me,$mycards);
-
+
echo "
your cards are: \n";
- foreach($mycards as $card)
+ foreach($mycards as $card)
display_card($card,$PREF["cardset"]);
- echo "
\n";
-
+ echo "\n";
+
/* move on to the next stage*/
DB_set_hand_status_by_hash($me,'check');
}
@@ -572,7 +572,7 @@ else if(myisset("me"))
*/
echo "
\n";
echo "
Checking if someone else selected solo, nines, wedding or poverty.
";
-
+
/* check if everyone has reached this stage */
$userids = DB_get_all_userid_by_gameid($gameid);
$ok = 1;
@@ -594,7 +594,7 @@ else if(myisset("me"))
{
echo "Everyone has finished checking their cards, let's see what they said... ";
- /* check what kind of game we are playing, in case there are any solos this already
+ /* check what kind of game we are playing, in case there are any solos this already
*will have the correct information in it */
$gametype = DB_get_gametype_by_gameid($gameid);
$startplayer = DB_get_startplayer_by_gameid($gameid);
@@ -646,17 +646,17 @@ else if(myisset("me"))
" has five or more nines and nobody is playing solo.\n\n".
" To redeal either start a new game or, in case the game was part of a tournament, \n".
" go to the last game and use the link at the bottom of the page to redeal.";
-
+
$userids = DB_get_all_userid_by_gameid($gameid);
foreach($userids as $user)
{
$To = DB_get_email_by_userid($user);
mymail($To,$EmailName."game ".DB_format_gameid($gameid)." canceled",$message);
}
-
+
/* delete everything from the dB */
DB_cancel_game($me);
-
+
echo "The game has been canceled because ".DB_get_name_by_userid($nines).
" has five or more nines and nobody is playing solo.\n";
output_footer();
@@ -708,15 +708,15 @@ else if(myisset("me"))
/* now the gametype is set correctly (shouldn't matter that this is calculated for every user)
* output what kind of game we have */
-
+
$poverty = 0;
foreach($userids as $user)
{
- /* userids are sorted by position...
+ /* userids are sorted by position...
* so output whatever the first one has, then whatever the next one has
- * stop when the sickness is the same as the gametype
+ * stop when the sickness is the same as the gametype
*/
-
+
$name = DB_get_name_by_userid($user);
$usersick = DB_get_sickness_by_userid_and_gameid($user,$gameid);
@@ -739,9 +739,9 @@ else if(myisset("me"))
if( $gametype != "solo")
if($GAME["schweinchen"] && $RULES["schweinchen"]=="both" )
echo DB_get_name_by_hash($GAME["schweinchen-who"])." has Schweinchen. ";
-
+
echo " \n";
-
+
/* finished the setup, set re/contra parties if possible, go to next stage unless there is a case of poverty*/
switch($gametype)
{
@@ -762,15 +762,15 @@ else if(myisset("me"))
DB_set_party_by_hash($me,"re");
else
DB_set_party_by_hash($me,"contra");
-
+
echo "Whoever will make the first trick will be on the re team. \n";
- echo " Ok, the game can start now, please finish the setup. ";
+ echo " Ok, the game can start now, please finish the setup. ";
DB_set_hand_status_by_hash($me,'play');
break;
case "normal":
$hand = DB_get_all_hand($me);
-
+
if(in_array('3',$hand)||in_array('4',$hand))
DB_set_party_by_hash($me,"re");
else
@@ -780,7 +780,7 @@ else if(myisset("me"))
case "poverty":
case "dpoverty":
/* check if poverty resolved (e.g. DB.Game who set to NULL)
- * yes? =>trump was taken, start game; break;
+ * yes? =>trump was taken, start game; break;
*/
$who = DB_get_sickness_by_gameid($gameid);
if($who<0)
@@ -788,14 +788,14 @@ else if(myisset("me"))
DB_set_hand_status_by_hash($me,'play');
break;
};
-
+
if($who>9) /*= two people still have trump on the table*/
$add = 10;
else
$add = 1;
/* check if we are being asked now
- * no? display wait message, e.g. player X is asked at the moment
+ * no? display wait message, e.g. player X is asked at the moment
*/
$usersick = DB_get_sickness_by_userid_and_gameid($myid,$gameid);
if(myisset("trump") && $_REQUEST["trump"]=="no" && ($who==$mypos || $who==$mypos*10))
@@ -804,7 +804,7 @@ else if(myisset("me"))
/* set next player who needs to be asked */
$firstsick = (string) DB_get_sickness_by_pos_and_gameid($mypos+1,$gameid);
$secondsick = (string) DB_get_sickness_by_pos_and_gameid($mypos+2,$gameid);
-
+
if($firstsick=="poverty")
{
if($secondsick=="poverty")
@@ -818,7 +818,7 @@ else if(myisset("me"))
/* email next player */
$who = DB_get_sickness_by_gameid($gameid);
if($who>9) $who = $who/10;
-
+
if($who<=4)
{
$To = DB_get_email_by_pos_and_gameid($who,$gameid);
@@ -832,7 +832,7 @@ else if(myisset("me"))
/* this user is done */
DB_set_hand_status_by_hash($me,'play');
- break;
+ break;
}
else if(myisset("trump") && !myisset("exchange") && $_REQUEST["trump"]>0 && ($who==$mypos || $who==$mypos*10))
{
@@ -843,7 +843,7 @@ else if(myisset("me"))
$userhand = DB_get_handid_by_gameid_and_userid($gameid,$trump);
/* copy trump from player A to B */
$result = mysql_query("UPDATE Hand_Card SET hand_id='$myhand' WHERE hand_id='$userhand' AND card_id<'27'" );
-
+
/* add hidden button with trump in it to get to the next point */
echo "
\n";
echo " \n";
@@ -863,7 +863,7 @@ else if(myisset("me"))
$result = mysql_query("UPDATE Hand_Card SET hand_id='$userhand'".
" WHERE hand_id='$myhand' AND card_id='$exchange'" );
};
-
+
/* if number of cards == 12, set status to play for both users */
$result = mysql_query("SELECT COUNT(*) FROM Hand_Card WHERE hand_id='$myhand'" );
$r = mysql_fetch_array($result,MYSQL_NUM);
@@ -876,7 +876,7 @@ else if(myisset("me"))
{
if($gametype=="poverty" || $who<9)
{
- DB_set_sickness_by_gameid($gameid,-1); /* done with poverty */
+ DB_set_sickness_by_gameid($gameid,-1); /* done with poverty */
}
else /* reduce poverty count by one, that is go to single digits $who */
{
@@ -911,7 +911,7 @@ else if(myisset("me"))
mymail($To,$EmailName." poverty (game ".DB_format_gameid($gameid).")",$message);
}
}
-
+
/* this user is done */
DB_set_hand_status_by_hash($me,'play');
/* and so is his partner */
@@ -951,14 +951,14 @@ else if(myisset("me"))
{
/* else show all trump, have lowest card pre-selected, have hidden setting for */
echo "
you need to get rid of a few cards
\n";
-
+
set_gametype($gametype); /* this sets the $CARDS variable */
$mycards = DB_get_hand($me);
$mycards = mysort($mycards,$gametype);
$type="exchange";
echo "
Your cards are: \n";
- foreach($mycards as $card)
+ foreach($mycards as $card)
display_link_card($card,$PREF["cardset"],$type);
echo " \n";
echo " \n";
@@ -972,7 +972,7 @@ else if(myisset("me"))
{
$name = DB_get_name_by_userid($user);
$usersick = DB_get_sickness_by_userid_and_gameid($user,$gameid);
-
+
if($usersick=="poverty")
{
$hash = DB_get_hash_from_gameid_and_userid($gameid,$user);
@@ -986,14 +986,14 @@ else if(myisset("me"))
}
echo "No,way I take those trump... \n";
echo "
your cards are: \n";
- foreach($mycards as $card)
+ foreach($mycards as $card)
display_card($card,$PREF["cardset"]);
- echo "
\n";
+ echo "\n";
}
else
{
@@ -1010,23 +1010,23 @@ else if(myisset("me"))
{
$message = "Hello, \n\n".
"Game ".DB_format_gameid($gameid)." has been cancled since nobody wanted to take the trump.\n";
-
+
$userids = DB_get_all_userid_by_gameid($gameid);
foreach($userids as $user)
{
$To = DB_get_email_by_userid($user);
mymail($To,$EmailName."game ".DB_format_gameid($gameid)." cancled (poverty not resolved)",$message);
}
-
+
/* delete everything from the dB */
DB_cancel_game($me);
-
+
echo "
Game ".DB_format_gameid($gameid)." has been cancled.
";
output_footer();
DB_close();
exit();
}
-
+
/* check if all players are ready to play */
$ok = 1;
foreach($userids as $user)
@@ -1035,19 +1035,19 @@ else if(myisset("me"))
$ok = 0;
DB_set_player_by_gameid($gameid,$user);
}
-
+
if($ok)
{
/* only set this after all poverty, etc. are handled*/
DB_set_game_status_by_gameid($gameid,'play');
-
+
/* email startplayer */
$startplayer = DB_get_startplayer_by_gameid($gameid);
$email = DB_get_email_by_pos_and_gameid($startplayer,$gameid);
$hash = DB_get_hash_from_game_and_pos($gameid,$startplayer);
$who = DB_get_userid_by_email($email);
DB_set_player_by_gameid($gameid,$who);
-
+
if($hash!=$me)
{
/* email startplayer) */
@@ -1056,25 +1056,25 @@ else if(myisset("me"))
mymail($email,$EmailName."ready, set, go... (game ".DB_format_gameid($gameid).") ",$message);
}
else
- echo " Please, start the game. ";
+ echo " Please, start the game. ";
}
else
- echo "\n ";
+ echo "\n ";
}
echo "
\n";
break;
case 'play':
- case 'gameover':
+ case 'gameover':
/* both entries here, so that the tricks are visible for both.
* in case of 'play' there is a break later that skips the last part
*/
-
- /* figure out what kind of game we are playing,
+
+ /* figure out what kind of game we are playing,
* set the global variables $CARDS["trump"],$CARDS["diamonds"],$CARDS["hearts"],
* $CARDS["clubs"],$CARDS["spades"],$CARDS["foxes"]
* accordingly
*/
-
+
$gametype = DB_get_gametype_by_gameid($gameid);
$GT = $gametype;
if($gametype=="solo")
@@ -1084,18 +1084,18 @@ else if(myisset("me"))
}
else
$gametype = "normal";
-
+
set_gametype($gametype); /* this sets the $CARDS variable */
-
+
/* get some infos about the game */
$gamestatus = DB_get_game_status_by_gameid($gameid);
-
+
/* has the game started? No, then just wait here...*/
if($gamestatus == 'pre')
{
echo "
You finished the setup, but not everyone else finished it... ".
"so you need to wait for the others. Just wait for the an email...
";
- break; /* not sure this works... the idea is that you can
+ break; /* not sure this works... the idea is that you can
* only play a card after everyone is ready to play */
}
@@ -1104,16 +1104,15 @@ else if(myisset("me"))
$r = mysql_fetch_array($result,MYSQL_NUM);
$gameend = time() - strtotime($r[0]);
- /* handel comments in case player didn't play a card, allow comments a week after the end of the game */
- if( (!myisset("card") && $mystatus=='play') || ($mystatus=='gameover' && ($gameend < 60*60*24*7)) )
+ /* handel comments in case player didn't play a card, allow comments a week after the end of the game */ if( (!myisset("card") && $mystatus=='play') || ($mystatus=='gameover' && ($gameend < 60*60*24*7)) )
if(myisset("comment"))
{
$comment = $_REQUEST["comment"];
$playid = DB_get_current_playid($gameid);
-
+
if($comment != "")
DB_insert_comment($comment,$playid,$myid);
- };
+ };
/* get everything relevant to display the tricks */
$result = mysql_query("SELECT Hand_Card.card_id as card,".
@@ -1135,15 +1134,15 @@ else if(myisset("me"))
"ORDER BY Trick.id, sequence ASC");
$trickNR = 1;
$lasttrick = DB_get_max_trickid($gameid);
-
+
$play = array(); /* needed to calculate winner later */
- $seq = 1;
- $pos = DB_get_startplayer_by_gameid($gameid)-1;
+ $seq = 1;
+ $pos = DB_get_startplayer_by_gameid($gameid)-1;
$firstcard = ""; /* first card in a trick */
-
+
echo "\n
\n";
echo "
Game ".DB_format_gameid($gameid).":
\n";
-
+
while($r = mysql_fetch_array($result,MYSQL_NUM))
{
$pos = $r[1];
@@ -1160,10 +1159,10 @@ else if(myisset("me"))
/* check if first schweinchen has been played */
if( $GAME["schweinchen"] && ($r[0] == 19 || $r[0] == 20) )
$GAME["schweinchen"]++;
-
+
/* save card to be able to find the winner of the trick later */
- $play[$seq] = array("card"=>$r[0],"pos"=>$pos);
-
+ $play[$seq] = array("card"=>$r[0],"pos"=>$pos);
+
if($seq==1)
{
/* first card in a trick, output some html */
@@ -1181,23 +1180,23 @@ else if(myisset("me"))
"
\n".
" \n";
};
-
+
/* remember first card, so that we are able to check, what cards can be played */
$firstcard = $r[0];
};
-
+
/* display card */
echo "
\n";
-
+
/*check if we still have cards left, else set status to gameover */
if(sizeof(DB_get_hand($me))==0)
{
DB_set_hand_status_by_hash($me,'gameover');
- $mystatus='gameover';
+ $mystatus = 'gameover';
}
-
- /* if all players are done, set game status to game over,
- * get the points of the last trick and send out an email
+
+ /* if all players are done, set game status to game over,
+ * get the points of the last trick and send out an email
* to all players
*/
$userids = DB_get_all_userid_by_gameid($gameid);
-
+
$done=1;
foreach($userids as $user)
if(DB_get_hand_status_by_userid_and_gameid($user,$gameid)!='gameover')
$done=0;
-
+
if($done)
DB_set_game_status_by_gameid($gameid,"gameover");
@@ -1390,7 +1437,7 @@ else if(myisset("me"))
$email = DB_get_email_by_hash($next_hash);
$who = DB_get_userid_by_email($email);
DB_set_player_by_gameid($gameid,$who);
-
+
$message = "A card has been played in game ".DB_format_gameid($gameid).".\n\n".
"It's your turn now.\n".
"Use this link to play a card: ".$host."?me=".$next_hash."\n\n" ;
@@ -1421,9 +1468,125 @@ else if(myisset("me"))
" WHERE Hand.game_id='$gameid'".
" GROUP BY Hand.party" );
$message .= "\nTotals:\n";
+ $re = 0;
+ $contra = 0;
while( $r = mysql_fetch_array($result,MYSQL_NUM))
- $message .= " ".$r[0]." ".$r[1]."\n";
-
+ {
+ $message .= " ".$r[0]." ".$r[1]."\n";
+ if($r[0] == "re")
+ $re = $r[1];
+ else if($r[0] == "contra")
+ $contra = $r[1];
+ }
+ /* save score in database */
+ // get calls from re/contra
+ $call_re = NULL;
+ $call_contra = NULL;
+ foreach($userids as $user)
+ {
+ $hash = DB_get_hash_from_gameid_and_userid($gameid,$user);
+ $call = DB_get_call_by_hash($hash);
+ $party = DB_get_party_by_hash($hash);
+
+ if($call!=NULL)
+ {
+ $call = (int) $call;
+
+ if($party=="re")
+ {
+ if($call_re==NULL)
+ $call_re = $call;
+ else if( $call < $call_re)
+ $call_re = $call;
+ }
+ else if($party=="contra")
+ {
+ if($call_contra==NULL)
+ $call_contra = $call;
+ else if( $call < $call_re)
+ $call_contra = $call;
+ }
+ }
+ }
+ // no call, check 120:120
+ if($call_re == NULL && $call_contra==NULL)
+ if($re==120)
+ mysql_query("INSERT INTO Score".
+ " VALUES( NULL,NULL,$gameid,'contra',NULL,NULL,'againstqueens')");
+
+ // no call or one call do scoring
+ if($call_re != NULL && $call_contra!=NULL)
+ {
+ // two calls: not sure what to do yet
+ }
+ else
+ {
+ $offset = 0;
+
+ if($call_re!=NULL)
+ $offset = 120 - $call_re;
+ else if($call_contra!=NULL)
+ $offset = -1*(120 - $call_contra)-1;
+
+ if($call_re==0)
+ $offset -= 1;
+
+ if($call_contra==0)
+ $offset += 1;
+
+ if($re > 120 + $offset)
+ {
+ /* re won */
+
+ /* normal win */
+ foreach(array(120,150,180,210,240) as $p)
+ {
+ $offset = 0;
+ if($p==240)
+ $offset = 1;
+
+ if($re>$p-$offset)
+ mysql_query("INSERT INTO Score".
+ " VALUES( NULL,NULL,$gameid,'re',NULL,NULL,'$p')");
+ }
+
+ /* re called something and won */
+ if($call_re!=NULL)
+ foreach(array(0,30,60,90,120) as $p)
+ {
+ if($call_re<$p+1)
+ mysql_query("INSERT INTO Score".
+ " VALUES( NULL,NULL,$gameid,'re',NULL,NULL,'call$p')");
+ }
+ }
+ else
+ {
+ /* contra won */
+ mysql_query("INSERT INTO Score".
+ " VALUES( NULL,NULL,$gameid,'contra',NULL,NULL,'againstqueens')");
+
+ /* normal win */
+ foreach(array(120,150,180,210,240) as $p)
+ {
+ $offset = 0;
+ if($p==240)
+ $offset = 1;
+
+ if($re>$p-$offset)
+ mysql_query("INSERT INTO Score".
+ " VALUES( NULL,NULL,$gameid,'contra',NULL,NULL,'$p')");
+ }
+
+ /* re called something and won */
+ if($call_re!=NULL)
+ foreach(array(0,30,60,90,120) as $p)
+ {
+ if($call_contra<$p+1)
+ mysql_query("INSERT INTO Score".
+ " VALUES( NULL,NULL,$gameid,'contra',NULL,NULL,'call$p')");
+ }
+ }
+ }
/* send out final email */
$all = array();
@@ -1438,7 +1601,7 @@ else if(myisset("me"))
{
$To = DB_get_email_by_userid($user);
$hash = DB_get_hash_from_gameid_and_userid($gameid,$user);
-
+
$link = "Use this link to have a look at game ".DB_format_gameid($gameid).": ".$host."?me=".$hash."\n\n" ;
mymail($To,$EmailName."game over (game ".DB_format_gameid($gameid).") part 2(2)",$link);
}
@@ -1454,7 +1617,7 @@ else if(myisset("me"))
echo "please wait until it's your turn! \n";
}
- if($seq!=4 && $trickNR>1)
+ if($seq!=4 && $trickNR>1)
echo " \n \n"; /* end div trick, end li trick */
/* display points in case game is over */
@@ -1464,7 +1627,7 @@ else if(myisset("me"))
"
\n";
/* add pic for re/contra
" \n";*/
-
+
$result = mysql_query("SELECT User.fullname, IFNULL(SUM(Card.points),0), Hand.party,Hand.position FROM Hand".
" LEFT JOIN Trick ON Trick.winner=Hand.position AND Trick.game_id=Hand.game_id".
" LEFT JOIN User ON User.id=Hand.user_id".
@@ -1477,28 +1640,28 @@ else if(myisset("me"))
echo "
\n".
" ".$r[2]." ".$r[1]."\n".
"
\n";
-
+
echo "
\n \n"; /* end div trick, end li trick */
}
-
+
echo "
\n"; /* end ul tricks*/
-
+
$mycards = DB_get_hand($me);
$mycards = mysort($mycards,$gametype);
echo "