[閒聊] 灌個水, coding 一下吧!!
// 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
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
11/13 23:46, 4F
推
11/14 07:59, , 5F
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
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):
mud 近期熱門文章
PTT遊戲區 即時熱門文章
40
59
40
84