Added settlement ruleset

This commit is contained in:
Simon Brooke 2014-07-20 15:17:09 +01:00
parent 1c838a79bd
commit 4a48acee20
4 changed files with 21 additions and 19 deletions

View file

@ -3366,7 +3366,7 @@ important.</p>
</ul>
</td><td class="codes"><pre class="brush: clojure">(defn get-int
[map key]
(cond map
(cond (map? map)
(let [v (map key)]
(cond (and v (integer? v)) v
true 0))
@ -3415,14 +3415,19 @@ important.</p>
* `depth` an integer representing the distance from [x,y] that
should be searched;
* `property` a keyword representing a property of the neighbours;
* `value` a value of that property;
* `value` a value of that property (or, possibly, the name of another);
* `op` a comparator function to use in place of `=`.
</code></pre>
<p> It gets messy.</p>
</td><td class="codes"><pre class="brush: clojure">(defn get-neighbours-with-property-value
([world x y depth property value op]
(filter #(eval (list op (get % property) value)) (get-neighbours world x y depth)))
(filter
#(eval
(list op
(or (get % property) (get-int % property))
value))
(get-neighbours world x y depth)))
([world x y depth property value]
(get-neighbours-with-property-value world x y depth property value =))
([world cell depth property value]

View file

@ -3053,18 +3053,11 @@ objective is to parse rules out of a block of text from a textarea</p>
function, and return the sequence of such functions.</p>
</td><td class="codes"><pre class="brush: clojure">(defn compile-string
[string]
(map #(compile-rule % true) (remove comment? (split string #&quot;\n&quot;))))</pre></td></tr><tr><td class="docs"><p>Compile each non-comment line of the file indicated by this <code>filename</code> into
(map #(compile-rule % true) (remove comment? (trim (split string #&quot;\n&quot;)))))</pre></td></tr><tr><td class="docs"><p>Compile each non-comment line of the file indicated by this <code>filename</code> into
an executable anonymous function, and return the sequence of such functions.</p>
</td><td class="codes"><pre class="brush: clojure">(defn compile-file
[filename]
(compile-string (slurp filename)))</pre></td></tr><tr><td class="docs"><p> (let [lines
(doall (with-open [rdr (reader filename)] (line-seq rdr)))]
(map parse-line lines)))</p>
</td><td class="codes"></td></tr><tr><td class="docs"><p>(defn parse-string
"Parse rules from successive lines in this <code>string</code>"
[string]
(parse-from-reader (BufferedReader. (StringReader. string))))</p>
</td><td class="codes"></td></tr><tr><td class="spacer docs">&nbsp;</td><td class="codes" /></tr><tr><td class="docs"><div class="docs-header"><a class="anchor" href="#mw-parser.core" name="mw-parser.core"><h1 class="project-name">mw-parser.core</h1><a class="toc-link" href="#toc">toc</a></a></div></td><td class="codes" /></tr><tr><td class="docs"><p>A very simple parser which parses production rules of the following forms:</p>
(compile-string (slurp filename)))</pre></td></tr><tr><td class="spacer docs">&nbsp;</td><td class="codes" /></tr><tr><td class="docs"><div class="docs-header"><a class="anchor" href="#mw-parser.core" name="mw-parser.core"><h1 class="project-name">mw-parser.core</h1><a class="toc-link" href="#toc">toc</a></a></div></td><td class="codes" /></tr><tr><td class="docs"><p>A very simple parser which parses production rules of the following forms:</p>
<ul>
<li>"if altitude is less than 100 and state is forest then state should be climax and deer should be 3"</li>

View file

@ -3142,7 +3142,7 @@ net.brehaut.ClojureTools = (function (SH) {
(let [state (:state cell)]
[:td {:class (format-css-class state) :title (format-mouseover cell)}
[:a {:href (format &quot;inspect?x=%d&amp;amp;y=%d&quot; (:x cell) (:y cell))}
[:img {:alt (world/format-cell cell) :src (format-image-path state)}]]]))</pre></td></tr><tr><td class="docs"><p>Render this world row as a Hiccup table row.</p>
[:img {:alt (:state cell) :src (format-image-path state)}]]]))</pre></td></tr><tr><td class="docs"><p>Render this world row as a Hiccup table row.</p>
</td><td class="codes"><pre class="brush: clojure">(defn render-world-row
[row]
(apply vector (cons :tr (map render-cell row))))</pre></td></tr><tr><td class="docs"><p>Render the world implied by the session as a complete HTML page.</p>
@ -3151,8 +3151,8 @@ net.brehaut.ClojureTools = (function (SH) {
(let [world (or (session/get :world)
(engine/transform-world
(heightmap/apply-heightmap
;;&quot;resources/public/img/20x20/hill.png&quot;
&quot;resources/public/img/heightmaps/great_britain_and_ireland_small.png&quot;)
&quot;resources/public/img/20x20/hill.png&quot;
;; &quot;resources/public/img/heightmaps/great_britain_and_ireland_small.png&quot;)
rules/init-rules))
rules (or (session/get :rules)
(do (session/put! :rules (compiler/compile-file &quot;resources/rulesets/basic.txt&quot;))