增加dist静态资源

This commit is contained in:
2024-08-10 22:35:37 +08:00
parent bd752e71c2
commit 5c879a0f2b
455 changed files with 18759 additions and 3 deletions

View File

@@ -0,0 +1,70 @@
import{_ as s,c as n,o as a,a4 as p}from"./chunks/framework.DtvhUNIn.js";const h=JSON.parse('{"title":"9.练习:生成代码","description":"","frontmatter":{},"headers":[],"relativePath":"技术资源汇总(杭电支持版)/3.编程思维体系构建/3.4.6.9.练习:生成代码.md","filePath":"技术资源汇总(杭电支持版)/3.编程思维体系构建/3.4.6.9.练习:生成代码.md"}'),e={name:"技术资源汇总(杭电支持版)/3.编程思维体系构建/3.4.6.9.练习:生成代码.md"},t=p(`<h1 id="_9-练习-生成代码" tabindex="-1">9.练习:生成代码 <a class="header-anchor" href="#_9-练习-生成代码" aria-label="Permalink to &quot;9.练习:生成代码&quot;"></a></h1><p><em>到目前为止,我们的冒险游戏有 10 个对象。每个对象由有 5 个属性组成。一个真正的文本冒险可能有数百个甚至数千个对象,并且每个对象的属性数量也可能增加(请参阅下一章)。在目前的形式下,维护如此庞大的对象和属性列表将很困难。</em></p><p>例如,当我们在添加对象 <em>wallField</em> 和 <em>wallCave</em> 时,我们必须在三个不同的位置执行此操作:一次在 <em>object.h</em> 中(作为<em>#define</em>),两次在 <em>object.c</em> 中(数组 <em>objs</em> 中的一个元素,以及一个单独的标签数组)。这显然十分笨拙并且容易出错。</p><p>我们将不再手工维护 object. h 和 object. c而是从更适合我们需要的单一源开始生成文件。这个新的源文件可以用你喜欢的任何语言 ( 典型的是某些特定领域的语言 ),只要你有工具把它转换回 C。下面是一个简单的例子考虑下列布局来组织我们的对象</p><div class="language-txt vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">txt</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span> /* Raw C code (declarations) */</span></span>
<span class="line"><span>- ObjectName</span></span>
<span class="line"><span> AttributeName AttributeValue</span></span>
<span class="line"><span> AttributeName AttributeValue</span></span>
<span class="line"><span> ...</span></span>
<span class="line"><span>- ObjectName</span></span>
<span class="line"><span> AttributeName AttributeValue</span></span>
<span class="line"><span> AttributeName AttributeValue</span></span>
<span class="line"><span> ...</span></span>
<span class="line"><span>- ...</span></span></code></pre></div><p>根据到目前为止收集的对象,我们可以构造以下源文件。文件名并不重要;我只是简单地将其命名为<em>object.txt</em>,以明确它与<em>object.h</em>和<em>object.c</em>相关。</p><h2 id="object-txt" tabindex="-1">object.txt <a class="header-anchor" href="#object-txt" aria-label="Permalink to &quot;object.txt&quot;"></a></h2><div class="language-txt vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">txt</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>#include &lt;stdio.h&gt;</span></span>
<span class="line"><span>#include &quot;object.h&quot;</span></span>
<span class="line"><span></span></span>
<span class="line"><span>typedef struct object {</span></span>
<span class="line"><span> const char *description;</span></span>
<span class="line"><span> const char **tags;</span></span>
<span class="line"><span> struct object *location;</span></span>
<span class="line"><span> struct object *destination;</span></span>
<span class="line"><span>} OBJECT;</span></span>
<span class="line"><span></span></span>
<span class="line"><span>extern OBJECT objs[];</span></span>
<span class="line"><span>//对象</span></span>
<span class="line"><span>- field</span></span>
<span class="line"><span> description &quot;an open field&quot;</span></span>
<span class="line"><span> tags &quot;field&quot;</span></span>
<span class="line"><span></span></span>
<span class="line"><span>- cave</span></span>
<span class="line"><span> description &quot;a little cave&quot;</span></span>
<span class="line"><span> tags &quot;cave&quot;</span></span>
<span class="line"><span></span></span>
<span class="line"><span>- silver</span></span>
<span class="line"><span> description &quot;a silver coin&quot;</span></span>
<span class="line"><span> tags &quot;silver&quot;, &quot;coin&quot;, &quot;silver coin&quot;</span></span>
<span class="line"><span> location field</span></span>
<span class="line"><span></span></span>
<span class="line"><span>- gold</span></span>
<span class="line"><span> description &quot;a gold coin&quot;</span></span>
<span class="line"><span> tags &quot;gold&quot;, &quot;coin&quot;, &quot;gold coin&quot;</span></span>
<span class="line"><span> location cave</span></span>
<span class="line"><span></span></span>
<span class="line"><span>- guard</span></span>
<span class="line"><span> description &quot;a burly guard&quot;</span></span>
<span class="line"><span> tags &quot;guard&quot;, &quot;burly guard&quot;</span></span>
<span class="line"><span> location field</span></span>
<span class="line"><span></span></span>
<span class="line"><span>- player</span></span>
<span class="line"><span> description &quot;yourself&quot;</span></span>
<span class="line"><span> tags &quot;yourself&quot;</span></span>
<span class="line"><span> location field</span></span>
<span class="line"><span></span></span>
<span class="line"><span>- intoCave</span></span>
<span class="line"><span> description &quot;a cave entrance to the east&quot;</span></span>
<span class="line"><span> tags &quot;east&quot;, &quot;entrance&quot;</span></span>
<span class="line"><span> location field</span></span>
<span class="line"><span> destination cave</span></span>
<span class="line"><span></span></span>
<span class="line"><span>- exitCave</span></span>
<span class="line"><span> description &quot;an exit to the west&quot;</span></span>
<span class="line"><span> tags &quot;west&quot;, &quot;exit&quot;</span></span>
<span class="line"><span> location cave</span></span>
<span class="line"><span> destination field</span></span>
<span class="line"><span></span></span>
<span class="line"><span>- wallField</span></span>
<span class="line"><span> description &quot;dense forest all around&quot;</span></span>
<span class="line"><span> tags &quot;west&quot;, &quot;north&quot;, &quot;south&quot;, &quot;forest&quot;</span></span>
<span class="line"><span> location field</span></span>
<span class="line"><span></span></span>
<span class="line"><span>- wallCave</span></span>
<span class="line"><span> description &quot;solid rock all around&quot;</span></span>
<span class="line"><span> tags &quot;east&quot;, &quot;north&quot;, &quot;south&quot;, &quot;rock&quot;</span></span>
<span class="line"><span> location cave</span></span></code></pre></div><div class="warning custom-block"><p class="custom-block-title">🤔 思考题:你能否自己用 C 来实现这段伪代码?</p></div>`,9),l=[t];function o(i,c,u,r,d,q){return a(),n("div",null,l)}const m=s(e,[["render",o]]);export{h as __pageData,m as default};