[閒聊] 灌個水, coding 一下吧!!

看板mud (網路地下城/文字遊戲)作者 (小太保)時間16年前 (2009/11/13 15:25), 編輯推噓4(403)
留言7則, 5人參與, 最新討論串1/2 (看更多)
// XX農場 // 先不寫花、動物、裝飾、肥料、飼料、放蟲、放草等 inherit ROOM; mapping farms=([]), // 農田資料 bag=([]), // 袋子資料 warehouse=([]), // 倉庫資料 seeds=([]); // 種子資料 /* seeds=(["pear": (["name":"梨子", // 作物名稱 "value":5150, // 購買價 "seasons":3, // 類型(可收成幾季) "mellow_time":40, // 成熟時間 "mellow_again":14, // 再成熟時間 "output":40, // 預計產量 "unit_price":112, // 單個售價 "grow_lines":({10,8,8,7,7}), // 發芽→小葉→大葉→開花→成熟 ]), ]), */ void init() { add_action("show_farm","show"); // 顯示農地狀況 add_action("cultivate","caltivate"); // 種植 add_action("weed","weed"); // 除草 add_action("killpests","killpests"); // 除蟲 add_action("collect","collect"); // 收成 add_action("list","list"); // 顯示袋子、倉庫或商店 add_action("buy","buy"); // 買種子 add_action("sell","sell"); // 賣出作物 } int list(string str) { string *keys_data,tmps=""; int v,vv; mapping data=([]); if(!str || str=="") { write(@LONG list 指令語法: list -bag 顯示袋子資訊 list -warehouse 顯示倉庫資訊 list -store 顯示商店(作物)資訊 list [what] 顯示某一作物的詳細資訊 LONG ); return 1; } switch(str) { case "-store": keys_data=keys(seeds); tmps="商店販賣的作物有:\n"; foreach(str in keys_data) tmps+=sprintf(" %-24s 售價:%d 金幣\n", seeds[str]["name"]+"("+str+")",seeds[str]["value"]); this_player()->more(tmps); return 1; break; case "-warehouse": keys_data=keys(warehouse); tmps="你的倉庫裡頭有:\n"; foreach(str in keys_data) { v=(int)seeds[str]["unit_price"]*(int)warehouse[str]; vv+=v; tmps+=sprintf(" %-24s 數量:%d 售價:%d 金幣\n", seeds[str]["name"]+"("+str+")",warehouse[str],v); } tmps+="總售價:"+vv+" 金幣\n"; this_player()->more(tmps); return 1; break; case "-bag": keys_data=keys(bag); tmps="你的袋子裡頭有:\n"; foreach(str in keys_data) tmps+=sprintf(" %-24s 數量:%d\n", seeds[str]["name"]+"("+str+")",bag[str]); this_player()->more(tmps); return 1; break; } if(!data=seeds[str]) { write("list: 沒有 "+str+" 這個作物的資料喔.\n"); return 1; } tmps=data["name"]+"("+str+")這個作物的資料如下:\n"; vv=(int)data["output"]*(int)data["unit_price"]*(int)data["seasons"]; tmps+=sprintf("購買價  :%d\n類型   :%d 季作物\n成熟時間 :%d小時\n"+ "再成熟時間:%d小時\n預計產量 :%d個/季\n"+ "單個售價 :%d\n預計總收入:%d\n", data["value"],data["seasons"],data["mellow_time"], data["mellow_again"],data["output"],data["unit_price"], vv); write(tmps); return 1; } int sell(string str) { string tmps="",*keys_data,tmp; int vv; if(!str || str=="") { list("-warehouse"); write("你要賣出什麼呢?\n"); return 1; } if(!warehouse[str] && str!="all") { write("sell: 你的倉庫內沒有 "+str+" 這項東西喔.\n"); return 1; } keys_data=keys(warehouse); foreach(tmp in keys_data) { if(tmp==str || str=="all") { vv+=(int)seeds[tmp]["unit_price"]*(int)warehouse[tmp]); tmps+=sprintf(" %-24s 數量:%d\n", seeds[tmp]["name"]+"("+tmp+")",warehouse[str]); } } tmps+="總售價:"+vv+"金幣\n"+ "你確定要賣出嗎(y/n):"); input_to("check_sell",0,tmp,str); return 1; } int check_sell(string str,string tmp) { int v,total; string *keys_data; if(str=="Y" || "str=="y") { keys_data=keys(warehouse); foreach(tmp in keys_data) { if(tmp==str || str=="all") { v=(int)warehouse[tmp]; total+=v*(int)seeds[tmp]["unit_price"]; map_delete(warehouse,tmp); } } farms["golds"]+=total; write("sell: 你賣出了作物,獲得了 "+total+" 金幣.\n"); return 1; } return 1; } . . . 還有很多函數跟判斷(sell 的判斷寫完才發現應該給 sell [n] [what] 這樣的語法) 不過把XX農場具現在 mud 應該是可行的。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.225.162.151

11/13 16:42, , 1F
重生的世界啊....Revival World
11/13 16:42, 1F

11/13 17:31, , 2F
個人覺得比較複雜的部份在蟲害/長草/乾旱的事件產生上
11/13 17:31, 2F

11/13 17:31, , 3F
以及複數地的控制上
11/13 17:31, 3F
※ 編輯: laechan 來自: 61.225.161.183 (11/13 17:31)

11/13 23:46, , 4F
1F鹿人
11/13 23:46, 4F

11/14 07:59, , 5F
tsk 誰寫的呀, 看一看我也想搞一個 -.-
11/14 07:59, 5F

11/14 08:09, , 6F
呵,在板子上交流一下吧
11/14 08:09, 6F

10/19 18:17, , 7F
推鹿人
10/19 18:17, 7F
文章代碼(AID): #1A_Gdssx (mud)
討論串 (同標題文章)
文章代碼(AID): #1A_Gdssx (mud)