[wizs] 仿臉書塗鴉牆
聖殿有做出雛型,想跟大家分享並交流一下做法。
妳 在 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
推
03/23 15:35, , 1F
03/23 15:35, 1F
推
03/23 16:34, , 2F
03/23 16:34, 2F
推
03/23 18:32, , 3F
03/23 18:32, 3F
→
03/24 20:28, , 4F
03/24 20:28, 4F
推
03/25 09:12, , 5F
03/25 09:12, 5F
mud 近期熱門文章
PTT遊戲區 即時熱門文章