mirror of
https://github.com/evennia/evennia.git
synced 2026-04-05 07:27:17 +02:00
Updated HTML docs
This commit is contained in:
parent
8357af22ee
commit
87191ef0c4
599 changed files with 5455 additions and 5223 deletions
|
|
@ -178,7 +178,7 @@ all, the list of variables that are available in this callback:</p>
|
|||
</div>
|
||||
<p>This is important, in order to know what variables we can use in our callback out-of-the-box. Let’s
|
||||
write a single line to be sure our callback is called when we expect it to:</p>
|
||||
<div class="highlight-python notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="n">character</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"You just said {}."</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">message</span><span class="p">))</span>
|
||||
<div class="highlight-python notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="n">character</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"You just said </span><span class="si">{}</span><span class="s2">."</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">message</span><span class="p">))</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<p>You can paste this line in-game, then type the <code class="docutils literal notranslate"><span class="pre">:wq</span></code> command to exit the editor and save your
|
||||
|
|
@ -203,7 +203,7 @@ it.</p>
|
|||
</pre></div>
|
||||
</div>
|
||||
<p>And turn off automatic indentation, which will help us:</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">:</span><span class="o">=</span>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">:=</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<blockquote>
|
||||
|
|
@ -255,7 +255,7 @@ solution right now. Here’s a possible code that you could paste in the code e
|
|||
|
||||
<span class="c1"># Now we check that the elevator isn't already at this floor</span>
|
||||
<span class="n">floor</span> <span class="o">=</span> <span class="n">FLOORS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">message</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">floor</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">floor</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="n">character</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Which floor do you want?"</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">TO_EXIT</span><span class="o">.</span><span class="n">location</span> <span class="ow">is</span> <span class="n">floor</span><span class="p">:</span>
|
||||
<span class="n">character</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"The elevator already is at this floor."</span><span class="p">)</span>
|
||||
|
|
@ -264,7 +264,7 @@ solution right now. Here’s a possible code that you could paste in the code e
|
|||
<span class="n">room</span><span class="o">.</span><span class="n">msg_contents</span><span class="p">(</span><span class="s2">"The doors of the elevator close with a clank."</span><span class="p">)</span>
|
||||
<span class="n">TO_EXIT</span><span class="o">.</span><span class="n">location</span> <span class="o">=</span> <span class="n">floor</span>
|
||||
<span class="n">BACK_EXIT</span><span class="o">.</span><span class="n">destination</span> <span class="o">=</span> <span class="n">floor</span>
|
||||
<span class="n">room</span><span class="o">.</span><span class="n">msg_contents</span><span class="p">(</span><span class="s2">"The doors of the elevator open to {floor}."</span><span class="p">,</span>
|
||||
<span class="n">room</span><span class="o">.</span><span class="n">msg_contents</span><span class="p">(</span><span class="s2">"The doors of the elevator open to </span><span class="si">{floor}</span><span class="s2">."</span><span class="p">,</span>
|
||||
<span class="n">mapping</span><span class="o">=</span><span class="nb">dict</span><span class="p">(</span><span class="n">floor</span><span class="o">=</span><span class="n">floor</span><span class="p">))</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
|
|
@ -326,7 +326,7 @@ new floor. You can notice a few differences:</p>
|
|||
<span class="n">TO_EXIT</span><span class="o">.</span><span class="n">destination</span> <span class="o">=</span> <span class="n">ELEVATOR</span>
|
||||
<span class="n">BACK_EXIT</span><span class="o">.</span><span class="n">location</span> <span class="o">=</span> <span class="n">ELEVATOR</span>
|
||||
<span class="n">BACK_EXIT</span><span class="o">.</span><span class="n">destination</span> <span class="o">=</span> <span class="n">floor</span>
|
||||
<span class="n">room</span><span class="o">.</span><span class="n">msg_contents</span><span class="p">(</span><span class="s2">"The doors of the elevator open to {floor}."</span><span class="p">,</span>
|
||||
<span class="n">room</span><span class="o">.</span><span class="n">msg_contents</span><span class="p">(</span><span class="s2">"The doors of the elevator open to </span><span class="si">{floor}</span><span class="s2">."</span><span class="p">,</span>
|
||||
<span class="n">mapping</span><span class="o">=</span><span class="nb">dict</span><span class="p">(</span><span class="n">floor</span><span class="o">=</span><span class="n">floor</span><span class="p">))</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
|
|
@ -343,7 +343,7 @@ new floor. You can notice a few differences:</p>
|
|||
</div>
|
||||
<p>Remove the current code and disable auto-indentation again:</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">:</span><span class="n">DD</span>
|
||||
<span class="p">:</span><span class="o">=</span>
|
||||
<span class="o">:=</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>And you can paste instead the following code. Notice the differences with our first attempt:</p>
|
||||
|
|
@ -382,17 +382,17 @@ new floor. You can notice a few differences:</p>
|
|||
|
||||
<span class="c1"># Now we check that the elevator isn't already at this floor</span>
|
||||
<span class="n">floor</span> <span class="o">=</span> <span class="n">FLOORS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">message</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">floor</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">floor</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="n">character</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Which floor do you want?"</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">BACK_EXIT</span><span class="o">.</span><span class="n">location</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
|
||||
<span class="k">elif</span> <span class="n">BACK_EXIT</span><span class="o">.</span><span class="n">location</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="n">character</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"The elevator is between floors."</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">TO_EXIT</span><span class="o">.</span><span class="n">location</span> <span class="ow">is</span> <span class="n">floor</span><span class="p">:</span>
|
||||
<span class="n">character</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"The elevator already is at this floor."</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="c1"># 'floor' contains the new room where the elevator should be</span>
|
||||
<span class="n">room</span><span class="o">.</span><span class="n">msg_contents</span><span class="p">(</span><span class="s2">"The doors of the elevator close with a clank."</span><span class="p">)</span>
|
||||
<span class="n">TO_EXIT</span><span class="o">.</span><span class="n">location</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
<span class="n">BACK_EXIT</span><span class="o">.</span><span class="n">location</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
<span class="n">TO_EXIT</span><span class="o">.</span><span class="n">location</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="n">BACK_EXIT</span><span class="o">.</span><span class="n">location</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="n">call_event</span><span class="p">(</span><span class="n">room</span><span class="p">,</span> <span class="s2">"chain_1"</span><span class="p">,</span> <span class="mi">15</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
|
|
@ -448,7 +448,7 @@ Let’s do that:</p>
|
|||
<p>Take the time to read the help. It gives you all the information you should need. We’ll need to
|
||||
change the “message” variable, and use custom mapping (between braces) to alter the message. We’re
|
||||
given an example, let’s use it. In the code editor, you can paste the following line:</p>
|
||||
<div class="highlight-python notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="n">message</span> <span class="o">=</span> <span class="s2">"{character} walks out of the elevator."</span>
|
||||
<div class="highlight-python notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="n">message</span> <span class="o">=</span> <span class="s2">"</span><span class="si">{character}</span><span class="s2"> walks out of the elevator."</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<p>Again, save and quit the editor by entering <code class="docutils literal notranslate"><span class="pre">:wq</span></code>. You can create a new character to see it leave.</p>
|
||||
|
|
@ -470,7 +470,7 @@ then edit “msg_leave” of “north”:</p>
|
|||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">call</span><span class="o">/</span><span class="n">add</span> <span class="n">north</span> <span class="o">=</span> <span class="n">msg_leave</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<div class="highlight-python notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="n">message</span> <span class="o">=</span> <span class="s2">"{character} walks into the elevator."</span>
|
||||
<div class="highlight-python notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="n">message</span> <span class="o">=</span> <span class="s2">"</span><span class="si">{character}</span><span class="s2"> walks into the elevator."</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<p>Again, you can force our beggar to move and see the message we have just set. This modification
|
||||
|
|
|
|||
|
|
@ -102,14 +102,14 @@ way but remove the secret-handling and replace it with the normal Evennia method
|
|||
<p>Cd into <code class="docutils literal notranslate"><span class="pre">myarx/server/conf/</span></code> and open the file <code class="docutils literal notranslate"><span class="pre">settings.py</span></code> in a text editor. The top part (within
|
||||
<code class="docutils literal notranslate"><span class="pre">"""..."""</span></code>) is just help text. Wipe everything underneath that and make it look like this instead
|
||||
(don’t forget to save):</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">base_settings</span> <span class="k">import</span> <span class="o">*</span>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">base_settings</span> <span class="kn">import</span> <span class="o">*</span>
|
||||
|
||||
<span class="n">TELNET_PORTS</span> <span class="o">=</span> <span class="p">[</span><span class="mi">4000</span><span class="p">]</span>
|
||||
<span class="n">SERVERNAME</span> <span class="o">=</span> <span class="s2">"MyArx"</span>
|
||||
<span class="n">GAME_SLOGAN</span> <span class="o">=</span> <span class="s2">"The cool game"</span>
|
||||
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="kn">from</span> <span class="nn">server.conf.secret_settings</span> <span class="k">import</span> <span class="o">*</span>
|
||||
<span class="kn">from</span> <span class="nn">server.conf.secret_settings</span> <span class="kn">import</span> <span class="o">*</span>
|
||||
<span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"secret_settings.py file not found or failed to import."</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
|
|
|
|||
|
|
@ -152,14 +152,14 @@ here, feel free to organize the code differently):</p>
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"|rYou should provide an argument to this function: the object to edit.|n"</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="n">obj</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">strip</span><span class="p">(),</span> <span class="n">global_search</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
|
||||
<span class="n">obj</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">strip</span><span class="p">(),</span> <span class="n">global_search</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">obj</span><span class="p">:</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">obj</span><span class="o">.</span><span class="n">typename</span> <span class="o">==</span> <span class="s2">"Room"</span><span class="p">:</span>
|
||||
<span class="n">Menu</span> <span class="o">=</span> <span class="n">RoomBuildingMenu</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"|rThe object {} cannot be</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"|rThe object </span><span class="si">{}</span><span class="s2"> cannot be</span>
|
||||
<span class="n">edited</span><span class="o">.|</span><span class="n">n</span><span class="s2">".format(obj.get_display_name(self.caller)))</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
|
|
@ -576,12 +576,12 @@ example using some of these arguments (again, replace the <code class="docutils
|
|||
<span class="sd"> """</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">init</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">room</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_choice</span><span class="p">(</span><span class="s2">"title"</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"t"</span><span class="p">,</span> <span class="n">attr</span><span class="o">=</span><span class="s2">"key"</span><span class="p">,</span> <span class="n">glance</span><span class="o">=</span><span class="s2">"{obj.key}"</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s2">"""</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_choice</span><span class="p">(</span><span class="s2">"title"</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"t"</span><span class="p">,</span> <span class="n">attr</span><span class="o">=</span><span class="s2">"key"</span><span class="p">,</span> <span class="n">glance</span><span class="o">=</span><span class="s2">"</span><span class="si">{obj.key}</span><span class="s2">"</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s2">"""</span>
|
||||
<span class="s2"> -------------------------------------------------------------------------------</span>
|
||||
<span class="s2"> Editing the title of {{obj.key}}(#{{obj.id}})</span>
|
||||
|
||||
<span class="s2"> You can change the title simply by entering it.</span>
|
||||
<span class="s2"> Use |y{back}|n to go back to the main menu.</span>
|
||||
<span class="s2"> Use |y</span><span class="si">{back}</span><span class="s2">|n to go back to the main menu.</span>
|
||||
|
||||
<span class="s2"> Current title: |c{{obj.key}}|n</span>
|
||||
<span class="s2"> """</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">back</span><span class="o">=</span><span class="s2">"|n or |y"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">keys_go_back</span><span class="p">)))</span>
|
||||
|
|
@ -700,12 +700,12 @@ it’s explained below:</p>
|
|||
<span class="sd"> """</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">init</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">room</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_choice</span><span class="p">(</span><span class="s2">"title"</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"t"</span><span class="p">,</span> <span class="n">attr</span><span class="o">=</span><span class="s2">"key"</span><span class="p">,</span> <span class="n">glance</span><span class="o">=</span><span class="s2">"{obj.key}"</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s2">"""</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_choice</span><span class="p">(</span><span class="s2">"title"</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"t"</span><span class="p">,</span> <span class="n">attr</span><span class="o">=</span><span class="s2">"key"</span><span class="p">,</span> <span class="n">glance</span><span class="o">=</span><span class="s2">"</span><span class="si">{obj.key}</span><span class="s2">"</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s2">"""</span>
|
||||
<span class="s2"> -------------------------------------------------------------------------------</span>
|
||||
<span class="s2"> Editing the title of {{obj.key}}(#{{obj.id}})</span>
|
||||
|
||||
<span class="s2"> You can change the title simply by entering it.</span>
|
||||
<span class="s2"> Use |y{back}|n to go back to the main menu.</span>
|
||||
<span class="s2"> Use |y</span><span class="si">{back}</span><span class="s2">|n to go back to the main menu.</span>
|
||||
|
||||
<span class="s2"> Current title: |c{{obj.key}}|n</span>
|
||||
<span class="s2"> """</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">back</span><span class="o">=</span><span class="s2">"|n or |y"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">keys_go_back</span><span class="p">)))</span>
|
||||
|
|
@ -718,8 +718,8 @@ it’s explained below:</p>
|
|||
<span class="sd">"""Show the room exits."""</span>
|
||||
<span class="k">if</span> <span class="n">room</span><span class="o">.</span><span class="n">exits</span><span class="p">:</span>
|
||||
<span class="n">glance</span> <span class="o">=</span> <span class="s2">""</span>
|
||||
<span class="k">for</span> <span class="nb">exit</span> <span class="ow">in</span> <span class="n">room</span><span class="o">.</span><span class="n">exits</span><span class="p">:</span>
|
||||
<span class="n">glance</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2"> |y{exit}|n"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">exit</span><span class="o">=</span><span class="nb">exit</span><span class="o">.</span><span class="n">key</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">exit</span> <span class="ow">in</span> <span class="n">room</span><span class="o">.</span><span class="n">exits</span><span class="p">:</span>
|
||||
<span class="n">glance</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2"> |y</span><span class="si">{exit}</span><span class="s2">|n"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">exit</span><span class="o">=</span><span class="n">exit</span><span class="o">.</span><span class="n">key</span><span class="p">)</span>
|
||||
|
||||
<span class="k">return</span> <span class="n">glance</span>
|
||||
|
||||
|
|
@ -845,12 +845,12 @@ callback. To see it in action, as usual, replace the class and functions in <co
|
|||
<span class="sd"> """</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">init</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">room</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_choice</span><span class="p">(</span><span class="s2">"title"</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"t"</span><span class="p">,</span> <span class="n">attr</span><span class="o">=</span><span class="s2">"key"</span><span class="p">,</span> <span class="n">glance</span><span class="o">=</span><span class="s2">"{obj.key}"</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s2">"""</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_choice</span><span class="p">(</span><span class="s2">"title"</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"t"</span><span class="p">,</span> <span class="n">attr</span><span class="o">=</span><span class="s2">"key"</span><span class="p">,</span> <span class="n">glance</span><span class="o">=</span><span class="s2">"</span><span class="si">{obj.key}</span><span class="s2">"</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s2">"""</span>
|
||||
<span class="s2"> -------------------------------------------------------------------------------</span>
|
||||
<span class="s2"> Editing the title of {{obj.key}}(#{{obj.id}})</span>
|
||||
|
||||
<span class="s2"> You can change the title simply by entering it.</span>
|
||||
<span class="s2"> Use |y{back}|n to go back to the main menu.</span>
|
||||
<span class="s2"> Use |y</span><span class="si">{back}</span><span class="s2">|n to go back to the main menu.</span>
|
||||
|
||||
<span class="s2"> Current title: |c{{obj.key}}|n</span>
|
||||
<span class="s2"> """</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">back</span><span class="o">=</span><span class="s2">"|n or |y"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">keys_go_back</span><span class="p">)))</span>
|
||||
|
|
@ -863,8 +863,8 @@ callback. To see it in action, as usual, replace the class and functions in <co
|
|||
<span class="sd">"""Show the room exits."""</span>
|
||||
<span class="k">if</span> <span class="n">room</span><span class="o">.</span><span class="n">exits</span><span class="p">:</span>
|
||||
<span class="n">glance</span> <span class="o">=</span> <span class="s2">""</span>
|
||||
<span class="k">for</span> <span class="nb">exit</span> <span class="ow">in</span> <span class="n">room</span><span class="o">.</span><span class="n">exits</span><span class="p">:</span>
|
||||
<span class="n">glance</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2"> |y{exit}|n"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">exit</span><span class="o">=</span><span class="nb">exit</span><span class="o">.</span><span class="n">key</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">exit</span> <span class="ow">in</span> <span class="n">room</span><span class="o">.</span><span class="n">exits</span><span class="p">:</span>
|
||||
<span class="n">glance</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2"> |y</span><span class="si">{exit}</span><span class="s2">|n"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">exit</span><span class="o">=</span><span class="n">exit</span><span class="o">.</span><span class="n">key</span><span class="p">)</span>
|
||||
|
||||
<span class="k">return</span> <span class="n">glance</span>
|
||||
|
||||
|
|
@ -877,13 +877,13 @@ callback. To see it in action, as usual, replace the class and functions in <co
|
|||
<span class="n">text</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2"> Use |y@c|n to create a new exit."</span>
|
||||
<span class="n">text</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n\n</span><span class="s2">Existing exits:"</span>
|
||||
<span class="k">if</span> <span class="n">room</span><span class="o">.</span><span class="n">exits</span><span class="p">:</span>
|
||||
<span class="k">for</span> <span class="nb">exit</span> <span class="ow">in</span> <span class="n">room</span><span class="o">.</span><span class="n">exits</span><span class="p">:</span>
|
||||
<span class="n">text</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2"> |y@e {exit}|n"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">exit</span><span class="o">=</span><span class="nb">exit</span><span class="o">.</span><span class="n">key</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="nb">exit</span><span class="o">.</span><span class="n">aliases</span><span class="o">.</span><span class="n">all</span><span class="p">():</span>
|
||||
<span class="n">text</span> <span class="o">+=</span> <span class="s2">" (|y{aliases}|n)"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">aliases</span><span class="o">=</span><span class="s2">"|n, |y"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span>
|
||||
<span class="n">alias</span> <span class="k">for</span> <span class="n">alias</span> <span class="ow">in</span> <span class="nb">exit</span><span class="o">.</span><span class="n">aliases</span><span class="o">.</span><span class="n">all</span><span class="p">()))</span>
|
||||
<span class="k">if</span> <span class="nb">exit</span><span class="o">.</span><span class="n">destination</span><span class="p">:</span>
|
||||
<span class="n">text</span> <span class="o">+=</span> <span class="s2">" toward {destination}"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">destination</span><span class="o">=</span><span class="nb">exit</span><span class="o">.</span><span class="n">get_display_name</span><span class="p">(</span><span class="n">caller</span><span class="p">))</span>
|
||||
<span class="k">for</span> <span class="n">exit</span> <span class="ow">in</span> <span class="n">room</span><span class="o">.</span><span class="n">exits</span><span class="p">:</span>
|
||||
<span class="n">text</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2"> |y@e </span><span class="si">{exit}</span><span class="s2">|n"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">exit</span><span class="o">=</span><span class="n">exit</span><span class="o">.</span><span class="n">key</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">exit</span><span class="o">.</span><span class="n">aliases</span><span class="o">.</span><span class="n">all</span><span class="p">():</span>
|
||||
<span class="n">text</span> <span class="o">+=</span> <span class="s2">" (|y</span><span class="si">{aliases}</span><span class="s2">|n)"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">aliases</span><span class="o">=</span><span class="s2">"|n, |y"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span>
|
||||
<span class="n">alias</span> <span class="k">for</span> <span class="n">alias</span> <span class="ow">in</span> <span class="n">exit</span><span class="o">.</span><span class="n">aliases</span><span class="o">.</span><span class="n">all</span><span class="p">()))</span>
|
||||
<span class="k">if</span> <span class="n">exit</span><span class="o">.</span><span class="n">destination</span><span class="p">:</span>
|
||||
<span class="n">text</span> <span class="o">+=</span> <span class="s2">" toward </span><span class="si">{destination}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">destination</span><span class="o">=</span><span class="n">exit</span><span class="o">.</span><span class="n">get_display_name</span><span class="p">(</span><span class="n">caller</span><span class="p">))</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">text</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n\n</span><span class="s2"> |gNo exit has yet been defined.|n"</span>
|
||||
|
||||
|
|
@ -1148,12 +1148,12 @@ explanations next!</p>
|
|||
<span class="sd"> """</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">init</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">room</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_choice</span><span class="p">(</span><span class="s2">"title"</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"t"</span><span class="p">,</span> <span class="n">attr</span><span class="o">=</span><span class="s2">"key"</span><span class="p">,</span> <span class="n">glance</span><span class="o">=</span><span class="s2">"{obj.key}"</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s2">"""</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_choice</span><span class="p">(</span><span class="s2">"title"</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"t"</span><span class="p">,</span> <span class="n">attr</span><span class="o">=</span><span class="s2">"key"</span><span class="p">,</span> <span class="n">glance</span><span class="o">=</span><span class="s2">"</span><span class="si">{obj.key}</span><span class="s2">"</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s2">"""</span>
|
||||
<span class="s2"> -------------------------------------------------------------------------------</span>
|
||||
<span class="s2"> Editing the title of {{obj.key}}(#{{obj.id}})</span>
|
||||
|
||||
<span class="s2"> You can change the title simply by entering it.</span>
|
||||
<span class="s2"> Use |y{back}|n to go back to the main menu.</span>
|
||||
<span class="s2"> Use |y</span><span class="si">{back}</span><span class="s2">|n to go back to the main menu.</span>
|
||||
|
||||
<span class="s2"> Current title: |c{{obj.key}}|n</span>
|
||||
<span class="s2"> """</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">back</span><span class="o">=</span><span class="s2">"|n or |y"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">keys_go_back</span><span class="p">)))</span>
|
||||
|
|
@ -1171,8 +1171,8 @@ explanations next!</p>
|
|||
<span class="sd">"""Show the room exits."""</span>
|
||||
<span class="k">if</span> <span class="n">room</span><span class="o">.</span><span class="n">exits</span><span class="p">:</span>
|
||||
<span class="n">glance</span> <span class="o">=</span> <span class="s2">""</span>
|
||||
<span class="k">for</span> <span class="nb">exit</span> <span class="ow">in</span> <span class="n">room</span><span class="o">.</span><span class="n">exits</span><span class="p">:</span>
|
||||
<span class="n">glance</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2"> |y{exit}|n"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">exit</span><span class="o">=</span><span class="nb">exit</span><span class="o">.</span><span class="n">key</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">exit</span> <span class="ow">in</span> <span class="n">room</span><span class="o">.</span><span class="n">exits</span><span class="p">:</span>
|
||||
<span class="n">glance</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2"> |y</span><span class="si">{exit}</span><span class="s2">|n"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">exit</span><span class="o">=</span><span class="n">exit</span><span class="o">.</span><span class="n">key</span><span class="p">)</span>
|
||||
|
||||
<span class="k">return</span> <span class="n">glance</span>
|
||||
|
||||
|
|
@ -1185,13 +1185,13 @@ explanations next!</p>
|
|||
<span class="n">text</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2"> Use |y@c|n to create a new exit."</span>
|
||||
<span class="n">text</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n\n</span><span class="s2">Existing exits:"</span>
|
||||
<span class="k">if</span> <span class="n">room</span><span class="o">.</span><span class="n">exits</span><span class="p">:</span>
|
||||
<span class="k">for</span> <span class="nb">exit</span> <span class="ow">in</span> <span class="n">room</span><span class="o">.</span><span class="n">exits</span><span class="p">:</span>
|
||||
<span class="n">text</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2"> |y@e {exit}|n"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">exit</span><span class="o">=</span><span class="nb">exit</span><span class="o">.</span><span class="n">key</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="nb">exit</span><span class="o">.</span><span class="n">aliases</span><span class="o">.</span><span class="n">all</span><span class="p">():</span>
|
||||
<span class="n">text</span> <span class="o">+=</span> <span class="s2">" (|y{aliases}|n)"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">aliases</span><span class="o">=</span><span class="s2">"|n, |y"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span>
|
||||
<span class="n">alias</span> <span class="k">for</span> <span class="n">alias</span> <span class="ow">in</span> <span class="nb">exit</span><span class="o">.</span><span class="n">aliases</span><span class="o">.</span><span class="n">all</span><span class="p">()))</span>
|
||||
<span class="k">if</span> <span class="nb">exit</span><span class="o">.</span><span class="n">destination</span><span class="p">:</span>
|
||||
<span class="n">text</span> <span class="o">+=</span> <span class="s2">" toward {destination}"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">destination</span><span class="o">=</span><span class="nb">exit</span><span class="o">.</span><span class="n">get_display_name</span><span class="p">(</span><span class="n">caller</span><span class="p">))</span>
|
||||
<span class="k">for</span> <span class="n">exit</span> <span class="ow">in</span> <span class="n">room</span><span class="o">.</span><span class="n">exits</span><span class="p">:</span>
|
||||
<span class="n">text</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2"> |y@e </span><span class="si">{exit}</span><span class="s2">|n"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">exit</span><span class="o">=</span><span class="n">exit</span><span class="o">.</span><span class="n">key</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">exit</span><span class="o">.</span><span class="n">aliases</span><span class="o">.</span><span class="n">all</span><span class="p">():</span>
|
||||
<span class="n">text</span> <span class="o">+=</span> <span class="s2">" (|y</span><span class="si">{aliases}</span><span class="s2">|n)"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">aliases</span><span class="o">=</span><span class="s2">"|n, |y"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span>
|
||||
<span class="n">alias</span> <span class="k">for</span> <span class="n">alias</span> <span class="ow">in</span> <span class="n">exit</span><span class="o">.</span><span class="n">aliases</span><span class="o">.</span><span class="n">all</span><span class="p">()))</span>
|
||||
<span class="k">if</span> <span class="n">exit</span><span class="o">.</span><span class="n">destination</span><span class="p">:</span>
|
||||
<span class="n">text</span> <span class="o">+=</span> <span class="s2">" toward </span><span class="si">{destination}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">destination</span><span class="o">=</span><span class="n">exit</span><span class="o">.</span><span class="n">get_display_name</span><span class="p">(</span><span class="n">caller</span><span class="p">))</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">text</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n\n</span><span class="s2"> |gNo exit has yet been defined.|n"</span>
|
||||
|
||||
|
|
@ -1202,41 +1202,41 @@ explanations next!</p>
|
|||
<span class="sd"> The user typed something in the list of exits. Maybe an exit name?</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">string</span> <span class="o">=</span> <span class="n">string</span><span class="p">[</span><span class="mi">3</span><span class="p">:]</span>
|
||||
<span class="nb">exit</span> <span class="o">=</span> <span class="n">caller</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="n">string</span><span class="p">,</span> <span class="n">candidates</span><span class="o">=</span><span class="n">room</span><span class="o">.</span><span class="n">exits</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="nb">exit</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
|
||||
<span class="n">exit</span> <span class="o">=</span> <span class="n">caller</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="n">string</span><span class="p">,</span> <span class="n">candidates</span><span class="o">=</span><span class="n">room</span><span class="o">.</span><span class="n">exits</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">exit</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="c1"># Open a sub-menu, using nested keys</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Editing: {}"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">exit</span><span class="o">.</span><span class="n">key</span><span class="p">))</span>
|
||||
<span class="n">menu</span><span class="o">.</span><span class="n">move</span><span class="p">(</span><span class="nb">exit</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="bp">False</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Editing: </span><span class="si">{}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">exit</span><span class="o">.</span><span class="n">key</span><span class="p">))</span>
|
||||
<span class="n">menu</span><span class="o">.</span><span class="n">move</span><span class="p">(</span><span class="n">exit</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="kc">False</span>
|
||||
|
||||
<span class="c1"># Exit sub-menu</span>
|
||||
<span class="k">def</span> <span class="nf">text_single_exit</span><span class="p">(</span><span class="n">menu</span><span class="p">,</span> <span class="n">caller</span><span class="p">):</span>
|
||||
<span class="sd">"""Show the text to edit single exits."""</span>
|
||||
<span class="nb">exit</span> <span class="o">=</span> <span class="n">menu</span><span class="o">.</span><span class="n">keys</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
|
||||
<span class="k">if</span> <span class="nb">exit</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
|
||||
<span class="n">exit</span> <span class="o">=</span> <span class="n">menu</span><span class="o">.</span><span class="n">keys</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
|
||||
<span class="k">if</span> <span class="n">exit</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="s2">""</span>
|
||||
|
||||
<span class="k">return</span> <span class="s2">"""</span>
|
||||
<span class="s2"> Exit {exit}:</span>
|
||||
<span class="s2"> Exit </span><span class="si">{exit}</span><span class="s2">:</span>
|
||||
|
||||
<span class="s2"> Enter the exit key to change it, or |y@|n to go back.</span>
|
||||
|
||||
<span class="s2"> New exit key:</span>
|
||||
<span class="s2"> """</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">exit</span><span class="o">=</span><span class="nb">exit</span><span class="o">.</span><span class="n">key</span><span class="p">)</span>
|
||||
<span class="s2"> """</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">exit</span><span class="o">=</span><span class="n">exit</span><span class="o">.</span><span class="n">key</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">nomatch_single_exit</span><span class="p">(</span><span class="n">menu</span><span class="p">,</span> <span class="n">caller</span><span class="p">,</span> <span class="n">room</span><span class="p">,</span> <span class="n">string</span><span class="p">):</span>
|
||||
<span class="sd">"""The user entered something in the exit sub-menu. Replace the exit key."""</span>
|
||||
<span class="c1"># exit is the second key element: keys should contain ['e', <Exit object>]</span>
|
||||
<span class="nb">exit</span> <span class="o">=</span> <span class="n">menu</span><span class="o">.</span><span class="n">keys</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
|
||||
<span class="k">if</span> <span class="nb">exit</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
|
||||
<span class="n">exit</span> <span class="o">=</span> <span class="n">menu</span><span class="o">.</span><span class="n">keys</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
|
||||
<span class="k">if</span> <span class="n">exit</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"|rCannot find the exit.|n"</span><span class="p">)</span>
|
||||
<span class="n">menu</span><span class="o">.</span><span class="n">move</span><span class="p">(</span><span class="n">back</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="bp">False</span>
|
||||
<span class="n">menu</span><span class="o">.</span><span class="n">move</span><span class="p">(</span><span class="n">back</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="kc">False</span>
|
||||
|
||||
<span class="nb">exit</span><span class="o">.</span><span class="n">key</span> <span class="o">=</span> <span class="n">string</span>
|
||||
<span class="k">return</span> <span class="bp">True</span>
|
||||
<span class="n">exit</span><span class="o">.</span><span class="n">key</span> <span class="o">=</span> <span class="n">string</span>
|
||||
<span class="k">return</span> <span class="kc">True</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<blockquote>
|
||||
|
|
@ -1371,12 +1371,12 @@ depending on what you want to achieve. So let’s build two menus:</p>
|
|||
<span class="sd"> """</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">init</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">room</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_choice</span><span class="p">(</span><span class="s2">"title"</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"t"</span><span class="p">,</span> <span class="n">attr</span><span class="o">=</span><span class="s2">"key"</span><span class="p">,</span> <span class="n">glance</span><span class="o">=</span><span class="s2">"{obj.key}"</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s2">"""</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_choice</span><span class="p">(</span><span class="s2">"title"</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"t"</span><span class="p">,</span> <span class="n">attr</span><span class="o">=</span><span class="s2">"key"</span><span class="p">,</span> <span class="n">glance</span><span class="o">=</span><span class="s2">"</span><span class="si">{obj.key}</span><span class="s2">"</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s2">"""</span>
|
||||
<span class="s2"> -------------------------------------------------------------------------------</span>
|
||||
<span class="s2"> Editing the title of {{obj.key}}(#{{obj.id}})</span>
|
||||
|
||||
<span class="s2"> You can change the title simply by entering it.</span>
|
||||
<span class="s2"> Use |y{back}|n to go back to the main menu.</span>
|
||||
<span class="s2"> Use |y</span><span class="si">{back}</span><span class="s2">|n to go back to the main menu.</span>
|
||||
|
||||
<span class="s2"> Current title: |c{{obj.key}}|n</span>
|
||||
<span class="s2"> """</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">back</span><span class="o">=</span><span class="s2">"|n or |y"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">keys_go_back</span><span class="p">)))</span>
|
||||
|
|
@ -1390,8 +1390,8 @@ depending on what you want to achieve. So let’s build two menus:</p>
|
|||
<span class="sd">"""Show the room exits."""</span>
|
||||
<span class="k">if</span> <span class="n">room</span><span class="o">.</span><span class="n">exits</span><span class="p">:</span>
|
||||
<span class="n">glance</span> <span class="o">=</span> <span class="s2">""</span>
|
||||
<span class="k">for</span> <span class="nb">exit</span> <span class="ow">in</span> <span class="n">room</span><span class="o">.</span><span class="n">exits</span><span class="p">:</span>
|
||||
<span class="n">glance</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2"> |y{exit}|n"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">exit</span><span class="o">=</span><span class="nb">exit</span><span class="o">.</span><span class="n">key</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">exit</span> <span class="ow">in</span> <span class="n">room</span><span class="o">.</span><span class="n">exits</span><span class="p">:</span>
|
||||
<span class="n">glance</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2"> |y</span><span class="si">{exit}</span><span class="s2">|n"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">exit</span><span class="o">=</span><span class="n">exit</span><span class="o">.</span><span class="n">key</span><span class="p">)</span>
|
||||
|
||||
<span class="k">return</span> <span class="n">glance</span>
|
||||
|
||||
|
|
@ -1404,13 +1404,13 @@ depending on what you want to achieve. So let’s build two menus:</p>
|
|||
<span class="n">text</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2"> Use |y@c|n to create a new exit."</span>
|
||||
<span class="n">text</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n\n</span><span class="s2">Existing exits:"</span>
|
||||
<span class="k">if</span> <span class="n">room</span><span class="o">.</span><span class="n">exits</span><span class="p">:</span>
|
||||
<span class="k">for</span> <span class="nb">exit</span> <span class="ow">in</span> <span class="n">room</span><span class="o">.</span><span class="n">exits</span><span class="p">:</span>
|
||||
<span class="n">text</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2"> |y@e {exit}|n"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">exit</span><span class="o">=</span><span class="nb">exit</span><span class="o">.</span><span class="n">key</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="nb">exit</span><span class="o">.</span><span class="n">aliases</span><span class="o">.</span><span class="n">all</span><span class="p">():</span>
|
||||
<span class="n">text</span> <span class="o">+=</span> <span class="s2">" (|y{aliases}|n)"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">aliases</span><span class="o">=</span><span class="s2">"|n, |y"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span>
|
||||
<span class="n">alias</span> <span class="k">for</span> <span class="n">alias</span> <span class="ow">in</span> <span class="nb">exit</span><span class="o">.</span><span class="n">aliases</span><span class="o">.</span><span class="n">all</span><span class="p">()))</span>
|
||||
<span class="k">if</span> <span class="nb">exit</span><span class="o">.</span><span class="n">destination</span><span class="p">:</span>
|
||||
<span class="n">text</span> <span class="o">+=</span> <span class="s2">" toward {destination}"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">destination</span><span class="o">=</span><span class="nb">exit</span><span class="o">.</span><span class="n">get_display_name</span><span class="p">(</span><span class="n">caller</span><span class="p">))</span>
|
||||
<span class="k">for</span> <span class="n">exit</span> <span class="ow">in</span> <span class="n">room</span><span class="o">.</span><span class="n">exits</span><span class="p">:</span>
|
||||
<span class="n">text</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2"> |y@e </span><span class="si">{exit}</span><span class="s2">|n"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">exit</span><span class="o">=</span><span class="n">exit</span><span class="o">.</span><span class="n">key</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">exit</span><span class="o">.</span><span class="n">aliases</span><span class="o">.</span><span class="n">all</span><span class="p">():</span>
|
||||
<span class="n">text</span> <span class="o">+=</span> <span class="s2">" (|y</span><span class="si">{aliases}</span><span class="s2">|n)"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">aliases</span><span class="o">=</span><span class="s2">"|n, |y"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span>
|
||||
<span class="n">alias</span> <span class="k">for</span> <span class="n">alias</span> <span class="ow">in</span> <span class="n">exit</span><span class="o">.</span><span class="n">aliases</span><span class="o">.</span><span class="n">all</span><span class="p">()))</span>
|
||||
<span class="k">if</span> <span class="n">exit</span><span class="o">.</span><span class="n">destination</span><span class="p">:</span>
|
||||
<span class="n">text</span> <span class="o">+=</span> <span class="s2">" toward </span><span class="si">{destination}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">destination</span><span class="o">=</span><span class="n">exit</span><span class="o">.</span><span class="n">get_display_name</span><span class="p">(</span><span class="n">caller</span><span class="p">))</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">text</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n\n</span><span class="s2"> |gNo exit has yet been defined.|n"</span>
|
||||
|
||||
|
|
@ -1421,14 +1421,14 @@ depending on what you want to achieve. So let’s build two menus:</p>
|
|||
<span class="sd"> The user typed something in the list of exits. Maybe an exit name?</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">string</span> <span class="o">=</span> <span class="n">string</span><span class="p">[</span><span class="mi">3</span><span class="p">:]</span>
|
||||
<span class="nb">exit</span> <span class="o">=</span> <span class="n">caller</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="n">string</span><span class="p">,</span> <span class="n">candidates</span><span class="o">=</span><span class="n">room</span><span class="o">.</span><span class="n">exits</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="nb">exit</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
|
||||
<span class="n">exit</span> <span class="o">=</span> <span class="n">caller</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="n">string</span><span class="p">,</span> <span class="n">candidates</span><span class="o">=</span><span class="n">room</span><span class="o">.</span><span class="n">exits</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">exit</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="c1"># Open a sub-menu, using nested keys</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Editing: {}"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">exit</span><span class="o">.</span><span class="n">key</span><span class="p">))</span>
|
||||
<span class="n">menu</span><span class="o">.</span><span class="n">open_submenu</span><span class="p">(</span><span class="s2">"commands.building.ExitBuildingMenu"</span><span class="p">,</span> <span class="nb">exit</span><span class="p">,</span> <span class="n">parent_keys</span><span class="o">=</span><span class="p">[</span><span class="s2">"e"</span><span class="p">])</span>
|
||||
<span class="k">return</span> <span class="bp">False</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Editing: </span><span class="si">{}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">exit</span><span class="o">.</span><span class="n">key</span><span class="p">))</span>
|
||||
<span class="n">menu</span><span class="o">.</span><span class="n">open_submenu</span><span class="p">(</span><span class="s2">"commands.building.ExitBuildingMenu"</span><span class="p">,</span> <span class="n">exit</span><span class="p">,</span> <span class="n">parent_keys</span><span class="o">=</span><span class="p">[</span><span class="s2">"e"</span><span class="p">])</span>
|
||||
<span class="k">return</span> <span class="kc">False</span>
|
||||
|
||||
<span class="k">class</span> <span class="nc">ExitBuildingMenu</span><span class="p">(</span><span class="n">BuildingMenu</span><span class="p">):</span>
|
||||
|
||||
|
|
@ -1437,8 +1437,8 @@ depending on what you want to achieve. So let’s build two menus:</p>
|
|||
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">init</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">exit</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_choice</span><span class="p">(</span><span class="s2">"key"</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"k"</span><span class="p">,</span> <span class="n">attr</span><span class="o">=</span><span class="s2">"key"</span><span class="p">,</span> <span class="n">glance</span><span class="o">=</span><span class="s2">"{obj.key}"</span><span class="p">)</span>
|
||||
<span class="k">def</span> <span class="nf">init</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">exit</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_choice</span><span class="p">(</span><span class="s2">"key"</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"k"</span><span class="p">,</span> <span class="n">attr</span><span class="o">=</span><span class="s2">"key"</span><span class="p">,</span> <span class="n">glance</span><span class="o">=</span><span class="s2">"</span><span class="si">{obj.key}</span><span class="s2">"</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_choice_edit</span><span class="p">(</span><span class="s2">"description"</span><span class="p">,</span> <span class="s2">"d"</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
|
|
@ -1556,7 +1556,7 @@ This is the northern exit. Cool huh?
|
|||
</div>
|
||||
<p>Very simply, we created two menus and bridged them together. This needs much less callbacks. There
|
||||
is only one line in the <code class="docutils literal notranslate"><span class="pre">nomatch_exits</span></code> to add:</p>
|
||||
<div class="highlight-python notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1</pre></div></td><td class="code"><div class="highlight"><pre><span></span> <span class="n">menu</span><span class="o">.</span><span class="n">open_submenu</span><span class="p">(</span><span class="s2">"commands.building.ExitBuildingMenu"</span><span class="p">,</span> <span class="nb">exit</span><span class="p">,</span> <span class="n">parent_keys</span><span class="o">=</span><span class="p">[</span><span class="s2">"e"</span><span class="p">])</span>
|
||||
<div class="highlight-python notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1</pre></div></td><td class="code"><div class="highlight"><pre><span></span> <span class="n">menu</span><span class="o">.</span><span class="n">open_submenu</span><span class="p">(</span><span class="s2">"commands.building.ExitBuildingMenu"</span><span class="p">,</span> <span class="n">exit</span><span class="p">,</span> <span class="n">parent_keys</span><span class="o">=</span><span class="p">[</span><span class="s2">"e"</span><span class="p">])</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<p>We have to call <code class="docutils literal notranslate"><span class="pre">open_submenu</span></code> on the menu object (which opens, as its name implies, a sub menu)
|
||||
|
|
|
|||
|
|
@ -160,7 +160,7 @@ when the function was called.</p>
|
|||
</div>
|
||||
<p>For our first test, let’s type something like:</p>
|
||||
<div class="highlight-python notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1
|
||||
2</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="n">character</span><span class="o">.</span><span class="n">location</span><span class="o">.</span><span class="n">msg_contents</span><span class="p">(</span><span class="s2">"{character} shrugs and says: 'well, yes, hello to you!'"</span><span class="p">,</span>
|
||||
2</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="n">character</span><span class="o">.</span><span class="n">location</span><span class="o">.</span><span class="n">msg_contents</span><span class="p">(</span><span class="s2">"</span><span class="si">{character}</span><span class="s2"> shrugs and says: 'well, yes, hello to you!'"</span><span class="p">,</span>
|
||||
<span class="n">mapping</span><span class="o">=</span><span class="nb">dict</span><span class="p">(</span><span class="n">character</span><span class="o">=</span><span class="n">character</span><span class="p">))</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
|
|
@ -197,7 +197,7 @@ keywords.</p>
|
|||
</div>
|
||||
<p>And in the editor that opens:</p>
|
||||
<div class="highlight-python notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1
|
||||
2</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="n">character</span><span class="o">.</span><span class="n">location</span><span class="o">.</span><span class="n">msg_contents</span><span class="p">(</span><span class="s2">"{character} says: 'Ho well, trade's fine as long as roads are</span>
|
||||
2</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="n">character</span><span class="o">.</span><span class="n">location</span><span class="o">.</span><span class="n">msg_contents</span><span class="p">(</span><span class="s2">"</span><span class="si">{character}</span><span class="s2"> says: 'Ho well, trade's fine as long as roads are</span>
|
||||
<span class="n">safe</span><span class="o">.</span><span class="s1">'", mapping=dict(character=character))</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
|
|
@ -227,16 +227,16 @@ an entire dialogue, you might want to do a bit more than that.</p>
|
|||
8
|
||||
9
|
||||
10
|
||||
11</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="n">character</span><span class="o">.</span><span class="n">location</span><span class="o">.</span><span class="n">msg_contents</span><span class="p">(</span><span class="s2">"{character} says: 'Bandits he?'"</span><span class="p">,</span>
|
||||
11</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="n">character</span><span class="o">.</span><span class="n">location</span><span class="o">.</span><span class="n">msg_contents</span><span class="p">(</span><span class="s2">"</span><span class="si">{character}</span><span class="s2"> says: 'Bandits he?'"</span><span class="p">,</span>
|
||||
<span class="n">mapping</span><span class="o">=</span><span class="nb">dict</span><span class="p">(</span><span class="n">character</span><span class="o">=</span><span class="n">character</span><span class="p">))</span>
|
||||
<span class="n">character</span><span class="o">.</span><span class="n">location</span><span class="o">.</span><span class="n">msg_contents</span><span class="p">(</span><span class="s2">"{character} scratches his head, considering."</span><span class="p">,</span>
|
||||
<span class="n">character</span><span class="o">.</span><span class="n">location</span><span class="o">.</span><span class="n">msg_contents</span><span class="p">(</span><span class="s2">"</span><span class="si">{character}</span><span class="s2"> scratches his head, considering."</span><span class="p">,</span>
|
||||
<span class="n">mapping</span><span class="o">=</span><span class="nb">dict</span><span class="p">(</span><span class="n">character</span><span class="o">=</span><span class="n">character</span><span class="p">))</span>
|
||||
<span class="n">character</span><span class="o">.</span><span class="n">location</span><span class="o">.</span><span class="n">msg_contents</span><span class="p">(</span><span class="s2">"{character} whispers: 'Aye, saw some of them, north from here. No</span>
|
||||
<span class="n">character</span><span class="o">.</span><span class="n">location</span><span class="o">.</span><span class="n">msg_contents</span><span class="p">(</span><span class="s2">"</span><span class="si">{character}</span><span class="s2"> whispers: 'Aye, saw some of them, north from here. No</span>
|
||||
<span class="n">trouble</span> <span class="n">o</span><span class="s1">' mine, but...'</span><span class="s2">", mapping=dict(character=character))</span>
|
||||
<span class="n">speaker</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"{character} looks at you more</span>
|
||||
<span class="n">speaker</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"</span><span class="si">{character}</span><span class="s2"> looks at you more</span>
|
||||
<span class="n">closely</span><span class="o">.</span><span class="s2">".format(character=character.get_display_name(speaker)))</span>
|
||||
<span class="n">speaker</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"{character} continues in a low voice: 'Ain't my place to say, but if you need to find</span>
|
||||
<span class="s1">'em, they'</span><span class="n">re</span> <span class="n">encamped</span> <span class="n">some</span> <span class="n">distance</span> <span class="n">away</span> <span class="kn">from</span> <span class="nn">the</span> <span class="nn">road</span><span class="p">,</span> <span class="n">I</span> <span class="n">guess</span> <span class="n">near</span> <span class="n">a</span> <span class="n">cave</span> <span class="ow">or</span>
|
||||
<span class="n">speaker</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"</span><span class="si">{character}</span><span class="s2"> continues in a low voice: 'Ain't my place to say, but if you need to find</span>
|
||||
<span class="s1">'em, they'</span><span class="n">re</span> <span class="n">encamped</span> <span class="n">some</span> <span class="n">distance</span> <span class="n">away</span> <span class="kn">from</span> <span class="nn">the</span> <span class="n">road</span><span class="p">,</span> <span class="n">I</span> <span class="n">guess</span> <span class="n">near</span> <span class="n">a</span> <span class="n">cave</span> <span class="ow">or</span>
|
||||
<span class="n">something</span><span class="o">.</span><span class="s1">'.".format(character=character.get_display_name(speaker)))</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
|
|
|
|||
|
|
@ -116,7 +116,7 @@ in <code class="docutils literal notranslate"><span class="pre">mygame/world/map
|
|||
|
||||
<span class="c1"># the symbol is identified with a key "sector_type" on the </span>
|
||||
<span class="c1"># Room. Keys None and "you" must always exist. </span>
|
||||
<span class="n">SYMBOLS</span> <span class="o">=</span> <span class="p">{</span> <span class="bp">None</span> <span class="p">:</span> <span class="s1">' . '</span><span class="p">,</span> <span class="c1"># for rooms without sector_type Attribute </span>
|
||||
<span class="n">SYMBOLS</span> <span class="o">=</span> <span class="p">{</span> <span class="kc">None</span> <span class="p">:</span> <span class="s1">' . '</span><span class="p">,</span> <span class="c1"># for rooms without sector_type Attribute </span>
|
||||
<span class="s1">'you'</span> <span class="p">:</span> <span class="s1">'[@]'</span><span class="p">,</span>
|
||||
<span class="s1">'SECT_INSIDE'</span><span class="p">:</span> <span class="s1">'[.]'</span> <span class="p">}</span>
|
||||
</pre></div>
|
||||
|
|
@ -143,8 +143,8 @@ methods we need.</p>
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">max_width</span> <span class="o">=</span> <span class="n">max_width</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">max_length</span> <span class="o">=</span> <span class="n">max_length</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">worm_has_mapped</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">curX</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">curY</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">curX</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">curY</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<ul class="simple">
|
||||
|
|
@ -197,8 +197,8 @@ sanity checks on it by using the following methods.</p>
|
|||
<span class="k">def</span> <span class="nf">check_grid</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="c1"># this method simply checks the grid to make sure </span>
|
||||
<span class="c1"># that both max_l and max_w are odd numbers.</span>
|
||||
<span class="k">return</span> <span class="bp">True</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">max_length</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">!=</span> <span class="mi">0</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">max_width</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">!=</span> <span class="mi">0</span>\
|
||||
<span class="k">else</span> <span class="bp">False</span>
|
||||
<span class="k">return</span> <span class="kc">True</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">max_length</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">!=</span> <span class="mi">0</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">max_width</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">!=</span> <span class="mi">0</span>\
|
||||
<span class="k">else</span> <span class="kc">False</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<p>Before we can set our worm on its way, we need to know some of the computer science behind all this
|
||||
|
|
@ -225,13 +225,13 @@ called ‘Graph Traversing’. In Pseudo code what we are trying to accomplish i
|
|||
<span class="k">if</span> <span class="n">max_distance</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="k">for</span> <span class="nb">exit</span> <span class="ow">in</span> <span class="n">room</span><span class="o">.</span><span class="n">exits</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">has_drawn</span><span class="p">(</span><span class="nb">exit</span><span class="o">.</span><span class="n">destination</span><span class="p">):</span>
|
||||
<span class="k">for</span> <span class="n">exit</span> <span class="ow">in</span> <span class="n">room</span><span class="o">.</span><span class="n">exits</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">has_drawn</span><span class="p">(</span><span class="n">exit</span><span class="o">.</span><span class="n">destination</span><span class="p">):</span>
|
||||
<span class="c1"># skip drawing if we already visited the destination</span>
|
||||
<span class="k">continue</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="c1"># first time here!</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">draw_room_on_map</span><span class="p">(</span><span class="nb">exit</span><span class="o">.</span><span class="n">destination</span><span class="p">,</span> <span class="n">max_distance</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">draw_room_on_map</span><span class="p">(</span><span class="n">exit</span><span class="o">.</span><span class="n">destination</span><span class="p">,</span> <span class="n">max_distance</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<p>The beauty of Python is that our actual code of doing this doesn’t differ much if at all from this
|
||||
|
|
@ -297,8 +297,8 @@ conditional statements and set it up to start building the display.</p>
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">max_width</span> <span class="o">=</span> <span class="n">max_width</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">max_length</span> <span class="o">=</span> <span class="n">max_length</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">worm_has_mapped</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">curX</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">curY</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">curX</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">curY</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">check_grid</span><span class="p">():</span>
|
||||
<span class="c1"># we have to store the grid into a variable</span>
|
||||
|
|
@ -338,17 +338,17 @@ code. The method is shown below:</p>
|
|||
<span class="k">if</span> <span class="n">max_distance</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="k">for</span> <span class="nb">exit</span> <span class="ow">in</span> <span class="n">room</span><span class="o">.</span><span class="n">exits</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="nb">exit</span><span class="o">.</span><span class="n">name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"north"</span><span class="p">,</span> <span class="s2">"east"</span><span class="p">,</span> <span class="s2">"west"</span><span class="p">,</span> <span class="s2">"south"</span><span class="p">):</span>
|
||||
<span class="k">for</span> <span class="n">exit</span> <span class="ow">in</span> <span class="n">room</span><span class="o">.</span><span class="n">exits</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">exit</span><span class="o">.</span><span class="n">name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"north"</span><span class="p">,</span> <span class="s2">"east"</span><span class="p">,</span> <span class="s2">"west"</span><span class="p">,</span> <span class="s2">"south"</span><span class="p">):</span>
|
||||
<span class="c1"># we only map in the cardinal directions. Mapping up/down would be</span>
|
||||
<span class="c1"># an interesting learning project for someone who wanted to try it.</span>
|
||||
<span class="k">continue</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">has_drawn</span><span class="p">(</span><span class="nb">exit</span><span class="o">.</span><span class="n">destination</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">has_drawn</span><span class="p">(</span><span class="n">exit</span><span class="o">.</span><span class="n">destination</span><span class="p">):</span>
|
||||
<span class="c1"># we've been to the destination already, skip ahead.</span>
|
||||
<span class="k">continue</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">update_pos</span><span class="p">(</span><span class="n">room</span><span class="p">,</span> <span class="nb">exit</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">lower</span><span class="p">())</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">draw_room_on_map</span><span class="p">(</span><span class="nb">exit</span><span class="o">.</span><span class="n">destination</span><span class="p">,</span> <span class="n">max_distance</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">update_pos</span><span class="p">(</span><span class="n">room</span><span class="p">,</span> <span class="n">exit</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">lower</span><span class="p">())</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">draw_room_on_map</span><span class="p">(</span><span class="n">exit</span><span class="o">.</span><span class="n">destination</span><span class="p">,</span> <span class="n">max_distance</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<p>The first thing the “worm” does is to draw your current location in <code class="docutils literal notranslate"><span class="pre">self.draw</span></code>. Lets define that…</p>
|
||||
|
|
@ -413,7 +413,7 @@ in the room. The first thing it does is check if the room the Worm is in has bee
|
|||
lets define that…</p>
|
||||
<div class="highlight-python notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1
|
||||
2</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="k">def</span> <span class="nf">has_drawn</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">room</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="bp">True</span> <span class="k">if</span> <span class="n">room</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">worm_has_mapped</span><span class="o">.</span><span class="n">keys</span><span class="p">()</span> <span class="k">else</span> <span class="bp">False</span>
|
||||
<span class="k">return</span> <span class="kc">True</span> <span class="k">if</span> <span class="n">room</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">worm_has_mapped</span><span class="o">.</span><span class="n">keys</span><span class="p">()</span> <span class="k">else</span> <span class="kc">False</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<p>If <code class="docutils literal notranslate"><span class="pre">has_drawn</span></code> returns <code class="docutils literal notranslate"><span class="pre">False</span></code> that means the worm has found a room that hasn’t been mapped yet. It
|
||||
|
|
@ -640,7 +640,7 @@ rooms to have a given sector symbol, you could change the default in the <code c
|
|||
|
||||
<span class="c1"># These are keys set with the Attribute sector_type on the room.</span>
|
||||
<span class="c1"># The keys None and "you" must always exist.</span>
|
||||
<span class="n">SYMBOLS</span> <span class="o">=</span> <span class="p">{</span> <span class="bp">None</span> <span class="p">:</span> <span class="s1">' . '</span><span class="p">,</span> <span class="c1"># for rooms without a sector_type attr</span>
|
||||
<span class="n">SYMBOLS</span> <span class="o">=</span> <span class="p">{</span> <span class="kc">None</span> <span class="p">:</span> <span class="s1">' . '</span><span class="p">,</span> <span class="c1"># for rooms without a sector_type attr</span>
|
||||
<span class="s1">'you'</span> <span class="p">:</span> <span class="s1">'[@]'</span><span class="p">,</span>
|
||||
<span class="s1">'SECT_INSIDE'</span><span class="p">:</span> <span class="s1">'[.]'</span> <span class="p">}</span>
|
||||
|
||||
|
|
@ -651,8 +651,8 @@ rooms to have a given sector symbol, you could change the default in the <code c
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">max_width</span> <span class="o">=</span> <span class="n">max_width</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">max_length</span> <span class="o">=</span> <span class="n">max_length</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">worm_has_mapped</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">curX</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">curY</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">curX</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">curY</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">check_grid</span><span class="p">():</span>
|
||||
<span class="c1"># we actually have to store the grid into a variable</span>
|
||||
|
|
@ -683,17 +683,17 @@ rooms to have a given sector symbol, you could change the default in the <code c
|
|||
<span class="k">if</span> <span class="n">max_distance</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="k">for</span> <span class="nb">exit</span> <span class="ow">in</span> <span class="n">room</span><span class="o">.</span><span class="n">exits</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="nb">exit</span><span class="o">.</span><span class="n">name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"north"</span><span class="p">,</span> <span class="s2">"east"</span><span class="p">,</span> <span class="s2">"west"</span><span class="p">,</span> <span class="s2">"south"</span><span class="p">):</span>
|
||||
<span class="k">for</span> <span class="n">exit</span> <span class="ow">in</span> <span class="n">room</span><span class="o">.</span><span class="n">exits</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">exit</span><span class="o">.</span><span class="n">name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"north"</span><span class="p">,</span> <span class="s2">"east"</span><span class="p">,</span> <span class="s2">"west"</span><span class="p">,</span> <span class="s2">"south"</span><span class="p">):</span>
|
||||
<span class="c1"># we only map in the cardinal directions. Mapping up/down would be</span>
|
||||
<span class="c1"># an interesting learning project for someone who wanted to try it.</span>
|
||||
<span class="k">continue</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">has_drawn</span><span class="p">(</span><span class="nb">exit</span><span class="o">.</span><span class="n">destination</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">has_drawn</span><span class="p">(</span><span class="n">exit</span><span class="o">.</span><span class="n">destination</span><span class="p">):</span>
|
||||
<span class="c1"># we've been to the destination already, skip ahead.</span>
|
||||
<span class="k">continue</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">update_pos</span><span class="p">(</span><span class="n">room</span><span class="p">,</span> <span class="nb">exit</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">lower</span><span class="p">())</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">draw_room_on_map</span><span class="p">(</span><span class="nb">exit</span><span class="o">.</span><span class="n">destination</span><span class="p">,</span> <span class="n">max_distance</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">update_pos</span><span class="p">(</span><span class="n">room</span><span class="p">,</span> <span class="n">exit</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">lower</span><span class="p">())</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">draw_room_on_map</span><span class="p">(</span><span class="n">exit</span><span class="o">.</span><span class="n">destination</span><span class="p">,</span> <span class="n">max_distance</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">draw</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">room</span><span class="p">):</span>
|
||||
<span class="c1"># draw initial caller location on map first!</span>
|
||||
|
|
@ -723,7 +723,7 @@ rooms to have a given sector symbol, you could change the default in the <code c
|
|||
|
||||
|
||||
<span class="k">def</span> <span class="nf">has_drawn</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">room</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="bp">True</span> <span class="k">if</span> <span class="n">room</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">worm_has_mapped</span><span class="o">.</span><span class="n">keys</span><span class="p">()</span> <span class="k">else</span> <span class="bp">False</span>
|
||||
<span class="k">return</span> <span class="kc">True</span> <span class="k">if</span> <span class="n">room</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">worm_has_mapped</span><span class="o">.</span><span class="n">keys</span><span class="p">()</span> <span class="k">else</span> <span class="kc">False</span>
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="nf">create_grid</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
|
|
@ -739,8 +739,8 @@ rooms to have a given sector symbol, you could change the default in the <code c
|
|||
<span class="k">def</span> <span class="nf">check_grid</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="c1"># this method simply checks the grid to make sure </span>
|
||||
<span class="c1"># both max_l and max_w are odd numbers</span>
|
||||
<span class="k">return</span> <span class="bp">True</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">max_length</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">!=</span> <span class="mi">0</span> <span class="ow">or</span> \
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">max_width</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">!=</span> <span class="mi">0</span> <span class="k">else</span> <span class="bp">False</span>
|
||||
<span class="k">return</span> <span class="kc">True</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">max_length</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">!=</span> <span class="mi">0</span> <span class="ow">or</span> \
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">max_width</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">!=</span> <span class="mi">0</span> <span class="k">else</span> <span class="kc">False</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">show_map</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="n">map_string</span> <span class="o">=</span> <span class="s2">""</span>
|
||||
|
|
|
|||
|
|
@ -582,7 +582,7 @@ again</p>
|
|||
<span class="s2">"looms a mighty castle. To the south the glow of "</span> \
|
||||
<span class="s2">"a campfire can be seen. To the east lie a wall of "</span> \
|
||||
<span class="s2">"mountains and to the west the dull roar of the open sea."</span><span class="p">,</span>
|
||||
<span class="n">border</span><span class="o">=</span><span class="bp">None</span><span class="p">)</span>
|
||||
<span class="n">border</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span>
|
||||
<span class="c1"># EvTable allows formatting individual columns and cells. We use that here</span>
|
||||
<span class="c1"># to set a maximum width for our description, but letting the map fill</span>
|
||||
<span class="c1"># whatever space it needs. </span>
|
||||
|
|
@ -594,7 +594,7 @@ again</p>
|
|||
<span class="n">north</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">desc</span> <span class="o">=</span> <span class="n">evtable</span><span class="o">.</span><span class="n">EvTable</span><span class="p">(</span><span class="n">map_module</span><span class="o">.</span><span class="n">return_minimap</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span><span class="mi">2</span><span class="p">),</span>
|
||||
<span class="s2">"An impressive castle surrounds you. There might be "</span> \
|
||||
<span class="s2">"a princess in one of these towers."</span><span class="p">,</span>
|
||||
<span class="n">border</span><span class="o">=</span><span class="bp">None</span><span class="p">)</span>
|
||||
<span class="n">border</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span>
|
||||
<span class="n">north</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">desc</span><span class="o">.</span><span class="n">reformat_column</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">70</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># [...]</span>
|
||||
|
|
@ -603,7 +603,7 @@ again</p>
|
|||
<span class="n">east</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">desc</span> <span class="o">=</span> <span class="n">evtable</span><span class="o">.</span><span class="n">EvTable</span><span class="p">(</span><span class="n">map_module</span><span class="o">.</span><span class="n">return_minimap</span><span class="p">(</span><span class="mi">6</span><span class="p">,</span><span class="mi">5</span><span class="p">),</span>
|
||||
<span class="s2">"A cosy cottage nestled among mountains stretching "</span> \
|
||||
<span class="s2">"east as far as the eye can see."</span><span class="p">,</span>
|
||||
<span class="n">border</span><span class="o">=</span><span class="bp">None</span><span class="p">)</span>
|
||||
<span class="n">border</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span>
|
||||
<span class="n">east</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">desc</span><span class="o">.</span><span class="n">reformat_column</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">70</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># [...]</span>
|
||||
|
|
@ -612,7 +612,7 @@ again</p>
|
|||
<span class="n">south</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">desc</span> <span class="o">=</span> <span class="n">evtable</span><span class="o">.</span><span class="n">EvTable</span><span class="p">(</span><span class="n">map_module</span><span class="o">.</span><span class="n">return_minimap</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span><span class="mi">7</span><span class="p">),</span>
|
||||
<span class="s2">"Surrounding a clearing are a number of tribal tents "</span> \
|
||||
<span class="s2">"and at their centre a roaring fire."</span><span class="p">,</span>
|
||||
<span class="n">border</span><span class="o">=</span><span class="bp">None</span><span class="p">)</span>
|
||||
<span class="n">border</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span>
|
||||
<span class="n">south</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">desc</span><span class="o">.</span><span class="n">reformat_column</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">70</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># [...]</span>
|
||||
|
|
@ -621,7 +621,7 @@ again</p>
|
|||
<span class="n">west</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">desc</span> <span class="o">=</span> <span class="n">evtable</span><span class="o">.</span><span class="n">EvTable</span><span class="p">(</span><span class="n">map_module</span><span class="o">.</span><span class="n">return_minimap</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="mi">5</span><span class="p">),</span>
|
||||
<span class="s2">"The dark forest halts to a sandy beach. The sound of "</span> \
|
||||
<span class="s2">"crashing waves calms the soul."</span><span class="p">,</span>
|
||||
<span class="n">border</span><span class="o">=</span><span class="bp">None</span><span class="p">)</span>
|
||||
<span class="n">border</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span>
|
||||
<span class="n">west</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">desc</span><span class="o">.</span><span class="n">reformat_column</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">70</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue