diff options
author | arun <arun@nubati.net> | 2007-04-12 07:33:07 +0000 |
---|---|---|
committer | arun <arun> | 2007-04-12 07:33:07 +0000 |
commit | 9db97c855d40d089037410aad3595893f68f6d6a (patch) | |
tree | 8b1d993b9b4d9df12209a29e041d1429137c5e15 | |
parent | 616c0a755263d974bf8953d71511a2860a3ff7ae (diff) | |
download | e-DoKo-9db97c855d40d089037410aad3595893f68f6d6a.tar.gz e-DoKo-9db97c855d40d089037410aad3595893f68f6d6a.tar.bz2 e-DoKo-9db97c855d40d089037410aad3595893f68f6d6a.zip |
poverty should work now! added german card deck, tons of small fixes
-rw-r--r-- | INSTALL | 44 | ||||
-rw-r--r-- | README | 5 | ||||
-rw-r--r-- | cards/altenburg/1.png | bin | 0 -> 3290 bytes | |||
-rw-r--r-- | cards/altenburg/11.png | bin | 0 -> 35606 bytes | |||
-rw-r--r-- | cards/altenburg/13.png | bin | 0 -> 35549 bytes | |||
-rw-r--r-- | cards/altenburg/15.png | bin | 0 -> 34858 bytes | |||
-rw-r--r-- | cards/altenburg/17.png | bin | 0 -> 36882 bytes | |||
-rw-r--r-- | cards/altenburg/19.png | bin | 0 -> 1413 bytes | |||
-rw-r--r-- | cards/altenburg/21.png | bin | 0 -> 3040 bytes | |||
-rw-r--r-- | cards/altenburg/23.png | bin | 0 -> 31774 bytes | |||
-rw-r--r-- | cards/altenburg/25.png | bin | 0 -> 3770 bytes | |||
-rw-r--r-- | cards/altenburg/27.png | bin | 0 -> 1686 bytes | |||
-rw-r--r-- | cards/altenburg/29.png | bin | 0 -> 4210 bytes | |||
-rw-r--r-- | cards/altenburg/3.png | bin | 0 -> 31827 bytes | |||
-rw-r--r-- | cards/altenburg/31.png | bin | 0 -> 33215 bytes | |||
-rw-r--r-- | cards/altenburg/33.png | bin | 0 -> 3785 bytes | |||
-rw-r--r-- | cards/altenburg/35.png | bin | 0 -> 1460 bytes | |||
-rw-r--r-- | cards/altenburg/37.png | bin | 0 -> 3290 bytes | |||
-rw-r--r-- | cards/altenburg/39.png | bin | 0 -> 33674 bytes | |||
-rw-r--r-- | cards/altenburg/41.png | bin | 0 -> 2875 bytes | |||
-rw-r--r-- | cards/altenburg/43.png | bin | 0 -> 1930 bytes | |||
-rw-r--r-- | cards/altenburg/45.png | bin | 0 -> 34900 bytes | |||
-rw-r--r-- | cards/altenburg/47.png | bin | 0 -> 2526 bytes | |||
-rw-r--r-- | cards/altenburg/5.png | bin | 0 -> 29176 bytes | |||
-rw-r--r-- | cards/altenburg/7.png | bin | 0 -> 32567 bytes | |||
-rw-r--r-- | cards/altenburg/9.png | bin | 0 -> 32209 bytes | |||
-rw-r--r-- | cards/altenburg/License | 8 | ||||
-rw-r--r-- | create_database.sql | 1 | ||||
-rw-r--r-- | css/standard.css | 32 | ||||
-rw-r--r-- | db.php | 62 | ||||
-rw-r--r-- | functions.php | 28 | ||||
-rw-r--r-- | index.php | 428 | ||||
-rw-r--r-- | output.php | 41 |
33 files changed, 537 insertions, 112 deletions
@@ -0,0 +1,44 @@ +Installation +------------ + +0) get files + +get all files from + +http://svn.nubati.net/emaildoko/trunk + +1) create database + +create a mysql database using the provided file + +mysql < create_database.sql + +use user, password, database and host option of mysql as needed + +2) create a config.php file that defines the following variables: + +$host : for example "http://localhost/index.php", note: include the index.php here + +database info: + +$DB_host +$DB_user +$DB_password +$DB_database + +you can also turn the debug mode on by defining: +$debug=1; + +this will give some extra output and won't send out emails, but display them in the browser + +If you hvae problem with the timezone, that is an older PHP version, try adding this in config.php + +function date_default_timezone_set($zone) +{ + return; +} + + +3) log in and enjoy ;) + +Arun @@ -0,0 +1,5 @@ +This is eDoKo an browser based Doppelkopf implementation with email +notification. All files are under GPL, the only expection are the +images of the german card deck. These have been provided by ASS +Altenburg GmbH (email: info@spielkarten.com) under a free (as in beer) +license. If you want to use them too you need to email them and sign a license!
\ No newline at end of file diff --git a/cards/altenburg/1.png b/cards/altenburg/1.png Binary files differnew file mode 100644 index 0000000..e224e72 --- /dev/null +++ b/cards/altenburg/1.png diff --git a/cards/altenburg/11.png b/cards/altenburg/11.png Binary files differnew file mode 100644 index 0000000..2face0c --- /dev/null +++ b/cards/altenburg/11.png diff --git a/cards/altenburg/13.png b/cards/altenburg/13.png Binary files differnew file mode 100644 index 0000000..3cbeb63 --- /dev/null +++ b/cards/altenburg/13.png diff --git a/cards/altenburg/15.png b/cards/altenburg/15.png Binary files differnew file mode 100644 index 0000000..a221b30 --- /dev/null +++ b/cards/altenburg/15.png diff --git a/cards/altenburg/17.png b/cards/altenburg/17.png Binary files differnew file mode 100644 index 0000000..7857059 --- /dev/null +++ b/cards/altenburg/17.png diff --git a/cards/altenburg/19.png b/cards/altenburg/19.png Binary files differnew file mode 100644 index 0000000..4f6e5f8 --- /dev/null +++ b/cards/altenburg/19.png diff --git a/cards/altenburg/21.png b/cards/altenburg/21.png Binary files differnew file mode 100644 index 0000000..b9946b8 --- /dev/null +++ b/cards/altenburg/21.png diff --git a/cards/altenburg/23.png b/cards/altenburg/23.png Binary files differnew file mode 100644 index 0000000..f61adab --- /dev/null +++ b/cards/altenburg/23.png diff --git a/cards/altenburg/25.png b/cards/altenburg/25.png Binary files differnew file mode 100644 index 0000000..bb85235 --- /dev/null +++ b/cards/altenburg/25.png diff --git a/cards/altenburg/27.png b/cards/altenburg/27.png Binary files differnew file mode 100644 index 0000000..a8773a5 --- /dev/null +++ b/cards/altenburg/27.png diff --git a/cards/altenburg/29.png b/cards/altenburg/29.png Binary files differnew file mode 100644 index 0000000..63638f9 --- /dev/null +++ b/cards/altenburg/29.png diff --git a/cards/altenburg/3.png b/cards/altenburg/3.png Binary files differnew file mode 100644 index 0000000..048b474 --- /dev/null +++ b/cards/altenburg/3.png diff --git a/cards/altenburg/31.png b/cards/altenburg/31.png Binary files differnew file mode 100644 index 0000000..6ec77c8 --- /dev/null +++ b/cards/altenburg/31.png diff --git a/cards/altenburg/33.png b/cards/altenburg/33.png Binary files differnew file mode 100644 index 0000000..12af7d1 --- /dev/null +++ b/cards/altenburg/33.png diff --git a/cards/altenburg/35.png b/cards/altenburg/35.png Binary files differnew file mode 100644 index 0000000..c7f4c7c --- /dev/null +++ b/cards/altenburg/35.png diff --git a/cards/altenburg/37.png b/cards/altenburg/37.png Binary files differnew file mode 100644 index 0000000..e224e72 --- /dev/null +++ b/cards/altenburg/37.png diff --git a/cards/altenburg/39.png b/cards/altenburg/39.png Binary files differnew file mode 100644 index 0000000..b35fa2b --- /dev/null +++ b/cards/altenburg/39.png diff --git a/cards/altenburg/41.png b/cards/altenburg/41.png Binary files differnew file mode 100644 index 0000000..dffb68a --- /dev/null +++ b/cards/altenburg/41.png diff --git a/cards/altenburg/43.png b/cards/altenburg/43.png Binary files differnew file mode 100644 index 0000000..2f78ffb --- /dev/null +++ b/cards/altenburg/43.png diff --git a/cards/altenburg/45.png b/cards/altenburg/45.png Binary files differnew file mode 100644 index 0000000..4a7a6b4 --- /dev/null +++ b/cards/altenburg/45.png diff --git a/cards/altenburg/47.png b/cards/altenburg/47.png Binary files differnew file mode 100644 index 0000000..242f0d1 --- /dev/null +++ b/cards/altenburg/47.png diff --git a/cards/altenburg/5.png b/cards/altenburg/5.png Binary files differnew file mode 100644 index 0000000..df3ed39 --- /dev/null +++ b/cards/altenburg/5.png diff --git a/cards/altenburg/7.png b/cards/altenburg/7.png Binary files differnew file mode 100644 index 0000000..982a8e8 --- /dev/null +++ b/cards/altenburg/7.png diff --git a/cards/altenburg/9.png b/cards/altenburg/9.png Binary files differnew file mode 100644 index 0000000..738d144 --- /dev/null +++ b/cards/altenburg/9.png diff --git a/cards/altenburg/License b/cards/altenburg/License new file mode 100644 index 0000000..02f0f20 --- /dev/null +++ b/cards/altenburg/License @@ -0,0 +1,8 @@ +Verwendung der ASS Altenburger Spielkartenbilder mit Genehmigung der +Spielkartenfabrik Altenburg GmbH, + +ASS Altenburger +Leipziger Strasse 7, 04600 Altenburg bis zum 31.12.2009 + +Email: info@spielkarten.com +internet: www.spielkarten.com
\ No newline at end of file diff --git a/create_database.sql b/create_database.sql index e4476ef..7508491 100644 --- a/create_database.sql +++ b/create_database.sql @@ -72,6 +72,7 @@ CREATE TABLE `Game` ( `randomnumbers` varchar(136) default NULL, `type` enum('normal','solo','wedding','poverty','dpoverty') default NULL, `solo` enum('trumpless','jack','queen','trump','club','spade','heart','silent') default NULL, + `sickness` int(11) default NULL, `startplayer` tinyint(4) default '1', `status` enum('pre','play','gameover') default NULL, `ruleset` int(11) default NULL, diff --git a/css/standard.css b/css/standard.css index c1ec28b..ca170e0 100644 --- a/css/standard.css +++ b/css/standard.css @@ -223,6 +223,18 @@ ul.tricks li div div.card3 span{ height:6em; } +.exchange { + clear:both; + margin:0; + padding:0; + border:1px solid red; + background-color:yellow; +} + +.exchange img { + height:6em; +} + .line{ clear:both; border-top:2px solid gray; @@ -233,7 +245,8 @@ ul.tricks li div div.card3 span{ .ruleset { position:absolute; - top:7.5em; + top:17.5em; +// top:7.5em; border:2px solid gray; padding:0.3em; margin:0; @@ -247,7 +260,8 @@ ul.tricks li div div.card3 span{ .bug { position:absolute; - top:14.5em; + top:24.5em; +// top:14.5em; width:10em; border:2px solid gray; padding-top:0.5em; @@ -266,4 +280,18 @@ ul.tricks li div div.card3 span{ .submitbutton:hover { background-color:#afa; +} + +.useroptions{ + float:right; + padding-left:0.3em; + border-left: 1px solid #aaa; + border-bottom: 1px solid #aaa; +} +.useroptions h4 { + margin:0.1em; + margin-left:0em; + padding:0.1em; + padding-left:0em; + text-aling:left; }
\ No newline at end of file @@ -7,12 +7,15 @@ function DB_open() { global $DB,$DB_user,$DB_host,$DB_database,$DB_password; - if ( $DB = mysql_connect($DB_host,$DB_user, $DB_password) ) - mysql_select_db($DB_database) or die('Could not select database'); + $DB = @mysql_connect($DB_host,$DB_user, $DB_password); + if ( $DB ) + { + mysql_select_db($DB_database) or die('Could not select database'); + } else - die (mysql_error()); + return -1; - return; + return 0; } function DB_close() @@ -160,6 +163,18 @@ function DB_get_handid_by_gameid_and_position($gameid,$pos) else return -1; } +function DB_get_handid_by_gameid_and_userid($gameid,$userid) +{ + $result = mysql_query("SELECT id FROM Hand WHERE game_id=". + DB_quote_smart($gameid)." AND user_id=". + DB_quote_smart($userid)); + $r = mysql_fetch_array($result,MYSQL_NUM); + + if($r) + return $r[0]; + else + return -1; +} function DB_get_userid_by_hash($hash) { @@ -233,6 +248,22 @@ function DB_set_game_status_by_gameid($id,$status) return; } +function DB_set_sickness_by_gameid($id,$status) +{ + mysql_query("UPDATE Game SET sickness='".$status."' WHERE id=".DB_quote_smart($id)); + return; +} +function DB_get_sickness_by_gameid($id) +{ + $result = mysql_query("SELECT sickness FROM Game WHERE id=".DB_quote_smart($id)); + $r = mysql_fetch_array($result,MYSQL_NUM); + + if($r) + return $r[0]; + else + return NULL; +} + function DB_get_game_status_by_gameid($id) { $result = mysql_query("SELECT status FROM Game WHERE id=".DB_quote_smart($id)); @@ -274,6 +305,18 @@ function DB_get_sickness_by_userid_and_gameid($uid,$gid) return 0; } +function DB_get_sickness_by_pos_and_gameid($pos,$gid) +{ + $result = mysql_query("SELECT sickness FROM Hand WHERE position=".DB_quote_smart($pos). + " AND game_id=".DB_quote_smart($gid)); + $r = mysql_fetch_array($result,MYSQL_NUM); + + if($r) + return $r[0]; + else + return 0; +} + function DB_get_gameid_by_hash($hash) { $result = mysql_query("SELECT game_id FROM Hand WHERE hash=".DB_quote_smart($hash)); @@ -461,6 +504,17 @@ function DB_get_hash_from_game_and_pos($id,$pos) return ""; } +function DB_get_hash_from_gameid_and_userid($id,$user) +{ + $result = mysql_query("SELECT hash FROM Hand WHERE game_id=".DB_quote_smart($id)." and user_id=".DB_quote_smart($user)); + $r = mysql_fetch_array($result,MYSQL_NUM); + + if($r) + return $r[0]; + else + return ""; +} + function DB_get_all_names() { $names = array(); diff --git a/functions.php b/functions.php index ce549c1..cfddbce 100644 --- a/functions.php +++ b/functions.php @@ -415,15 +415,34 @@ function card_value($card) function create_array_of_random_numbers() { + global $debug; + $r = array(); $a = array(); for($i=0;$i<48;$i++) $a[$i]=$i+1; + + if(!$debug) + $r = array_rand($a,48); + else + { + $a[ 0]=1; $a[12]=47; $a[24]=13; $a[36]=37; + $a[ 1]=2; $a[13]=48; $a[25]=14; $a[37]=38; + $a[ 2]=3; $a[14]=27; $a[26]=15; $a[38]=39; + $a[ 3]=4; $a[15]=16; $a[27]=28; $a[39]=40; + $a[ 4]=5; $a[16]=17; $a[28]=29; $a[40]=41; + $a[ 5]=6; $a[17]=18; $a[29]=30; $a[41]=42; + $a[ 6]=7; $a[18]=19; $a[30]=31; $a[42]=43; + $a[ 7]=8; $a[19]=20; $a[31]=32; $a[43]=44; + $a[ 8]=9; $a[20]=45; $a[32]=21; $a[44]=33; + $a[ 9]=10; $a[21]=46; $a[33]=22; $a[45]=34; + $a[10]=11; $a[22]=35; $a[34]=23; $a[46]=25; + $a[11]=12; $a[23]=36; $a[35]=24; $a[47]=26; + } -# $r = array_rand($a,48); - $r =$a; - + $r =$a; + return $r; } @@ -512,6 +531,9 @@ function set_gametype($gametype) switch($gametype) { case "normal": + case "wedding": + case "poverty": + case "dpoverty": case "trump": case "silent": $CARDS["trump"] = array('1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16', @@ -25,7 +25,14 @@ if(0) exit(); } -DB_open(); +if(DB_open()<0) + { + output_header(); + echo "Database error, can't connect..."; + output_footer(); + exit(); + } + output_header(); /* check if we want to start a new game */ @@ -84,20 +91,20 @@ if(myisset("new")) $ruleset = DB_get_ruleset_by_gameid($followup); /* just copy ruleset from old game, this way no manipulation is possible */ if($session) - mysql_query("INSERT INTO Game VALUES (NULL, NULL, '$randomNRstring', 'normal', NULL,'1','pre',". + mysql_query("INSERT INTO Game VALUES (NULL, NULL, '$randomNRstring', 'normal', NULL,NULL,'1','pre',". "'$ruleset','$session' ,NULL)"); else { /* get max session */ $max = DB_get_max_session(); $max++; - mysql_query("INSERT INTO Game VALUES (NULL, NULL, '$randomNRstring', 'normal', NULL,'1','pre',". + mysql_query("INSERT INTO Game VALUES (NULL, NULL, '$randomNRstring', 'normal', NULL,NULL,'1','pre',". "'$ruleset','$max' ,NULL)"); mysql_query("UPDATE Game SET session='".$max."' WHERE id=".DB_quote_smart($followup)); } } else - mysql_query("INSERT INTO Game VALUES (NULL, NULL, '$randomNRstring', 'normal', NULL,'1','pre', ". + mysql_query("INSERT INTO Game VALUES (NULL, NULL, '$randomNRstring', 'normal', NULL,NULL,'1','pre', ". "'$ruleset',NULL ,NULL)"); $game_id = mysql_insert_id(); @@ -219,8 +226,23 @@ else if(myisset("me")) $myname = DB_get_name_by_hash($me); $mystatus = DB_get_status_by_hash($me); $mypos = DB_get_pos_by_hash($me); - + $myhand = DB_get_handid_by_hash($me); + /* get prefs and save them */ + $result = mysql_query("SELECT value from User_Prefs". + " WHERE user_id='$myid' AND pref_key='cardset'" ); + $r = mysql_fetch_array($result,MYSQL_NUM); + if($r) + { + if($r[0]=="germancards" && (time()-strtotime( "2009-12-31 23:59:59")<0) ) /* licence only valid until then */ + $PREF["cardset"]="altenburg"; + else + $PREF["cardset"]="english"; + } + else + $PREF["cardset"]="english"; + + /* get rule set for this game */ $result = mysql_query("SELECT * FROM Rulesets". " LEFT JOIN Game ON Game.ruleset=Rulesets.id ". @@ -316,7 +338,7 @@ else if(myisset("me")) sort($mycards); echo "<p class=\"mycards\" style=\"margin-top:8em;\">your cards are: <br />\n"; foreach($mycards as $card) - display_card($card); + display_card($card,$PREF["cardset"]); echo "</p>\n"; check_for_sickness($me,$mycards); @@ -376,9 +398,7 @@ else if(myisset("me")) } else if($_REQUEST["poverty"] == "yes") { - echo "So you got poverty. You might as well have said nothing, since this is not implemented yet,". - " you need to play a normal game...to make it a bit harder, I'll tell the other people that". - " you only have a few trump... should make the game more interesting (although perhaps not for you:))<br />\n"; + echo "Don't think you can win with just a few trump...? ok, poverty chosen <br />\n"; DB_set_sickness_by_hash($me,"poverty"); } else if($_REQUEST["nines"] == "yes") @@ -401,7 +421,7 @@ else if(myisset("me")) * set that one in the Game table * tell people about it. */ - echo "<br /> Checking if someone else selected solo, nines or wedding... Poverty not handled at the moment<br />"; + echo "<br /> Checking if someone else selected solo, nines or wedding or poverty.<br />"; /* check if everyone has reached this stage */ $userids = DB_get_all_userid_by_gameid($gameid); @@ -429,49 +449,34 @@ else if(myisset("me")) /* check for different sickness and just output a general info */ - /* check for nines */ + $nines = 0; - foreach($userids as $user) - if(DB_get_sickness_by_userid_and_gameid($user,$gameid) == 'nines') - { - $nines = $user; - $name = DB_get_name_by_userid($user); - echo "$name has a Vorbehalt. <br />"; - break; - } - - /* check players for poverty */ $poverty = 0; + $wedding = 0; + $solo = 0; foreach($userids as $user) { - if(DB_get_sickness_by_userid_and_gameid($user,$gameid) == 'poverty') + $name = DB_get_name_by_userid($user); + $usersick = DB_get_sickness_by_userid_and_gameid($user,$gameid); + if($usersick == 'nines') + { + $nines = $user; + echo "$name has a Vorbehalt. <br />"; + break; + } + else if($usersick == 'poverty') { $poverty++; - $name = DB_get_name_by_userid($user); echo "$name has a Vorbehalt. <br />"; } - } - - /* check players for wedding */ - $wedding = 0; - foreach($userids as $user) - { - if(DB_get_sickness_by_userid_and_gameid($user,$gameid) == 'wedding') + else if($usersick == 'wedding') { $wedding=$user; - $name = DB_get_name_by_userid($user); echo "$name has a Vorbehalt. <br />" ; } - }; - - /* check for solo, output vorbehalt */ - $solo = 0; - foreach($userids as $user) - { - if(DB_get_sickness_by_userid_and_gameid($user,$gameid) == 'solo') + else if($usersick == 'solo') { $solo++; - $name = DB_get_name_by_userid($user); echo "$name has a Vorbehalt. <br />" ; } } @@ -508,17 +513,41 @@ else if(myisset("me")) output_footer(); exit(); } - else if($poverty==1 && $gametype !="poverty") + else if($poverty==1) { DB_set_gametype_by_gameid($gameid,"poverty"); $gametype = "poverty"; + $who=DB_get_sickness_by_gameid($gameid); + if(!$who) + { + $firstsick = DB_get_sickness_by_pos_and_gameid(1,$gameid); + if($firstsick == "poverty") + DB_set_sickness_by_gameid($gameid,2); /* who needs to be asked first */ + else + DB_set_sickness_by_gameid($gameid,1); /* who needs to be asked first */ + } } - else if($poverty==2 && $gametype !="dpoverty") + else if($poverty==2) { DB_set_gametype_by_gameid($gameid,"dpoverty"); $gametype = "dpoverty"; + $who=DB_get_sickness_by_gameid($gameid); + if(!$who) + { + $firstsick = DB_get_sickness_by_pos_and_gameid(1,$gameid); + if($firstsick == "poverty") + { + $seconsick = DB_get_sickness_by_pos_and_gameid(1,$gameid); + if($secondsick == "poverty") + DB_set_sickness_by_gameid($gameid,30); /* who needs to be asked first */ + else + DB_set_sickness_by_gameid($gameid,20); /* who needs to be asked first */ + } + else + DB_set_sickness_by_gameid($gameid,10); /* who needs to be asked first */ + } } - else if($wedding> 0 && $gametype !="wedding") + else if($wedding> 0) { DB_set_gametype_by_gameid($gameid,"wedding"); $gametype = "wedding"; @@ -541,7 +570,7 @@ else if(myisset("me")) $usersick = DB_get_sickness_by_userid_and_gameid($user,$gameid); if($usersick) - echo "$name has $usersick <br />"; /*TODO: perhaps save this in a string and store in Game? */ + echo "$name has $usersick. <br />"; /*TODO: perhaps save this in a string and store in Game? */ if($usersick=="poverty") $poverty++; @@ -596,26 +625,206 @@ else if(myisset("me")) DB_set_hand_status_by_hash($me,'play'); break; case "poverty": - /* use extra column in DB.Game to store whom to ask, - * should be set for poverty and dpoverty(use two digits for dpoverty?) earlier*/ - + case "dpoverty": /* check if poverty resolved (e.g. DB.Game who set to NULL) * yes? =>trump was taken, start game; break; - * - * check if we are being asked now - * no, display wait message, e.g. player X is asked at the moment + */ + $who=DB_get_sickness_by_gameid($gameid); + if($who<0) + { /* trump has been taken */ + 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 + */ + $usersick = DB_get_sickness_by_userid_and_gameid($myid,$gameid); + if(myisset("trump") && $_REQUEST["trump"]=="no" && ($who==$mypos || $who==$mypos*10)) + { + /* user doesn't want to take trump */ + /* set next player who needs to be asked */ + $firstsick = DB_get_sickness_by_pos_and_gameid($mypos+1,$gameid); + $secondsick = DB_get_sickness_by_pos_and_gameid($mypos+2,$gameid); + if($firstsick!="poverty") + DB_set_sickness_by_gameid($gameid,$who+$add); + else + { + if($secondsick!="poverty") + DB_set_sickness_by_gameid($gameid,$who+$add*2); + else + DB_set_sickness_by_gameid($gameid,$who+$add*3); + }; + + /* this user is done */ + DB_set_hand_status_by_hash($me,'play'); + break; + } + else if(myisset("trump") && !myisset("exchange") && $_REQUEST["trump"]>0 && ($who==$mypos || $who==$mypos*10)) + { + /* user wants to take trump */ + $trump = $_REQUEST["trump"]; + + /* get hand id for user $trump */ + $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'" ); + + /* set re/contra, if it is not already set */ + $party = DB_get_party_by_hash($me); + if(!$party) + { + foreach($userids as $user) + { + $hash = DB_get_hash_from_gameid_and_userid($gameid,$user); + if($user == $trump || $user == $myid) + DB_set_party_by_hash($hash,"re"); + else + DB_set_party_by_hash($hash,"contra"); + } + } + /* add hidden button with trump in it to get to the next point */ + echo "<form action=\"index.php\" method=\"post\">\n"; + echo " <input type=\"hidden\" name=\"exchange\" value=\"-1\" />\n"; + echo " <input type=\"hidden\" name=\"trump\" value=\"".$trump."\" />\n"; + echo " <input type=\"hidden\" name=\"me\" value=\"".$me."\" />\n"; + echo " <input type=\"submit\" class=\"submitbutton\" value=\"select cards to give back\" />\n"; + echo "</form>\n"; + } + else if(myisset("trump","exchange") && $_REQUEST["trump"]>0 && ($who==$mypos || $who==$mypos*10)) + { + $trump = $_REQUEST["trump"]; + $exchange = $_REQUEST["exchange"]; + $userhand = DB_get_handid_by_gameid_and_userid($gameid,$trump); + + echo "you give $exchange to your partner"; + + /* if exchange is set to a value>0, exchange that card back to user $trump */ + if($exchange >0) + { + $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); + if(!$r) + { + die("error in poverty"); + }; + if($r[0]==12) + { + if($gametype=="poverty" || $who<9) + { + DB_set_sickness_by_gameid($gameid,-1); /* done with poverty */ + } + else /* reduce poverty count by one, that is go to single digits $who */ + { + $add=1; + $who=$who/10; + + $firstsick = DB_get_sickness_by_pos_and_gameid($mypos+1,$gameid); + $secondsick = DB_get_sickness_by_pos_and_gameid($mypos+2,$gameid); + if($firstsick!="poverty") + DB_set_sickness_by_gameid($gameid,$who+$add); + else + { + if($secondsick!="poverty") + DB_set_sickness_by_gameid($gameid,$who+$add*2); + else + DB_set_sickness_by_gameid($gameid,$who+$add*3); + }; + } + + /* this user is done */ + DB_set_hand_status_by_hash($me,'play'); + /* and so is his partner */ + $hash = DB_get_hash_from_gameid_and_userid($gameid,$trump); + DB_set_hand_status_by_hash($hash,'play'); + + break; + } + else + { + /* else show all trump, have lowest card pre-selected, have hidden setting for */ + echo "you need to get rid of a few cards<br />\n"; + + set_gametype($gametype); /* this sets the $CARDS variable */ + $mycards = DB_get_hand($me); + $mycards = mysort($mycards,$gametype); + + echo "<form class=\"exchange\" action=\"index.php\" method=\"post\">\n"; + $type="exchange"; + foreach($mycards as $card) + display_link_card($card,$PREF["cardset"],$type); + echo " <input type=\"hidden\" name=\"trump\" value=\"".$trump."\" />\n"; + echo " <input type=\"hidden\" name=\"me\" value=\"".$me."\" />\n"; + echo " <input type=\"submit\" class=\"submitbutton\" value=\"select one card to give back\" />\n"; + echo "</form>\n"; + } + } + else if($who == $mypos || $who == $mypos*10) + { + foreach($userids as $user) + { + $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); + $cards=DB_get_hand($hash); + $nrtrump=count_trump($cards); + /* count trump */ + if($nrtrump<4) + echo "Player $name has $nrtrump trump. Do you want to take them?". + "<a href=\"index.php?me=$me&trump=$user\">yes</a> <br />"; + } + } + echo "I don't want to take any trump: ". + "<a href=\"index.php?me=$me&trump=no\">yes</a> <br />"; + } + else + { + echo "it's not your turn yet to decide if you want to take the trump or not."; + } + /* * yes, display number of trump and user's hand, ask if he wants to take it * no, set whom-to-ask to next player, email next player, cancle game if no next player * yes -> link to new page:display all cards, ask for N return cards * set re/contra * */ - case "dpoverty": - echo "TODO: handle poverty here (almost done in my developing version)"; - DB_set_hand_status_by_hash($me,'play'); }; } - + /* check if noone wanted to take trump, in that case the gamesickness would be set to 5 or 50 */ + $who=DB_get_sickness_by_gameid($gameid); + if($who==5 || $who==50) + { + $message = "Hello, \n\n". + "Game $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 cancled (poverty not resolved)",$message); + } + + /* delete everything from the dB */ + DB_cancel_game($me); + + echo "<p style=\"background-color:red\";>Game $gameid has been cancled.<br /><br /></p>"; + output_footer(); + exit(); + } + /* check if all players are ready to play */ $ok=1; foreach($userids as $user) @@ -789,7 +998,7 @@ else if(myisset("me")) echo " <span class=\"comment\">".$comment."</span>\n"; echo " "; - display_card($r[0]); + display_card($r[0],$PREF["cardset"]); echo " </div>\n"; /* end div card */ @@ -878,7 +1087,7 @@ else if(myisset("me")) /* display played card */ echo "<div class=\"card\">"; echo " you played <br />"; - display_card($card); + display_card($card,$PREF["cardset"]); echo "</div>\n"; /*check if we still have cards left, else set status to gameover */ @@ -1019,9 +1228,9 @@ else if(myisset("me")) foreach($mycards as $card) { if($followsuit && !same_type($card,$firstcard)) - display_card($card); + display_card($card,$PREF["cardset"]); else - display_link_card($card); + display_link_card($card,$PREF["cardset"]); } echo "<br />\nA short comments:<input name=\"comment\" type=\"text\" size=\"30\" maxlength=\"50\" />\n"; @@ -1033,7 +1242,7 @@ else if(myisset("me")) { echo "Your cards are: <br />\n"; foreach($mycards as $card) - display_card($card); + display_card($card,$PREF["cardset"]); } else if($mystatus=='gameover') { @@ -1041,7 +1250,7 @@ else if(myisset("me")) $oldcards = mysort($oldcards,$gametype); echo "Your cards were: <br />\n"; foreach($oldcards as $card) - display_card($card); + display_card($card,$PREF["cardset"]); } echo "</div>\n"; @@ -1129,6 +1338,7 @@ else if(myisset("me")) } else { + /* verify password and email */ if(strlen($password)!=32) $password = md5($password); @@ -1139,46 +1349,70 @@ else if(myisset("me")) if($ok) { - $time = DB_get_user_timestamp($uid); - $unixtime =strtotime($time); - - $offset = DB_get_user_timezone($uid); - $zone = return_timezone($offset); - date_default_timezone_set($zone); - - echo "last login: ".date("r",$unixtime)."<br />"; - - DB_update_user_timestamp($uid); - - echo "<p>these are the games you are playing in:<br />\n"; - $result = mysql_query("SELECT Hand.hash,Hand.game_id,Game.mod_date from Hand". - " LEFT JOIN Game On Hand.game_id=Game.id". - " WHERE Hand.user_id='$uid' AND Game.status<>'gameover'" ); - while( $r = mysql_fetch_array($result,MYSQL_NUM)) + if(myisset("setpref")) + { + $setpref=$_REQUEST["setpref"]; + switch($setpref) + { + case "germancards": + case "englishcards": + $result = mysql_query("SELECT * from User_Prefs". + " WHERE user_id='$uid' AND pref_key='cardset'" ); + if( mysql_fetch_array($result,MYSQL_NUM)) + $result = mysql_query("UPDATE User_Prefs SET value=".DB_quote_smart($setpref). + " WHERE user_id='$uid' AND pref_key='cardset'" ); + else + $result = mysql_query("INSERT INTO User_Prefs VALUES(NULL,'$uid','cardset',".DB_quote_smart($setpref).")"); + echo "Ok, changed you preferences for the cards.\n"; + break; + } + } + else /* output default user page */ { - echo "<a href=\"".$host."?me=".$r[0]."\">game #".$r[1]." </a>"; - if(time()-strtotime($r[2]) > 60*60*24*30) - echo " The game has been running for over a month.". - " Do you want to cancel it? <a href=\"$host?cancle=1&me=".$r[0]."\">yes</a>". - " (clicking here is final and can't be restored)"; - echo "<br />"; + $time = DB_get_user_timestamp($uid); + $unixtime =strtotime($time); + + $offset = DB_get_user_timezone($uid); + $zone = return_timezone($offset); + date_default_timezone_set($zone); + + /* display links to settings */ + output_user_settings($email,$password); + + echo "last login: ".date("r",$unixtime)."<br />"; + + DB_update_user_timestamp($uid); + + echo "<p>these are the games you are playing in:<br />\n"; + $result = mysql_query("SELECT Hand.hash,Hand.game_id,Game.mod_date from Hand". + " LEFT JOIN Game On Hand.game_id=Game.id". + " WHERE Hand.user_id='$uid' AND Game.status<>'gameover'" ); + while( $r = mysql_fetch_array($result,MYSQL_NUM)) + { + echo "<a href=\"".$host."?me=".$r[0]."\">game #".$r[1]." </a>"; + if(time()-strtotime($r[2]) > 60*60*24*30) + echo " The game has been running for over a month.". + " Do you want to cancel it? <a href=\"$host?cancle=1&me=".$r[0]."\">yes</a>". + " (clicking here is final and can't be restored)"; + echo "<br />"; + } + echo "</p>\n"; + + + echo "<p>and these are your games that are already done:<br />Game: \n"; + $result = mysql_query("SELECT hash,game_id from Hand WHERE user_id='$uid' AND status='gameover'" ); + while( $r = mysql_fetch_array($result,MYSQL_NUM)) + echo "<a href=\"".$host."?me=".$r[0]."\">#".$r[1]." </a>, "; + echo "</p>\n"; + + $names = DB_get_all_names(); + echo "<p>registered players:<br />\n"; + foreach ($names as $name) + echo "$name, \n"; + echo "</p>\n"; + + echo "<p>Want to start a new game? Visit <a href=\"".$host."?new\">this page.</a></p>"; } - echo "</p>\n"; - - - echo "<p>and these are your games that are already done:<br />Game: \n"; - $result = mysql_query("SELECT hash,game_id from Hand WHERE user_id='$uid' AND status='gameover'" ); - while( $r = mysql_fetch_array($result,MYSQL_NUM)) - echo "<a href=\"".$host."?me=".$r[0]."\">#".$r[1]." </a>, "; - echo "</p>\n"; - - $names = DB_get_all_names(); - echo "<p>registered players:<br />\n"; - foreach ($names as $name) - echo "$name, \n"; - echo "</p>\n"; - - echo "<p>Want to start a new game? Visit <a href=\"".$host."?new\">this page.</a></p>"; } else { @@ -25,6 +25,31 @@ function output_link_to_user_page($email,$password) return; } +function output_user_settings($email,$password) +{ + echo "<div class=\"useroptions\">\n"; + echo "<h4> Settings </h4>\n"; + echo "<form action=\"index.php\" method=\"post\">\n"; + echo " <input type=\"hidden\" name=\"email\" value=\"".$email."\" />\n"; + echo " <input type=\"hidden\" name=\"password\" value=\"".$password."\" />\n"; + echo " <input type=\"submit\" class=\"submitbutton\" name=\"passwd\" value=\"change password\" /> <br />\n"; + echo "</form>\n"; + echo "<form action=\"index.php\" method=\"post\">\n"; + echo " <input type=\"hidden\" name=\"email\" value=\"".$email."\" />\n"; + echo " <input type=\"hidden\" name=\"password\" value=\"".$password."\" />\n"; + echo " <input type=\"hidden\" name=\"setpref\" value=\"englishcards\" />\n"; + echo " <input type=\"submit\" class=\"submitbutton\" value=\"use english cards\" /> <br />\n"; + echo "</form>\n"; + echo "<form action=\"index.php\" method=\"post\">\n"; + echo " <input type=\"hidden\" name=\"email\" value=\"".$email."\" />\n"; + echo " <input type=\"hidden\" name=\"password\" value=\"".$password."\" />\n"; + echo " <input type=\"hidden\" name=\"setpref\" value=\"germancards\" />\n"; + echo " <input type=\"submit\" class=\"submitbutton\" value=\"use german cards\" /> <br />\n"; + echo "</form>\n"; + echo "</div>\n"; + return; +} + function output_register() { echo "IMPORTANT: passwords are going over the net as clear text, so pick an easy password. No need to pick anything complicated here ;)<br /><br />"; @@ -144,12 +169,12 @@ function display_card($card,$dir="english") return; } -function display_link_card($card,$dir="english") +function display_link_card($card,$dir="english",$type="card") { if( $card/2 - (int)($card/2) == 0.5) - echo "<input type=\"radio\" name=\"card\" value=\"".$card."\" /><img src=\"cards/".$dir."/".$card.".png\" alt=\"\" />\n"; + echo "<input type=\"radio\" name=\"".$type."\" value=\"".$card."\" /><img src=\"cards/".$dir."/".$card.".png\" alt=\"\" />\n"; else - echo "<input type=\"radio\" name=\"card\" value=\"".$card."\" /><img src=\"cards/".$dir."/".($card-1).".png\" alt=\"\" />\n"; + echo "<input type=\"radio\" name=\"".$type."\" value=\"".$card."\" /><img src=\"cards/".$dir."/".($card-1).".png\" alt=\"\" />\n"; return; } @@ -319,11 +344,15 @@ function output_header() function output_footer() { - global $REV; + global $REV,$PREF; echo "<div class=\"footer\">\n"; - echo "<p class=\"left\"> copyright 2006-2007 Arun Persaud</p>\n"; - echo "<p class=\"right\"> Revision: $REV; <a href=\"http://svn.nubati.net/emaildoko/trunk/\">http://svn.nubati.net/emaildoko/trunk/</a></p> \n"; + echo "<p class=\"left\"> copyright 2006-2007 Arun Persaud <br />\n". + "Verwendung der [deutschen] Kartenbilder mit Genehmigung der Spielkartenfabrik Altenburg GmbH,(c) ASS Altenburger <br />". + "- ASS Altenburger Spielkarten - Spielkartenfabrik Altenburg GmbH <br />". + "a Carta Mundi Company Email: info@spielkarten.com Internet: www.spielkarten.com</p>\n"; + echo "<p class=\"right\"> Revision: $REV; <a href=\"http://svn.nubati.net/emaildoko/trunk/\">". + "http://svn.nubati.net/emaildoko/trunk/</a></p> \n"; echo "\n"; echo "</div>\n"; |