"; } include (ROOT . "/ads/adlocale.php"); $ad["shogi"] = "\n"; $ad["xiangqi"] = "\n"; $ad["play"] = "\n"; $ad["hexchessglinski"] = "\n"; function showad ($itemid, $type, $linkid) { global $ad, $bot, $mobile, $adlocale; if ($bot) return; $linkid = strtolower($linkid); if (($linkid == "chessrules") && (!empty($ad["chessbooks"]))) weightad ("chessbooks", 15); if (isset($ad[$itemid])) weightad ($itemid, 15); elseif (isset($ad[$linkid])) weightad($linkid, 10); if ($type == "Game") { $ad["fav"] = "\n"; weightad ("fav", 5); } else weightad ("play", 5); if (!empty($itemid) && ($type == "override")) $key = $itemid; else $key = array_rand($ad); // echo "
"; // print_r($ad); // echo $linkid; // echo "
"; if ($mobile) printf ("
"); else printf ("
"); echo $ad[$key]; echo "
\n"; } if (!$googleokay) { } elseif ($mobile) { $ad["google"] = << AD; weightad("google", 6); } else { /* $ad["google"] = << AD; */ $ad["google"] = << ADZ; } $adtype = ($mobile) ? "mobile" : "banner"; // include_once ROOT . "/ads/staunton-{$adtype}-ads.php"; if ($itemid != "HomepageofTheChe") { if ($adlocale) { include_once ROOT . "/ads/{$localename[$adlocale]}-{$adtype}-ads.php"; } elseif ($googleokay) weightad ("google", 5); } echo ""; ?> id = $row["ItemID"]; $this->text = get_field("LinkText", "IndexEntry", "ItemID", $this->id); if (empty($this->text)) $this->text = $row["Summary"]; /* if (fnmatch("*.php*", $this->url)) $this->type = "script"; elseif ((substr($this->url, -1) == "/") || (substr($this->url, -11) == "/index.html")) $this->type = "index"; else */ $this->type = $row["Type"]; $this->membersubmitted = $row["IsMemberSubmitted"]; $this->locked = $row["IsLocked"]; $this->featured = $row["IsPrimary"]; $this->url = make_link_url($row, true); /* if ($this->membersubmitted) $this->url = "/index/msdisplay.php?itemid={$this->id}"; elseif (($this->type == "Zillions") && fnmatch("*.zip", $row["URL"])) $this->url = "/index/zillions.php?itemid={$this->id}"; elseif (fnmatch("https://*", $row["URL"])) $this->url = "/index/external.php?itemid={$this->id}"; else $this->url = $row["URL"]; */ if ($this->type == "Jocly") $this->text .= " with Jocly"; elseif ($this->type == "Zillions") $this->text .= " with Zillions-of-Games"; elseif ($this->type == "Game") $this->text = "Rules of " . $this->text; elseif (($this->type == "PBM") && empty($row["IsLink"])) $this->text .= " on Game Courier"; } else { $this->id = $id; $this->url = $u; $this->text = $txt; $this->type = $typ; $this->membersubmitted = 0; $this->locked = 0; } $this->icon = get_icon($this->type, $this->membersubmitted, $this->locked); } public function __toString () { $icon = "icon}\" ALIGN=\"LEFT\" WIDTH=16 HEIGHT=16>"; if (strncmp($this->url, "http", 4) == 0) return sprintf ("
  • %s %s
  • \n", $icon, $this->url, $this->text); elseif (strncmp($this->url, "play/", 5) == 0) return sprintf ("
  • %s %s
  • \n", $icon, substr($this->url, 5), $this->text); else return sprintf ("
  • %s %s
  • \n", $icon, $this->url, $this->text); } } function linkcmp ($a, $b) { $cmp = strcmp($a->type, $b->type); if ($cmp == 0) $cmp = strnatcmp($a->text, $b->text); return $cmp; } function maxlen ($ra) { $len = 0; foreach ($ra as $link) { $len = max($len, strlen($link->text)); } return $len; } class personlink { public $personid; public $dispname; public $lastname; public $firstname; public function __construct ($u) { if (is_array($u)) { //should always be an array? $row = $u; $this->personid = $row["PersonID"]; $this->lastname = $row["LastName"]; $this->firstname= $row["FirstName"]; $this->dispname = $this->firstname . " " . $this->lastname; if ($this->dispname ==" ") { $this->dispname = $this->personid; } } } public function __toString () { $icon = sprintf (""); return sprintf ("
  • %s %s
  • \n", $icon, $this->personid, $this->dispname); } } function personlinkcmp ($a, $b) { $cmp = strcasecmp($a->lastname, $b->lastname); if ($cmp == 0) { $cmp = strcasecmp($a->firstname, $b->firstname); if ($cmp == 0) { $cmp = strcasecmp($a->dispname, $b->dispname); } } return $cmp; } function personmaxlen ($ra) { $len = 0; foreach ($ra as $link) { $len = max($len, strlen($link->dispname)); } return $len; } $prime = $second = $followers = $remote = $cat = $external = $favorites = $favedby = array(); if ($itemid) { if ($row = table_row("Item", "ItemID", $itemid)) { $type = $row["Type"]; $chessv = $row["Chessv"]; $categories = $row["Categories"]; $authorid = $row["AuthorID"]; $inventorid = $row["InventorID"]; $authorid2 = $row["AuthorID2"]; $inventorid2= $row["InventorID2"]; $linkid = $row["LinkItemID"]; $linkid2 = $row["LinkItemID2"]; $summary = $row["Summary"]; $featured = $row["IsPrimary"]; $membersubmitted = $row["IsMemberSubmitted"]; $locked = $row["IsLocked"]; if ($linkid != "") { $stmt = $dbh->prepare("SELECT * FROM Item WHERE LinkItemID=:group"); $stmt->bindValue(":group", $linkid); if ($stmt->execute()) { while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { if (($row["ItemID"] != $itemid) && empty($row["IsDeleted"]) && empty($row["IsHidden"]) && empty($row["IsBrokenLink"])) { if (is_external($row["URL"])) $external[] = new link ($row); else $prime[] = new link ($row); } } usort ($prime, "linkcmp"); } $stmt = $dbh->prepare("SELECT * FROM Item WHERE LinkItemID2=:group"); $stmt->bindValue(":group", $linkid); if ($stmt->execute()) { while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { if (($row["ItemID"] != $itemid) && empty($row["IsDeleted"]) && empty($row["IsHidden"]) && empty($row["IsBrokenLink"])) { if (is_external($row["URL"])) $external[] = new link ($row); else $followers[] = new link ($row); } } usort ($followers, "linkcmp"); } } if ($linkid2 != "") { $stmt = $dbh->prepare("SELECT * FROM Item WHERE LinkItemID=:group"); $stmt->bindValue(":group", $linkid2); if ($stmt->execute()) { while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { if (($row["ItemID"] != $itemid) && empty($row["IsDeleted"]) && empty($row["IsHidden"]) && empty($row["IsBrokenLink"])) { if (is_external($row["URL"])) $external[] = new link ($row); else $second[] = new link ($row); } } usort ($second, "linkcmp"); } $stmt = $dbh->prepare("SELECT * FROM Item WHERE LinkItemID2 = :group2 AND LinkItemID != :group"); $stmt->bindValue(":group", $linkid); $stmt->bindValue(":group2", $linkid2); if ($stmt->execute()) { while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { if (($row["ItemID"] != $itemid) && empty($row["IsDeleted"]) && empty($row["IsHidden"]) && empty($row["IsBrokenLink"])) { if (is_external($row["URL"])) $external[] = new link ($row); else $remote[] = new link ($row); } } usort ($remote, "linkcmp"); } } /* if ($inventorid != "") { $stmt = $dbh->prepare("SELECT * FROM Item WHERE InventorID=? OR InventorID2=? ORDER BY Summary"); if ($stmt->execute(array($inventorid, $inventorid))) { while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { if (($row["IsDeleted"] == 0) && ($row["IsHidden"] == 0) && ($row["IsBrokenLink"] == 0) && ($row["Type"] == "Game") && ($row["ItemID"] != $itemid)) $inventions[] = new link ($row); } } // usort ($inventions, "linkcmp"); } if ($inventorid2 != "") { $stmt = $dbh->prepare("SELECT * FROM Item WHERE InventorID=? OR InventorID2=? ORDER BY Summary"); if ($stmt->execute(array($inventorid2, $inventorid2))) { while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { if (($row["IsDeleted"] == 0) && ($row["IsHidden"] == 0) && ($row["IsBrokenLink"] == 0) && ($row["Type"] == "Game") && ($row["ItemID"] != $itemid)) $inventions2[] = new link ($row); } } // usort ($inventions2, "linkcmp"); } */ if (!empty($categories)) { $catarray = explode(",", $categories); foreach ($catarray as $c) { $cat[] = new link ("index/mainquery.php?type=Any&category={$c}&orderby=LinkText&displayauthor=1&displayinventor=1", ucfirst($c), "script"); } } if (!empty($external)) usort ($external, "linkcmp"); } } else { $type = ""; } $fav = false; $stmt = $dbh->prepare("SELECT * FROM Item JOIN Favorites ON Item.ItemID = Favorites.ItemID WHERE Favorites.PersonID = :personid ORDER BY Summary"); $stmt->bindValue(":personid", $personid); if ($stmt->execute()) { while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { // if (($row["IsDeleted"] == 0) && ($row["IsHidden"] == 0) && ($row["IsBrokenLink"] == 0) && ($row["Type"] == "Game")) $favorites[] = new link ($row); if ($itemid == $row["ItemID"]) $fav = true; } } $stmt = $dbh->prepare("SELECT * FROM Person JOIN Favorites ON Person.PersonID = Favorites.PersonID WHERE Favorites.ItemID = :itemid ORDER BY LastName"); $stmt->bindValue(":itemid", $itemid); if ($stmt->execute()) { while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { $favedby[] = new personlink ($row); } } ?>
    The Chess Variant Pages
    Custom Search
    if (window.canShowAds === undefined) document.writeln("

    Ad Blocker Detected! Please check out our Advertising policy for reasons to unblock this site, and please check out our affiliate links to Amazon and eBay in the Shop menu below.

    "); TXT; echo "
    "; } ?> "; if (!isset($itemid)) showad("","",""); elseif (!isset($type)) showad($itemid, "", ""); elseif (!isset($linkid)) showad($itemid, $type, ""); else showad($itemid, $type, $linkid); } ?>


    Custom Search
    %s. ", $inventorid, personid2name($inventorid)); elseif ((($authorid == $inventorid) || ($authorid == $inventorid2)) && empty($authorid2) && !empty($inventorid2)) $byline = sprintf ("This page is written by one of the game's inventor, %s. ", $authorid, personid2name($authorid)); elseif ((($authorid == $inventorid) || ($authorid == $inventorid2)) && (($authorid2 == $inventorid) || ($authorid2 == $inventorid2))) $byline = sprintf ("This page is written by both of the game's inventors, %s and %s. ", $inventorid, personid2name($inventorid), $inventorid2, personid2name($inventorid2)); if (is_favorite($inventorid, $itemid)) { if (!empty($inventorid2)) { if (is_favorite($inventorid2, $itemid)) $byline .= "This game is a favorite of both of its inventors."; else $byline .= sprintf("This game is a favorite of one of its inventors, %s.", $inventorid, personid2name($inventorid)); } else $byline .= "This game is a favorite of its inventor."; } if (!empty($byline)) echo "
    {$byline}


    "; } elseif (!empty($type) && ($type == "Piececlopedia")) printf ("

    The Piececlopedia is intended as a scholarly reference concerning the history and naming conventions of pieces used in Chess variants. But it is not a set of standards concerning what you must call pieces in newly invented games.
    "); } $itemid = $originalid; // Change back for scripts that use $itemid if (!empty($featured) && ($type == "Game")) echo "

    This is one of our Featured Games. Click the link to check out our others.

    \n"; $ruri = getenv("REQUEST_URI"); if ((fnmatch("*/erf/*", $ruri) || fnmatch("*/coffeecc/*", $ruri))): ?>

    Recent versions of Chrome, Firefox, and Edge do not support Java. Internet Explorer and Safari should still support it. Besides that, recent versions of Java will block this script unless you add https://www.chessvariants.com to your Java exceptions list. You should find this in the Security tab of your Java control panel.

    The Murray Lion

    In A History of Chess, chess historian H. J. R. Murray gives an incorrect description of the movement of the Lion in Chu Shogi. However, this Lion is a rather interesting piece. Author John William Brown of the book Meta Chess named this pieces the Murray Lion, both to honor Murray and to distinguish it from the actual Chu Shogi Lion.

    Movement

    The Murray Lion may leap to the second orthogonal square or the second diagonal square - with or without capturing. It may also move to any adjacent square - but only to capture.
    Written by John William Brown and Hans Bodlaender.
    WWW page created: February 9, 1999.