cl-ggp/reference/index.html @ 621ae61499ab
cl-ggp: Update site.
author |
Steve Losh <steve@stevelosh.com> |
date |
Wed, 23 Mar 2016 16:24:01 +0000 |
parents |
(none) |
children |
641956c66398 |
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title> API Reference / cl-ggp</title>
<link rel="stylesheet" href="../_dmedia/bootstrap.css"/>
<link rel="stylesheet" href="../_dmedia/tango.css"/>
<link rel="stylesheet/less" type="text/css" href="../_dmedia/style.less"/>
<script src="../_dmedia/less.js" type="text/javascript">
</script>
</head>
<body class="content">
<div class="wrap">
<header><h1><a href="..">cl-ggp</a></h1></header>
<div class="markdown">
<h1 id="api-reference"><a href="">API Reference</a></h1><p>The following is a list of all user-facing parts of <code>cl-ggp</code>.</p>
<p>If there are backwards-incompatible changes to anything listed here, they will
be noted in the changelog and the author will feel bad.</p>
<p>Anything not listed here is subject to change at any time with no warning, so
don't touch it.</p>
<div class="toc">
<ul>
<li><a href="#package-ggp">Package GGP</a><ul>
<li><a href="#ggp-player-class">GGP-PLAYER (class)</a><ul>
<li><a href="#slot-name">Slot NAME</a></li>
<li><a href="#slot-port">Slot PORT</a></li>
<li><a href="#slot-current-match">Slot CURRENT-MATCH</a></li>
<li><a href="#slot-server">Slot SERVER</a></li>
</ul>
</li>
<li><a href="#kill-player-function">KILL-PLAYER (function)</a></li>
<li><a href="#player-select-move-generic-function">PLAYER-SELECT-MOVE (generic function)</a></li>
<li><a href="#player-start-game-generic-function">PLAYER-START-GAME (generic function)</a></li>
<li><a href="#player-stop-game-generic-function">PLAYER-STOP-GAME (generic function)</a></li>
<li><a href="#player-update-game-generic-function">PLAYER-UPDATE-GAME (generic function)</a></li>
<li><a href="#start-player-function">START-PLAYER (function)</a></li>
</ul>
</li>
</ul></div>
<h2 id="package-ggp">Package GGP</h2>
<h3 id="ggp-player-class">GGP-PLAYER (class)</h3>
<p>The base class for a GGP player. Custom players should extend this.</p>
<h4 id="slot-name">Slot NAME</h4>
<ul>
<li>Allocation: INSTANCE</li>
<li>Type: <code>STRING</code></li>
<li>Reader: <code>PLAYER-NAME</code></li>
</ul>
<p>The name of the player.</p>
<h4 id="slot-port">Slot PORT</h4>
<ul>
<li>Allocation: INSTANCE</li>
<li>Type: <code>(INTEGER 0)</code></li>
<li>Reader: <code>PLAYER-PORT</code></li>
</ul>
<p>The port the HTTP server should listen on.</p>
<h4 id="slot-current-match">Slot CURRENT-MATCH</h4>
<ul>
<li>Allocation: INSTANCE</li>
</ul>
<p>The ID of the current match the player is playing, or <code>nil</code> if it is waiting. <strong>Do not touch this.</strong></p>
<h4 id="slot-server">Slot SERVER</h4>
<ul>
<li>Allocation: INSTANCE</li>
</ul>
<p>The Clack server object of the player. <strong>Do not touch this.</strong> Use <code>start-player</code> and <code>kill-player</code> to start/stop the server safely.</p>
<h3 id="kill-player-function">KILL-PLAYER (function)</h3>
<div class="codehilite"><pre>(KILL-PLAYER PLAYER)
</pre></div>
<p>Kill the HTTP server for the given player.</p>
<p>This will <strong>not</strong> be done gently. No cleanup will be performed if the player
is in the middle of a game. Be careful.</p>
<h3 id="player-select-move-generic-function">PLAYER-SELECT-MOVE (generic function)</h3>
<div class="codehilite"><pre>(PLAYER-SELECT-MOVE PLAYER)
</pre></div>
<p>Called when it's time for the player to select a move to play.</p>
<p>Must return a list/symbol of the GDL move to play. Note that any symbols in
the move should be ones that are interned in the <code>GGP</code> package. The author is
aware that this sucks and welcomes suggestions on how to make it less awful.</p>
<h3 id="player-start-game-generic-function">PLAYER-START-GAME (generic function)</h3>
<div class="codehilite"><pre>(PLAYER-START-GAME PLAYER RULES ROLE START-CLOCK PLAY-CLOCK)
</pre></div>
<p>Called when the game is started.</p>
<p><code>rules</code> is a list of lists/symbols representing the GDL description of the
game. Note that all symbols are interned in the <code>GGP</code> package.</p>
<h3 id="player-stop-game-generic-function">PLAYER-STOP-GAME (generic function)</h3>
<div class="codehilite"><pre>(PLAYER-STOP-GAME PLAYER)
</pre></div>
<p>Called when the game is stopped.</p>
<p>This is a good place to do any teardown stuff your player might need, or maybe
to suggest a GC to your Lisp implementation.</p>
<h3 id="player-update-game-generic-function">PLAYER-UPDATE-GAME (generic function)</h3>
<div class="codehilite"><pre>(PLAYER-UPDATE-GAME PLAYER MOVES)
</pre></div>
<p>Called after all player have made their moves.</p>
<p><code>moves</code> will be a list of moves made by the players.</p>
<h3 id="start-player-function">START-PLAYER (function)</h3>
<div class="codehilite"><pre>(START-PLAYER PLAYER)
</pre></div>
<p>Start the HTTP server for the given player.</p>
</div>
<footer><p><i>Made with Lisp and love by <a href="http://stevelosh.com/">Steve Losh</a> in Reykjavík, Iceland.</i></p>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-15328874-3', 'auto');
ga('send', 'pageview');
</script></footer>
</div>
</body>
</html>