style: html to md syntax
This commit is contained in:
@@ -24,7 +24,7 @@
|
||||
| 玩家从演员那里收到物品 | ask | silver->location = player; |
|
||||
| 列出其他演员的库存 | examine | listObjectsAtLocation(guard); |
|
||||
|
||||
你可以尝试去使用这些命令(上面的前两个示例已经在上一章中实现了)。现在,我们将为玩家和非玩家角色介绍一些典型的<strong>物品栏</strong>操作(命令<em>获取</em>、<em>掉落</em>、<em>给予</em>、<em>询问</em>和<em>物品栏</em>)。
|
||||
你可以尝试去使用这些命令(上面的前两个示例已经在上一章中实现了)。现在,我们将为玩家和非玩家角色介绍一些典型的**物品栏**操作(命令*获取*、*掉落*、*给予*、*询问*和*物品栏*)。
|
||||
|
||||
::: warning 🤔 思考题:
|
||||
你能不能尝试自己实现一下上面的命令?
|
||||
@@ -32,7 +32,7 @@
|
||||
如果你可以在不参考下面内容的情况下就写出基本内容会有很大收获的
|
||||
:::
|
||||
|
||||
## <strong>parsexec.c</strong>
|
||||
## **parsexec.c**
|
||||
|
||||
```c
|
||||
#include <stdbool.h>
|
||||
@@ -91,7 +91,7 @@ bool parseAndExecute(char *input)
|
||||
|
||||
新命令由以下模块实现。
|
||||
|
||||
## <strong>inventory.h</strong>
|
||||
## **inventory.h**
|
||||
|
||||
```c
|
||||
extern void executeGet(const char *noun);
|
||||
@@ -101,7 +101,7 @@ extern void executeGive(const char *noun);
|
||||
extern void executeInventory(void);
|
||||
```
|
||||
|
||||
## <strong>inventory.c</strong>
|
||||
## **inventory.c**
|
||||
|
||||
```c
|
||||
#include <stdio.h>
|
||||
@@ -160,7 +160,7 @@ void executeInventory(void)
|
||||
}
|
||||
```
|
||||
|
||||
注意:由于动词名词比较好弄,命令 <em>ask</em> 和 <em>give</em> 只有一个参数:item。
|
||||
注意:由于动词名词比较好弄,命令 *ask* 和 *give* 只有一个参数:item。
|
||||
|
||||
::: warning 🤔 思考题:
|
||||
为什么我们要这样设计?
|
||||
@@ -168,7 +168,7 @@ void executeInventory(void)
|
||||
你能否为这些命令多加几个参数?
|
||||
:::
|
||||
|
||||
从本质上讲,<em>get</em>, <em>drop</em>, <em>give</em> and <em>ask 这些命令</em>除了将项目从一个地方移动到另一个地方之外,什么都不做。单个函数 <em>move 对象</em>可以对所有四个命令执行该操作。
|
||||
从本质上讲,*get*, *drop*, *give* and *ask 这些命令*除了将项目从一个地方移动到另一个地方之外,什么都不做。单个函数 *move 对象*可以对所有四个命令执行该操作。
|
||||
|
||||
## move.h
|
||||
|
||||
@@ -229,7 +229,7 @@ void moveObject(OBJECT *obj, OBJECT *to)
|
||||
::: warning 🤔 思考题:识别一些我们拿不了的物品需要考虑什么因素?
|
||||
:::
|
||||
|
||||
命令“get”使用函数<em>getVisible</em>将名词转换为 object,就像命令“go”一样;请参阅上一章。但是对于对玩家(或其他一些参与者)已经持有的对象进行<em>drop</em>, <em>ask</em>, <em>give 等</em>命令时,我们需要稍微不同的东西。我们将在 <em>noun.c</em> 中添加一个函数 <em>getPossession</em>。
|
||||
命令“get”使用函数*getVisible*将名词转换为 object,就像命令“go”一样;请参阅上一章。但是对于对玩家(或其他一些参与者)已经持有的对象进行*drop*, *ask*, *give 等*命令时,我们需要稍微不同的东西。我们将在 *noun.c* 中添加一个函数 *getPossession*。
|
||||
|
||||
## noun.h
|
||||
|
||||
@@ -318,9 +318,9 @@ OBJECT *getPossession(OBJECT *from, const char *verb, const char *noun)
|
||||
}
|
||||
```
|
||||
|
||||
注意:新函数(45-75 行) <em>getPossession</em> 是 <em>getObject</em> 的装饰器(wrapper)(参见第 52 行),它要么返回匹配的对象,要么返回 NULL(如果没有合适的对象与名词匹配)。
|
||||
注意:新函数(45-75 行) *getPossession* 是 *getObject* 的装饰器(wrapper)(参见第 52 行),它要么返回匹配的对象,要么返回 NULL(如果没有合适的对象与名词匹配)。
|
||||
|
||||
函数 <em>actor 这里</em>用于命令 <em>give</em> 和 <em>ask</em>,但它也可能由其他命令调用。所以我们在<em>misc.c</em>中定义了它。
|
||||
函数 *actor 这里*用于命令 *give* 和 *ask*,但它也可能由其他命令调用。所以我们在*misc.c*中定义了它。
|
||||
|
||||
## misc.h
|
||||
|
||||
@@ -370,7 +370,7 @@ int listObjectsAtLocation(OBJECT *location)
|
||||
::: warning 🤔 思考题:上面第四行中的函数 actorHere 返回的指针指向什么?
|
||||
:::
|
||||
|
||||
在第 9 行中,有一个详尽的,硬编码的非玩家角色列表(到目前为止,只有一个:<em>守卫</em>)。
|
||||
在第 9 行中,有一个详尽的,硬编码的非玩家角色列表(到目前为止,只有一个:*守卫*)。
|
||||
|
||||
在第 10 章中,我们将开始使用属性作为区分角色与项目和其他非参与者对象的更优雅方式。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user