mud_sanc 板


LINE

各位 wiz 大多已有 80% 以上初阶 LPC 的功力,spoke 翻译的文章 里头讲的东西各位就算原先不知它的来龙去脉,也几乎都会用了。 这里拿几个需要特别提出来的地方来讲。 LPC 是一种非常易於学习的程式语言 有心的话很快就可以学会它,通常如果摸超过五年,就会想把它 应用在现实生活中;摸超过十年,就会想说它能不能对工作有帮 助。会 asp 与简易 c/vb/java1 的人上手特别快。 虽然一个物件里面并没有规定要从一个固定的地方开始执行程式, driver 却要 先找到一个固定的地方并执行之, 才能初始化一个物件. 在精简模式的 driver 上, 这是一个叫作 reset() 的函式. 在原始模式 mud 中, 则是 create(). 这个是泛指大部份的情况,圣殿的物件通常会有个 create 函数 通常就是透过 create 函数去做初始的设定。 但这个并不是必要的,以圣殿为例,设定一个房间就像底下... inherit ROOM; void create() { ::create(); set("short","一间房间"); } 但这样的房间也可以用底下的东西来实现... mapping data=(["short":"一间房间"]); mapping query_ob_data() { return data; } mixed query(label) { return _query(data,label); 因为一般的房间只要宣告 data 这个变数,并定义两个方法给 它: query_ob_data 以及 query,就可以是房间了,因为这样 的房间假设叫 ob,我们可以 ob->query_ob_data() ,也可以 ob->query(xxx) (大部份读物件资料都是靠这样子读) 不过一般会建议若要采简易写法,最好还是.. inherit ROOM; mapping data=([ 看要塞啥资料给它再塞 ]); 也就是继承 room 会有的一些函数库与变数,然後再自定变数 的资料给它,各位可以 more /std/ob/room.c 来看一个房间 大概定义了哪些基本的函数给它。 这里延伸了一个概念。假设我们弄了一个房间出来,然後我们 不允许这个房间的资料(data变数)被修改,简易的做法就是.. inherit ROOM; mapping data=([ 看要塞啥资料给它再塞 ]); void set(string label,mixed value) { } void add(string label,mixed value) { } void delete(string label,mixed value) { } 这样对这个房间的 set、add、delete 等动作就会失效。 函式库 通常一个系统包含几个部份... 1)资料库 2)函式库 3)程式集 函数与程式集的差异通常只在 return 值的部份,例如说底 下的东西.. string query_ppl_name(object ppl) { return ppl->query("name"); } 这东西硬要去分它是函式库的函数或是一个副程式没啥意义 ,用功能去区分,这函数是读 ppl 的 name,只用来读 ppl 的 name 而已也没做啥,写这东西出来是要给系统里头几个 地方用的(例如很多地方都必须读玩家的 name).. 那它就比较像函数,而其实所谓函数就是我们丢给它一个东 西,它会出现别的东西(例如 y = f(x), 丢 x 给 f, 它会给 我们 y) 副程式就类似底下.. void set_ppl_name(object ppl,string names) { ppl->set("name",names); } 就是我们希望它做啥事,然後系统里头很多地方都需要做同 样的事时,就可以把它独立出来写成副程式。 我最近会开始讲家族系统,并且解开 /adm/group 的可读权 限,大概就会讲到类似的东西。 回圈 使用 while 之类的回圈语法时,要注意一件事,就是要设定 它的终止条件。没有中止条件的回圈就类似底下.. while(1) { ... } 因为 1 这东西代表的是 true,每回一次它都判断其为真, 一直为真,就一直回圈。 回圈中止条件一般有两种常见设法.. while(在这里设定中止条件) 或者 while() { 在某个地方设定中止条件; } 例如拿同一件事来说,要跑 1 + 2 + ... +100,写法一是.. i=1; sum=0; while(i++<100) sum=sum+i; 写法二是.. i=0; sum=0; while(i++) { sum=sum+i; if(i==100) break; } 比较要注意的是,以上面的 i==100 break 为例,个人写程式 多年,个人的经验就是,宁愿给它 range 较大的限制范围,也 不要太执着於把程式写的很精准。 例如我的写法通常就是 if(i>=100) break; 这是为了以防万一。另外写在回圈内的终止条件,如果是一个 大回圈 or 多层式回圈,终止条件也可以考虑给两个以上。 而大部份 do {} 能做的事情 while 也能做,圣殿 do 用的比较 少。 Laechan --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.170.228.153







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:BabyMother站内搜寻

TOP