打印

为活跃论坛,大家加油顶到11,再发好工具!!

本帖已经被作者加入个人空间
a.        取消了指针

指针是引起程序不稳定的重要因素,因此 ACI取消了指针这个类型。ACI 采用新增的数组(array) 类型和传址方式来替代指针发挥的作用。

数组类型替代了传统C使用指针来实现数组的方式,虽然效率有所损失,但是它可以避免C语言在错误的使用指针时会导致崩溃的问题。

为了在函数中对输入的参数设置返回值,ACI引入了传址方式,比较下面两段代码:

TOP

传统C代码:

int get_value(int *n)
{
*n = 1;
return 1;
}

TOP

调用时:

int ret;
int n;
ret = get_value(&n);

TOP

ACI代码:

int get_value(int &n)
{
    n = 1;
    return 1;
}

TOP

调用时:

int ret;
int n;
ret = get_value(&n);

TOP

这两段代码实现的功能是一样的,差别在于函数的定义:*n 和 &n,函数内使用时:*n和n。在调用函数时,都需要指明&前缀。

TOP

b.        取消了结构

结构虽然高效,但是使用过于僵化,不利于快速的编写合适的代码,因此 ACI 取消了结构,采用了更灵活的映射(mapping)类型来替代结构,参见下面两段代码。

TOP

传统C代码:

struct object_t {
    int id;
    int x;
    int y;
};

struct object_t ob;
ob.id = 1234;
ob.x = 1;
ob.y = 1;

TOP

ACI 代码2:

#define OB_KEY_ID        1
#define OB_KEY_X                2
#define OB_KEY_Y                3

mapping ob;

ob = ([ ]);
ob[OB_KEY_ID] = 1234;
ob[OB_KEY_X] = 1;
ob[OB_KEY_Y] = 3;

TOP

通过两段代码的对比可以看出,传统C语言需要预先定义结构,然后才能使用结构内的成员。ACI通过mapping来实现类似的数据结构,使用前不需要声明。使用的时候可以用字符串作关键字,也可以用整数。

TOP

1.2.2        ACI 和脚本有什么区别

ACI 和脚本并非一样,脚本类似于批处理,只能按照顺序执行命令和实现一些简单的逻辑,ACI 支持的 C 语言拥有强大的逻辑处理能力,并且可以利用宏和函数来实现非常复杂的操作,对于初学者来说这是一个艰巨的任务,但是当你具有了驾驭ACI的能力的时候,就可以体验到它强大的逻辑处理功能。

TOP

2.        ACI 入门说明

2.1        编写第一段 ACI 程序:Hello word!

打开百宝箱,登陆进入游戏,切换到 ACI 页面。 点击刷新按钮可以查阅该角色的 ACI 代码。你看到的是空白?那就对了, 因为一开始你并没有编写任何代码。上面的窗口是代码窗口,供你输入,编写代码,相应的下面的窗口是调试窗口,输出运行时各种调试信息。好,现在在代码窗口输入以下代码:

printf("Hello world!\n");

TOP

注意,C 里面是分辨大小写的,所以不要自作主张把 printf 修改为Printf 或者 PRINTF,最好是将这段代码通过复制粘贴的手段输入到百宝箱的窗口中。

代码就绪以后,点击加载。这时候你将在下面的窗口看到:

Hello world!

此时恭喜你,你已经成功地写好了第一个 ACI 程序。

TOP

2.2        编写一个具有简单逻辑的 ACI 程序:连续密语

首先你准备一个小号,注意,不要搔扰别人。

输入以下代码:

for (i = 0; i < 10; i++)
    tell("小号的名字", "Test " + i);

注意,"小号的名字"请替换成为自己准备的小号的游戏人物名字,而不要真的输入"小号的名字"。

TOP

然后再选择加载(上一次加载的程序会自动地卸载,所以你无需操心卸载的问题)。此时你在窗口上可能看不到任何反应,但是你可以切换到小号上观察,聊天窗口会有类似的文字:

测试号的名字=> Test 0
测试号的名字=> Test 1
测试号的名字=> Test 2
测试号的名字=> Test 3
测试号的名字=> Test 4
测试号的名字=> Test 5
测试号的名字=> Test 6
测试号的名字=> Test 7
测试号的名字=> Test 8
测试号的名字=> Test 9

TOP

当前时区 GMT+8, 现在时间是 2008-11-23 08:31
新ICP备05002317号
Powered by Discuz! 6.0.0 © 2001-2007 Comsenz Inc.
Processed in 0.019899 second(s), 7 queries, Gzip enabled
TOP
清除 Cookies - 联系我们 - 网络游戏代理 - Archiver - - WAP
Designed By Discuz! 百宝箱论坛