作者laechan (小太保)
看板mud
标题[wizs] 仿脸书涂鸦墙
时间Fri Mar 23 10:45:12 2012
圣殿有做出雏型,想跟大家分享并交流一下做法。
你 在 2011亚职大赛11/25 统一狮VS软银鹰 这个赌盘上买了
4.赞助赌盘 9999 注,总金额是 19998000 影特币。
扣顶机器(Laechan:进阶牧师)
你 在 2011亚职大赛11/25 伯斯热火VS三星狮 这个赌盘上买了
4.赞助赌盘 9999 注,总金额是 19998000 影特币。
晚上coding(Laechan:进阶法师)
你 与 skuld 成为邻居了。
晚上coding(Laechan:进阶法师)
测试讯息。
> wall
wall(涂鸦墙)指令说明:
===========================================================
wall -open 开启自己的涂鸦墙
wall -close 关闭自己的涂鸦墙
wall -list 浏览自己的涂鸦墙
wall -post [讯息] 张贴一则讯息在涂鸦墙上
wall -remove [编号] 移除一则自己涂鸦墙上的讯息
wall -hide [邻居] 让涂鸦墙暂时隐藏某一位邻居发出的讯息
wall -praise [编号] 对某一则讯息按「赞」
wall -gan [编号] 对某一则讯息按「干」
wall -share [编号] 分享某一则讯息给邻居
wall -set 设定自己的涂鸦墙
===========================================================
大抵上,每一位玩家都有属於自己一个涂鸦墙储存档,例如
laechan.o。
我目前的做法是,比方我加了 10 个朋友,则我(或系统)在
我的墙上发布一则讯息时,该讯息会同时写入 10 个朋友的
涂鸦墙。
讯息资料格式如下..
msgs=({"流水编号",
"$N 在慈善扑克大赛中赢了 $O 两百万影特币。$T",
"laechan","norr",({朋友串}));
则当该讯息是贴在自己墙上时
msg=substr(msgs(1),"$N","你");
msg=substr(msg,"$O",msgs[3]);
当该讯息是贴在 $O 那一位墙上时
msg=substr(msgs(0),"$O","你");
msg=substr(msg,"$N",msgs[2]);
当该讯息是贴在其它人的墙上时
msg=substr(msgs(0),"$N",msgs[2]);
msg=substr(msg,"$O",msgs[3]);
最後再处理 $T
// wall_format_time() 函数即是自订函数,
// 可显示例如 3/23 10:30am. 这样的格式.
msg=substr(msg,"$T",wall_format_time(time());
每一则讯息都有流水编号,用意很简单,比方 laechan 身为
讯息发表主体,当他在自己的涂鸦墙删除了这笔讯息时
1.读出 laechan 的所有朋友
2.检视这些朋友的涂鸦墙里有没有相同编号的讯息
有的话就同时删除。
3.再区分「单除清除堆积的讯息」或是「真的要删除这笔讯息
,连朋友涂鸦墙的也一起删」。
然後涂鸦墙上的所有讯息再以底下格式储存
wall_msgs=({
({"编号","讯息",$N,$O}),
({"编号","讯息",$N,$O}),
.
.
});
这样当新的 msgs 加进来时就可以采用底下做法
wall_msgs+=({ msgs });
然後做讯息显示时「让它从最底下那一笔开始显示起」,做法
就是..
j = sizeof(wall_msgs);
wall_msg="你的涂鸦墙讯息如下:\n";
while(j-->=0)
wall_msg+=wall_msg_string(wall_msgs[j]);
write(wall_msg);
而且当 laechan 的其中某个朋友跟 laechan 脱离朋友关系时
,该朋友涂鸦墙上与 laechan 有关的讯息也可以删除.
j = sizeof(wall_msgs);
while(j-->=0)
{
msgs=wall_msgs[j];
// 找寻 $N 跟 $O 里头有 "laechan" 的
if(msgs[2] == "laechan" || msgs[3] == "laechan")
wall_msgs-=msgs;
}
另外,也可以自动判断 size 做定时的讯息清除(非删除)
j = sizeof(wall_msgs);
if(j > 最大笔数)
clean_wall_msgs(wall_msgs,最大笔数);
上面的意思就是,假设最大笔数 50,而 wall_msgs 有 60 笔
,它就会把 wall_msgs[0]~wall_msgs[9] 清掉(因为越後面的
资料越新)。
for(i=0;i<j-最大笔数;i++)
{
msgs=wall_msgs[i];
wall_msgs-=msgs;
}
因为每一笔资料的流水编号不同,就可确保 wall_msgs 里面的
每一个 element-array 都是不一样的。
目前大致做到以上的程度,欢迎大家一起交流一下。
LAechan
--
A男:
抱歉!我们原先提出的方案是22K,我们无法接受18K这样的委托!
B男:我们会找到更好的机会,走吧!(四男一起离开,留下错愕的官员)
C男:都没人想过,或许更低薪资的方案,反而能替自己找到更好的工作!
D男:你说的没错,来!让我们兄弟齐心,一起开创新的台湾工人史!
~Johnny Worker~ 「
Keep Working!」
<2010 囧尼‧工人 第一部完 待续> ψlaechan
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 223.142.216.208
1F:推 belion:真强 0.0 03/23 15:35
2F:推 Searle:有趣XD 其实就很像board 03/23 16:34
3F:推 takeya:COOL~~ 03/23 18:32
4F:→ funbook:还能骂脏话,这这..... 03/24 20:28
5F:推 QQmother:按干..XD 03/25 09:12