Skip to content

Commit

Permalink
Fixes #6
Browse files Browse the repository at this point in the history
Updated docs
Updated examples, renamed some files
  • Loading branch information
Yonaba committed Apr 8, 2013
1 parent bb3bb24 commit 590553b
Show file tree
Hide file tree
Showing 29 changed files with 839 additions and 161 deletions.
108 changes: 108 additions & 0 deletions docs/examples/annotatedpathing.lua.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head>
<title>Jumper documentation</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head>
<body>

<div id="container">

<div id="product">
<div id="product_logo"></div>
<div id="product_name"><big><b></b></big></div>
<div id="product_description"></div>
</div> <!-- id="product" -->


<div id="main">


<!-- Menu -->

<div id="navigation">
<br/>
<h1>Jumper</h1>

<ul>
<li><a href="../index.html">Index</a></li>
</ul>



<h2>Examples</h2>
<ul>
<li><strong>annotatedpathing.lua</strong></li>
<li><a href="../examples/customheuristics.lua.html">customheuristics.lua</a></li>
<li><a href="../examples/makeclearance.lua.html">makeclearance.lua</a></li>
<li><a href="../examples/simpleexample.lua.html">simpleexample.lua</a></li>
</ul>
<h2>Modules</h2>
<ul>
<li><a href="../modules/core.bheap.html">core.bheap</a></li>
<li><a href="../modules/core.heuristics.html">core.heuristics</a></li>
<li><a href="../modules/core.node.html">core.node</a></li>
<li><a href="../modules/core.path.html">core.path</a></li>
<li><a href="../modules/grid.html">grid</a></li>
<li><a href="../modules/pathfinder.html">pathfinder</a></li>
</ul>

</div>

<div id="content">

<h1>Example <code>annotatedpathing.lua</code></h1>

