[wizs] 仿臉書塗鴉牆

看板mud (網路地下城/文字遊戲)作者 (小太保)時間13年前 (2012/03/23 10:45), 編輯推噓4(401)
留言5則, 5人參與, 最新討論串1/1
聖殿有做出雛型,想跟大家分享並交流一下做法。 妳 在 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
真強 0.0
03/23 15:35, 1F

03/23 16:34, , 2F
有趣XD 其實就很像board
03/23 16:34, 2F

03/23 18:32, , 3F
COOL~~
03/23 18:32, 3F

03/24 20:28, , 4F
還能罵髒話,這這.....
03/24 20:28, 4F

03/25 09:12, , 5F
按幹..XD
03/25 09:12, 5F
文章代碼(AID): #1FQ-F7ww (mud)
文章代碼(AID): #1FQ-F7ww (mud)