# 第一个程序

新书开始的第一章，本来想以“为什么我想成为程序员”的契机入手，写点什么有趣或者让人吃惊的故事。

结果却反而让我吃了一惊：无论我怎么回忆，都想不起来那个“想要成为程序员”的瞬间了，似乎“成为程序员”这个想法是我与生俱来的，跟吃饭喝水一样的本能。

不过我倒是能回忆起来自己成为开发者的时刻：小学的时候我就接触了电脑，并且接触到了一个叫做《万王之王》的网络游戏，那些年的网游都有一个特点，就是前期铺垫很足，但是显然没怎么考虑后期要让玩家干什么，《万王之王》也是如此。

升到满级之后，为了让玩家有点事做，它加入了一种“额外点数”的机制，玩家满级之后，再7\*24小时的打上十天半个月的怪物，就能获得一个额外的技能点数，额外的点数越多，自然也就越强。

即使再沉迷游戏，也很难有人类能够完成如此枯燥又永无止境的工作，于是各种游戏外挂应运而生，其中有一款叫做zkok的外挂佼佼者，它有两个特点：

一是这个外挂可以脱离游戏客户端直接单独运行，也就意味着外挂可以跳过UI，直接操作玩家的一切行为；

另一个是，它自创了一套脚本语言，所有人都可以通过脚本语言来控制自己角色的行为，某种程度上来说，脚本语言就像是在为自己角色“注入灵魂”。

如今网络上还能搜到一些曾经的zkok的脚本：

```
%scene time_blink
30:time_blink_bc:time_blink
:pop next

%scene begin
30:retime_bc:cast retime on
30:time_break_bc:cast time_break on woman

%scene soul_steal
30:soul_steal_bc:cast soul_steal on %(0,2)
30:soul_steal_bc:cast soul_steal on %(0,3)
30:soul_steal_bc:cast demon_strike on
:pop next
%bc retime_bc
retry:0.5:但是什麽也没发生。
next::回时术的力量%*
call:time_blink:你低头凝神%*
call:soul_steal:你的法力不够 !!
retry:0.5:你上一个动作没有完成, 不能施法!

%bc time_blink_bc
retry:0.5:你才刚扰动过时空能流，时空能流还不稳定。
retry:0.5:你试图扰动时空能流，但是失败了。
next::你的身体突然由内向外放出光芒，以极快的速度闪了几闪。
next::你现在并不忙碌。

%bc time_break_bc
call:soul_steal:你的法力不够 !!
retry:0.5:你上一个动作没有完成, 不能施法!
retry::但是什麽事也没发生。
call:time_blink:你喃喃念道 : 梅加欧依 ～～ 泰依欧姆 ～～ 克雷格 ...

%bc locate_bc
next::你正忙著呢 !
next::你才使用传送不久，没办法这麽快再用。
next:3:你的四周突然一阵模糊不清，转眼间你就消失了。

%bc soul_steal_bc
call:time_blink:你在你和%*
call:time_blink:你划下的六芒星突然发出黑暗的幽光 ...
retry:0.5:但是什麽事也没发生。
retry:0.5:你上一个动作没有完成, 不能施法!
next:你得到 %* 点经验。)
next::你的法力不够 !!
next::那里没有任何人。
next::你现在不在战斗中。
```

深入一点学习的话，还能发现条件、循环、跳转、函数定义和调用之类的语法，即使从今天的视角看，这种语言也可以称得上是某种“程序”。

于是我为了玩游戏能更好的挂机，成为了开发者。

我写的第一个让自己非常满意的程序，应该是实现了一个游戏里的“自动问答机器人”：可以一边打怪练级，一边在世界频道发些城邦（类似于现在游戏里的公会）招人的广告，最重要的是，在其他人私聊我之后，可以让他们通过输入“1”、“2”、“3”之类的内容，可以触发不同的回复内容，也可以自动邀请人加入公会，甚至可以自动完成交易。

那个时候我应该小学刚毕业没多久，在完成这个程序之后，我每天所做的事情就是看着这个“机器人”有没有顺利的完成自己的工作，并对自己写出来的脚本能一次又一次的正确的实现我的意图而惊叹。


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://become-a-programmer.2baxb.me/cheng-wei-kai-fa-zhe/di-yi-ge-cheng-xu.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