<pre>
<span class="comment">-- Tests sample for clearance metrics calculation
</span><span class="comment">-- See Figure 10 at http://aigamedev.com/open/tutorial/clearance-based-pathfinding/
</span><span class="comment">-- Jump Point Search still has some flaws with clearance based pathfinding
</span>
<span class="keyword">local</span> Grid = <span class="global">require</span> <span class="string">'jumper.grid'</span>
<span class="keyword">local</span> PF = <span class="global">require</span> <span class="string">'jumper.pathfinder'</span>
<span class="keyword">local</span> map = {
{<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>},
{<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">0</span>},
{<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>},
{<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>},
{<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">2</span>,<span class="number">0</span>},
{<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">2</span>,<span class="number">0</span>,<span class="number">0</span>},
{<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">2</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">2</span>},
{<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">2</span>},
{<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>},
{<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>}
}
<span class="keyword">local</span> grid = Grid(map)
<span class="keyword">local</span> walkable = <span class="keyword">function</span>(v) <span class="keyword">return</span> v~=<span class="number">2</span> <span class="keyword">end</span>
<span class="keyword">local</span> finder = PF(grid, <span class="string">'ASTAR'</span>,walkable)
finder:evalGridClearance()
<span class="keyword">local</span> finderNames = PF:getFinders()

<span class="keyword">local</span> sx, sy = <span class="number">1</span>,<span class="number">1</span>
<span class="keyword">local</span> ex, ey = <span class="number">9</span>,<span class="number">9</span>
<span class="keyword">local</span> agent_size = <span class="number">2</span>

<span class="keyword">for</span> i = <span class="number">1</span>,#finderNames <span class="keyword">do</span>
finder:setFinder(finderNames[i])
<span class="keyword">local</span> path = finder:getPath(sx, sy, ex, ey, agent_size)
<span class="global">print</span>((<span class="string">'Algorithm used: %s - Path %s'</span>)
:format(finder:getFinder(), path <span class="keyword">and</span> <span class="string">'found'</span> <span class="keyword">or</span> <span class="string">'not found'</span>))
<span class="keyword">if</span> path <span class="keyword">then</span>
<span class="keyword">for</span> node, count <span class="keyword">in</span> path:nodes() <span class="keyword">do</span>
<span class="global">print</span>((<span class="string">' Step %d. (%d,%d)'</span>)
:format(count, node:getPos()))
<span class="keyword">end</span>
<span class="keyword">end</span>
<span class="keyword">end</span></pre>


</div> <!-- id="content" -->
</div> <!-- id="main" -->
<div id="about">
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc 1.3</a></i>
</div> <!-- id="about" -->
</div> <!-- id="container" -->
</body>
</html>
108 changes: 108 additions & 0 deletions docs/examples/clearancebasedpathfinding.lua.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head>
<title>Jumper documentation</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head>
<body>

<div id="container">

<div id="product">
<div id="product_logo"></div>
<div id="product_name"><big><b></b></big></div>
<div id="product_description"></div>
</div> <!-- id="product" -->


<div id="main">


<!-- Menu -->

<div id="navigation">
<br/>
<h1>Jumper</h1>

<ul>
<li><a href="../index.html">Index</a></li>
</ul>



<h2>Examples</h2>
<ul>
<li><strong>clearancebasedpathfinding.lua</strong></li>
<li><a href="../examples/heuristics.lua.html">heuristics.lua</a></li>
<li><a href="../examples/makeclearance.lua.html">makeclearance.lua</a></li>
<li><a href="../examples/minimal.lua.html">minimal.lua</a></li>
</ul>
<h2>Modules</h2>
<ul>
<li><a href="../modules/core.bheap.html">core.bheap</a></li>
<li><a href="../modules/core.heuristics.html">core.heuristics</a></li>
<li><a href="../modules/core.node.html">core.node</a></li>
<li><a href="../modules/core.path.html">core.path</a></li>
<li><a href="../modules/grid.html">grid</a></li>
<li><a href="../modules/pathfinder.html">pathfinder</a></li>
</ul>

</div>

<div id="content">

<h1>Example <code>clearancebasedpathfinding.lua</code></h1>

<pre>
<span class="comment">-- Tests sample for clearance metrics calculation
</span><span class="comment">-- See Figure 10 at http://aigamedev.com/open/tutorial/clearance-based-pathfinding/
</span><span class="comment">-- Jump Point Search still has some flaws with clearance based pathfinding
</span>
<span class="keyword">local</span> Grid = <span class="global">require</span> <span class="string">'jumper.grid'</span>
<span class="keyword">local</span> PF = <span class="global">require</span> <span class="string">'jumper.pathfinder'</span>
<span class="keyword">local</span> map = {
{<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>},
{<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">0</span>},
{<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>},
{<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>},
{<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">2</span>,<span class="number">0</span>},
{<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">2</span>,<span class="number">0</span>,<span class="number">0</span>},
{<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">2</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">2</span>},
{<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">2</span>},
{<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>},
{<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>}
}
<span class="keyword">local</span> grid = Grid(map)
<span class="keyword">local</span> walkable = <span class="keyword">function</span>(v) <span class="keyword">return</span> v~=<span class="number">2</span> <span class="keyword">end</span>
<span class="keyword">local</span> finder = PF(grid, <span class="string">'ASTAR'</span>,walkable)
finder:evalGridClearance()
<span class="keyword">local</span> finderNames = PF:getFinders()

<span class="keyword">local</span> sx, sy = <span class="number">1</span>,<span class="number">1</span>
<span class="keyword">local</span> ex, ey = <span class="number">9</span>,<span class="number">9</span>
<span class="keyword">local</span> agent_size = <span class="number">2</span>

<span class="keyword">for</span> i = <span class="number">1</span>,#finderNames <span class="keyword">do</span>
finder:setFinder(finderNames[i])
<span class="keyword">local</span> path = finder:getPath(sx, sy, ex, ey, agent_size)
<span class="global">print</span>((<span class="string">'Algorithm used: %s - Path %s'</span>)
:format(finder:getFinder(), path <span class="keyword">and</span> <span class="string">'found'</span> <span class="keyword">or</span> <span class="string">'not found'</span>))
<span class="keyword">if</span> path <span class="keyword">then</span>
<span class="keyword">for</span> node, count <span class="keyword">in</span> path:nodes() <span class="keyword">do</span>
<span class="global">print</span>((<span class="string">' Step %d. (%d,%d)'</span>)
:format(count, node:getPos()))
<span class="keyword">end</span>
<span class="keyword">end</span>
<span class="keyword">end</span></pre>


</div> <!-- id="content" -->
</div> <!-- id="main" -->
<div id="about">
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc 1.3</a></i>
</div> <!-- id="about" -->
</div> <!-- id="container" -->
</body>
</html>
105 changes: 105 additions & 0 deletions docs/examples/customheuristics.lua.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head>
<title>Jumper documentation</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head>
<body>

<div id="container">

<div id="product">
<div id="product_logo"></div>
<div id="product_name"><big><b></b></big></div>
<div id="product_description"></div>
</div> <!-- id="product" -->


<div id="main">


<!-- Menu -->

<div id="navigation">
<br/>
<h1>Jumper</h1>

<ul>
<li><a href="../index.html">Index</a></li>
</ul>



<h2>Examples</h2>
<ul>
<li><a href="../examples/annotatedpathing.lua.html">annotatedpathing.lua</a></li>
<li><strong>customheuristics.lua</strong></li>
<li><a href="../examples/makeclearance.lua.html">makeclearance.lua</a></li>
<li><a href="../examples/simpleexample.lua.html">simpleexample.lua</a></li>
</ul>
<h2>Modules</h2>
<ul>
<li><a href="../modules/core.bheap.html">core.bheap</a></li>
<li><a href="../modules/core.heuristics.html">core.heuristics</a></li>
<li><a href="../modules/core.node.html">core.node</a></li>
<li><a href="../modules/core.path.html">core.path</a></li>
<li><a href="../modules/grid.html">grid</a></li>
<li><a href="../modules/pathfinder.html">pathfinder</a></li>
</ul>

</div>

<div id="content">

<h1>Example <code>customheuristics.lua</code></h1>

<pre>
<span class="comment">--- Example of use for Heuristics
</span>
<span class="keyword">local</span> Grid = <span class="global">require</span> (<span class="string">"jumper.grid"</span>)
<span class="keyword">local</span> Pathfinder = <span class="global">require</span> (<span class="string">"jumper.pathfinder"</span>)

<span class="keyword">local</span> map = {
{<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>},
{<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>},
{<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>},
{<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>},
{<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>},
}

<span class="keyword">local</span> walkable = <span class="number">0</span>
<span class="keyword">local</span> grid = Grid(map)
<span class="keyword">local</span> myFinder = Pathfinder(grid, <span class="string">'ASTAR'</span>, walkable)

<span class="comment">-- Use Euclidian heuristic to evaluate distance
</span>myFinder:setHeuristic(<span class="string">'EUCLIDIAN'</span>)
myFinder:setHeuristic(<span class="string">'DIAGONAL'</span>)
myFinder:setHeuristic(<span class="string">'MANHATTAN'</span>)

<span class="comment">-- Custom
</span><span class="keyword">local</span> h = <span class="keyword">function</span>(nodeA, nodeB)
<span class="keyword">return</span> (<span class="number">0.1</span> * (<span class="global">math</span>.abs(nodeA:getX() - nodeB:getX()))
+ <span class="number">0.9</span> * (<span class="global">math</span>.abs(nodeA:getY() - nodeB:getY())))
<span class="keyword">end</span>
myFinder:setHeuristic(h)

<span class="keyword">local</span> p = myFinder:getPath(<span class="number">1</span>,<span class="number">1</span>, <span class="number">6</span>,<span class="number">5</span>)
<span class="keyword">for</span> node, count <span class="keyword">in</span> p:nodes() <span class="keyword">do</span>
<span class="global">print</span>((<span class="string">'%d. Node(%d,%d)'</span>):format(count, node:getX(), node:getY()))
<span class="keyword">end</span>
<span class="global">print</span>((<span class="string">'Path length: %.2f'</span>):format(p:getLength()))

<span class="comment">-- etc ...
</span></pre>


</div> <!-- id="content" -->
</div> <!-- id="main" -->
<div id="about">
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc 1.3</a></i>
</div> <!-- id="about" -->
</div> <!-- id="container" -->
</body>
</html>
3 changes: 2 additions & 1 deletion docs/examples/heuristics.lua.html
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,9 @@ <h1>Jumper</h1>

<h2>Examples</h2>
<ul>
<li><a href="../examples/clearance.lua.html">clearance.lua</a></li>
<li><a href="../examples/clearancebasedpathfinding.lua.html">clearancebasedpathfinding.lua</a></li>
<li><strong>heuristics.lua</strong></li>
<li><a href="../examples/makeclearance.lua.html">makeclearance.lua</a></li>
<li><a href="../examples/minimal.lua.html">minimal.lua</a></li>
</ul>
<h2>Modules</h2>
Expand Down
Loading

0 comments on commit 590553b

Please sign in to comment.