Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
{
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {

"source.organizeImports": "explicit"
},
"workbench.colorTheme": "Default Dark+"
"workbench.colorTheme": "Quiet Light"
}
2 changes: 1 addition & 1 deletion static/locales/en-US/how/animated-scene.txt
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ Scene([
])
\

@Scene can also take a @Group of text too, and it will wait for all its content to finish animationg.
@Scene can also take a @Group of text too, and it will wait for all its content to finish animation.

\
Scene([
Expand Down
4 changes: 2 additions & 2 deletions static/locales/zh-CN/how/animate-phrase.txt
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
使角色动画化

角色可以拥有静止动画,该动画在角色不动时重复
角色可以设置静止动画,该动画在角色不动时循环

例如,让我们通过旋转和移动让这只猫跳一点舞
例如,让我们通过旋转和移动让这只猫跳跳舞

\Phrase('🐈' resting: Sequence({
0%: Pose(rotation: 0°)
Expand Down
14 changes: 7 additions & 7 deletions static/locales/zh-CN/how/animated-scene.txt
Original file line number Diff line number Diff line change
@@ -1,27 +1,27 @@
创建一系列动画场景

有时我们想讲述故事、展示歌词或使诗歌生动起来。为此,我们可以使用 @Scene 和 @Phrase 一起来展现一个序列
有时我们想讲述故事、展示歌词或者制作诗歌动画。为此,我们可以使用 @Scene 和 @Phrase 一起来展现一组镜头

例如,假设我们想要将短小的童谣“Jack be Nimble”制作成动画。我们可以做一个 @Scene 每一行都是 @Phrase ,并通过设置 @Phrase/duration 每行, @Scene 每完成一个短语就会前进
例如,假设我们想要将童谣“Jack be Nimble”制作成动画。我们可以做一个每一行都是 @Phrase 的 @Scence,并通过设置每行的 @Phrase/duration, 让@Scene 每完成一个短语就会推进

\Scene([
Phrase('杰克很灵活' duration: 1s)
Phrase('杰克很敏捷' duration: 1s)
Phrase('杰克快点' duration: 1s)
Phrase('杰克跳过蜡烛杆' duration: 1s)
])\

@Scene 将等待 @Sequence 也要做。让我们让蜡烛线跳起来!
@Scene 会等待 @Sequence 完成。让我们让蜡烛线跳起来!

\Scene([
Phrase('杰克很灵活' duration: 1s)
Phrase('杰克很敏捷' duration: 1s)
Phrase('杰克快点' duration: 1s)
Phrase('杰克跳过蜡烛杆' entering: Sequence(bounce() 1s))
])\

@Scene 还可以 @Group 文本也是如此,它将等待所有内容完成动画
@Scene 还可以用一个 @Group 的文本,它将等待所有内容来完成动画

\Scene([
Group(Stack() [Phrase('杰克很敏捷') Phrase('杰克快点')] duration: 2s)
Group(Stack() [Phrase('杰克很灵活') Phrase('杰克很敏捷')] duration: 2s)
Phrase('杰克跳过蜡烛杆' entering: Sequence(bounce() 1s))
])\

Expand Down
49 changes: 37 additions & 12 deletions static/locales/zh-CN/how/choose-adventure.txt
Original file line number Diff line number Diff line change
@@ -1,27 +1,52 @@
进行文字冒险

一种有趣的游戏是/选择你自己的冒险/游戏中,玩家需要做出一系列选择,并尝试找到通往幸福结局的方法。
一种有趣的游戏是/选择你自己的冒险/游戏,玩家需要做出一系列选择,并尝试找到通往幸福结局的方法。

为了制作其中之一,我们可以使用 @Structure , @Key , @Reaction , 和 @List 共同做出一系列决定,每个决定都有一组选项,如下所示:
我们可以使用 @Structure , @Key , @Reaction , 和 @List 共同做出一系列决定,每个决定都有一组选项,如下所示:

\¶这就形成了一个数据结构,用于存储选择以及它将导航到哪个决策。¶•Option(text•'' decision•#)
¶此数据结构存储了选择列表¶•Decision(options: [Option])
¶这就是游戏内容!更改选项中的文本,营造氛围,并做出艰难的选择。添加选项来创建一个棘手的选择网络。¶
\¶这就形成了一个数据结构,用于存储选择以及它将导航到哪个决策。
¶•Option(text•'' decision•#)

¶这个数据结构存储了一个列表的选项¶
•Decision(options: [Option])

¶这就是游戏内容!更改选项中的文本,营造氛围,并做出艰难的选择。
添加选项来创造错综复杂的选择。¶
decisions: [
Decision([Option('开始' 2)])
Decision([Option('左边' 3) Option('直的' 4) Option('正确的' 4)])
Decision([Option('赢' 1)])
Decision([Option('失去' 1)])
]
¶如果密钥是数字,则将其转换为数字¶

¶如果按键是数字,则将其转换为数字¶
key: Key()
choice: key → #
¶该值代表上述列表中的当前决策。当按下该键时,我们会执行以下操作之一。如果这个决定只有一个选择,那么我们改变当前的决定无论按下什么键,都会做出选项的目标决定。如果按下的键介于 1 和选项数量之间,那么我们将转到该选项的目标决策。否则,我们就维持当前的决定。¶
current•#: 1 … ∆ key … decisions[current].options.length() = 1 ? decisions[current].options[1].decision ((choice ≥ 1) & (choice ≤ decisions[current].options.length())) ? decisions[current].options[choice].decision current
¶这只是将选项显示为一堆短语。您可以更改它以添加说明、动画和其他趣味内容!¶Stage([
Group(Stack() decisions[current].options.translate(ƒ(option) Phrase(option.text)))
])\

这个模式看起来很复杂,但它实际上的作用是显示当前的选项集,并且每次按键改变时,都会跳转到所选选项的决策。游戏设计的关键在于改变顶部的内容!
¶这个值代表上方列表中的当前选中的决定。
当按下该键时,我们会执行以下操作之一。
如果这个决策只有一个可选项,则无论按下哪个按键,都会将当前决策切换到该选项所指向的目标决策。
如果按下的按键在 1 到选项数量之间,就会跳转到对应选项的目标决策。
不然,我们就维持当前的决策。¶
current•#: 1 …
∆ key …
decisions[current].options.length() = 1 ?
decisions[current].options[1].decision
((choice ≥ 1) & (choice ≤ decisions[current].options.length())) ?
decisions[current].options[choice].decision
current

¶这只是将选项显示为一堆短语。你可以更改它以添加说明、动画和其他趣味内容!¶
Stage([
Group(
Stack()
decisions[current].options.translate(ƒ(option) Phrase(option.text))
)
])

\

这个模式看起来很复杂,但它本质上只是展示当前的选项,并在按键变化时跳转到你选择的决策。
游戏设计的关键,其实就在于不断变化页面顶部的内容!

offer-choices
8 changes: 4 additions & 4 deletions static/locales/zh-CN/how/custom-characters.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@

表情符号、字母和符号都很棒!但有时你想创建自己的角色。您如何创作并展示自己的作品?

首先,从在<人物@://characters> 。 您可以使用像素、矩形、圆形和路径。给它起一个名字,描述它,然后你可以使用你的用户名和角色名称,像这样:
首先,<人物@://characters> 页创造一个角色。 您可以使用像素、矩形、圆形和路径。给它起一个名字,描述它,然后你可以使用你的用户名和角色名称,像这样:

\Phrase(`看看我的奇思妙想 @username/charactername !`)\

该用户名和角色名称不存在,因此它将显示为一个空矩形。请务必使用您的真实用户名和角色名
该用户名和角色名称不存在,因此它将显示为一个空框框。请务必使用您的真实用户名和角色名

看到文本是如何使用反引号而不是引号的吗?这很重要。这告诉我们您正在使用富文本模式,并且需要引用自定义字符
看到文本是如何使用反引号而不是引号的吗?这很重要。这告诉我们您正在使用富文本模式,并且需要引用自定义角色

您可以从以下网址了解有关格式化文本的更多信息 @Phrase 。
你可以在 @Phrase 里了解更多关于文本格式的内容

animate-phrase
14 changes: 9 additions & 5 deletions static/locales/zh-CN/how/interactive-scene.txt
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
创建一系列交互式场景

有时我们想讲述一些故事,等待观众采取一些行动,然后再进入下一个内容
有时候,我们希望讲述的故事在继续到下一段内容之前,先等待观众执行某个操作

为此,我们可以使用 @Scene ,但把 @Boolean 我们要显示的内容之间的值。例如,点击后会前进到下一个内容,使用 @Button :
为了实现这一点,我们可以使用一个 @Scene,并在要显示的内容之间插入 @Boolean 值。
例如,下面的示例中,每次点击都会推进到下一段内容,这是通过 @Button 来实现的:

\Scene([
Phrase('点击我')
Expand All @@ -14,12 +15,15 @@
Phrase('你點擊我了嗎?' duration: 1s)
])\

这 @Scene 显示第一个 @Phrase ,然后等待 @Button 是真的,一旦是真的,它就会进入下一个 @Phrase 。
这个 @Scene 会先显示第一个 @Phrase,然后等待 @Button 变为 true。
一旦条件满足,就会推进到下一个 @Phrase。

您可以使用任何您想要推进的事情,只要它是真或假。例如,我们可以使用我们的声音!如果我们喊得足够大声,场景就会推进:
你可以使用任何方式来触发推进,只要它的结果是 true 或 false 即可。
例如,我们也可以使用声音!
如果我们喊得足够大,场景就会继续推进:

\Scene([
Phrase('有人在嗎?')
Phrase('有人在吗?')
Volume() > .5
Phrase("我听不见,再说一遍?" duration: 1s)
Volume() > .7
Expand Down
14 changes: 10 additions & 4 deletions static/locales/zh-CN/how/layering-images.txt
Original file line number Diff line number Diff line change
@@ -1,12 +1,18 @@
将图像层叠在一起

有时我们希望对图像进行分层,以构建有趣的场景或富有创意的形状
有时候,我们会想通过叠加图像来构建有趣的场景或富有创意的形状

例如,您可以在您的项目上使用多个层 @Stage 按照您喜欢的方式堆叠和排列图像
例如,你可以在 @Stage 上为项目使用多个图层,自由地堆叠和排列图像

看!这是我用形状制作的乌龟!尝试更改每个形状的数字。你可以移动它们、调整它们的大小,甚至旋转它们。玩一玩,看看你能创造什么!
看!这是我只用基本形状制作的一只小乌龟!
试着修改每个形状对应的数字吧。你可以移动它们、调整大小,甚至进行旋转。
多多尝试,看看你能创造出什么样的作品!

\¶注意:查看图库以了解另一个项目<例子@https://wordplay.dev/project/example-Layers?play>分层图像。¶Stage([
¶提示:可以去看看图库中的另一个示例项目
<example@https://wordplay.dev/project/example-Layers?play>,
了解更多关于图像分层的用法。¶

Stage([
Shape(Circle(3m 0m 1m 0m))
Shape(Polygon(2m 3 0m -12m 0m) rotation: -30°)
Shape(Polygon(7m 6 0m -6m 0m))
Expand Down
20 changes: 13 additions & 7 deletions static/locales/zh-CN/how/move-phrase.txt
Original file line number Diff line number Diff line change
@@ -1,21 +1,27 @@
使角色可移动

有时, @Phrase 可用键盘、鼠标或手指移动
有时候,让一个 @Phrase 可以通过键盘、鼠标或手指来移动会很有帮助

这样做,我们可以结合 @Phrase @Placement :
我们可以结合 @Phrase @Placement 来达成

\Stage([Phrase('让我动起来' place: Placement())] place: Place(0m 0m -10m))\
\
Stage(
[Phrase('move me' place: Placement())]
place: Place(0m 0m -10m)
)
\

使用键盘箭头或点击 @Stage 将更新 @Placement ,导致 @Phrase 朝那个方向前进。
使用键盘箭头或点击 @Stage 将更新 @Placement , @Phrase 朝那个方向前进。

但你知道吗, @Placement 可以与/任何事物/这需要 @Place ?例如 @Stage 有一个 @Place 这决定了相机指向的位置。让我们尝试设置一个 @Placement 对于 @Stage 的地方,看看会发生什么。
你知道吗,其实 @Placement 可以用在任何需要 @Place 的地方。
比如说,@Stage 也有一个 @Place,用来决定它的相机朝向哪里。
我们来试试看:给一个 @Stage 的 @Place 设置一个 @Placement,然后看看会发生什么。

\Stage([
Phrase('🐈' place: Place(-2m 2m))
Phrase('🐈' place: Place(2m -2m))
Phrase('🐈' place: Place(-1m 3m))
] place: Placement(Place(0m 0m -10m)))\

这会让相机移动!(注意:我们开始 @Placement 与\z\的价值\10m\这样相机就远离了一切。)

这会让相机移动!(注意:我们把 @Placement 的 \z\ 值从 \10m\ 开始,这样相机会往后退一些,离所有东西更远。)
animated-scene
4 changes: 2 additions & 2 deletions static/locales/zh-CN/how/repeating-a-movement.txt
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
重复动作

有时我们想让一个角色以相同的方式移动几次!一遍又一遍地输入相同的行变得很乏味
有时我们想让一个角色以相同的方式移动几次!一遍又一遍地输入相同的指令变得很乏味

相反,我们可以使用 @Sequence 和 @Phrase 让某件事重复多次!具体来说,我们可以使用计数 @Sequence 并选择一组姿势出现的次数。例如,这是一个篮球上下弹跳两次。
这时,我们可以使用 @Sequence 和 @Phrase 让某件事重复多次!具体来说,我们可以使用 @Sequence 的计数并选择一组姿势出现的次数。例如,这是一个篮球上下弹跳两次。

\Stage([
Phrase('🏀' entering: Sequence({
Expand Down
12 changes: 6 additions & 6 deletions static/locales/zh-CN/how/shake-phrase.txt
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
让角色摇晃
让字符产生抖动效果

有时让角色看起来在颤抖是有帮助的。我们可以通过几种方法来实现这一点
有时候,让一个字符看起来在“抖动”会很有用。我们可以用几种不同的方法来实现这个效果

我们可以使用 @Phrase/offset @Random @Time 来实现这一点。
我们可以使用 @Phrase/offset 结合 @Random @Time 来实现这一点。

\offset: 0m … ∆ Time() … Random(-0.1m 0.1m)
Phrase('你好' offset: Place(offset 0m))\

这将创建一个名为\offset\每当时钟滴答作响时,它就会变成一个新的随机值。然后,它使用该偏移量来显示 @Phrase 抵消该金额
这段代码会创建一个名为 offset 的值,它会在每次时间变化时被更新为一个新的随机值。然后,这个 offset 会被用来控制 @Phrase 的偏移位置,从而让文字产生抖动效果

如果我们想更精确地控制震动,我们可以使用 @Sequence 制作重复的随机摇动动画
如果我们想更精确地控制震动的节奏和幅度,可以使用 @Sequence 制作重复播放的随机抖动动画

\Phrase('你好' resting: Sequence({
0%: Pose(offset: Place(Random(-.2m .2m)))
Expand All @@ -18,6 +18,6 @@ Phrase('你好' offset: Place(offset 0m))\
75%: Pose(offset: Place(Random(-.2m .2m)))
} 0.1s))\

此示例仅选择一次随机值,但将它们变成重复序列
在这个例子中,系统只在开始时生成一次随机值,但会将这些值组织成一个可重复播放的序列,从而形成持续的抖动动画效果

move-phrase
32 changes: 16 additions & 16 deletions static/locales/zh-CN/how/styling-text.txt
Original file line number Diff line number Diff line change
@@ -1,37 +1,37 @@
文本样式
设置文本样式

有时我们希望文本脱颖而出。我们可以这样做/斜体/,*加粗*,还有更多
有时我们希望文本更加醒目。我们可以通过/斜体/,*加粗*或者更多方式

例如,要将文本设为斜体,可以用正斜杠 // 将其括起来,例如 //Hello//。例如:

\Group(Stack() [
Phrase(`想要展示一些/斜体/在你的文本中?`)
Phrase(`这对于强调或表达你的观点很有用/额外的爵士乐/。`)
Phrase(`只需在单词或短语前后加上斜线 (//),/像这样/。`)
Phrase(`想在文字里使用 /斜体/?`)
Phrase(`斜体很适合用来强调,或者给文字加点 /小花样/。`)
Phrase(`只要在单词或短语前后加一个斜杠 (//),/像这样/ 就行。`)
])\

@Phrase 还可以将文本加粗。你可以将文本用星号**括起来,例如**Hello**。例如:

\Group(Stack() [
Phrase(`想要让你的文字流行起来*大胆的*?`)
Phrase(`当你需要的时候,它是完美的*大声喊叫*。`)
Phrase(`只需在单词两边加上星号 (**),例如*嘿!*,并观察其击中效果的不同。`)
Phrase(`想用*粗体*让你的文字更显眼吗?`)
Phrase(`当你需要*大声强调*某句话的时候,粗体就很合适。`)
Phrase(`只需在单词两边加上星号 (**),例如*嘿!*,效果立马不一样了。`)
])\

@Phrase 还可以将文本加粗。为此,请使用插入符号 ^^ 包裹文本,例如 ^^Hello^^。例如:
@Phrase 也可以将文字设置为超粗体。只需要在文字前后加上插入符号 ^^,比如 ^^Hello^^。例如:

\Group(Stack() [
Phrase(`特别大胆的是^山羊^当你需要将氛围调到最大时。`)
Phrase(`就像大胆但更^火^,通常用一根胡萝卜围绕着 (^^)`)
Phrase(`用它来弯曲^标题^ 或者 ^伟大的想法^。`)
Phrase(`当你需要将氛围拉到最大时,超粗体将是^最棒的^。`)
Phrase(`它和粗体类似,但更 ^炸^,通常用 ^^ 把文字包起来。`)
Phrase(`它很适合用在 ^标题^ 或 ^重要观点^ 上。`)
])\

最后, @Phrase 可以为文本添加下划线。为此,请用下划线 __ 将文本括起来,例如 __Hello__。例如:
最后,@Phrase 可以为文本添加下划线。为此,将文本用下划线__括起来,就像 __Hello__。例如:

\Group(Stack() [
Phrase(`下划线是_低调的火_当您想让文本保持简洁但仍引人注目时。`)
Phrase(`在文本前后各添加一个下划线 (__),_像这样_,并且给予了清晰的强调。`)
Phrase(`它是 _完美的_表达你的观点,但又不会太_额外的_。`)
Phrase(`如果你想让文字看起来简洁又不失重点,下划线其实_很厉害_。`)
Phrase(`在文本前后各添加一个下划线 (__),_像这样_,这样强调的效果很清晰。`)
Phrase(`它_非常适合_用来表达重点,又不会显得太_用力_。`)
])\

custom-characters
Loading