Re: [公告] 種族抗性也實裝了!
看板mud_sanc (Sanctuary - 聖殿)作者laechan (小太保)時間14年前 (2011/08/02 21:38)推噓0(0推 0噓 2→)留言2則, 1人參與討論串5/9 (看更多)
※ 引述《hlead (希多)》之銘言:
: 嗯,所以就是 防禦等級 專門做給 種類 的意思囉!
: 然後 抗性 是對應 啪數 !
: 意思是表格要改成:
: static mapping RACE_ANTI=(["stoneman" :({"physics/2","shot/2"}),
: "elf" :({"magic/2"}),
: "devil" :({"magic/2"}),
: "dragonman" :({"magic/2","shot/1","physics/1"}),
: "human" :({"psychic/2"}) ]);
: 之類的。請玩家建議看看吧!
: 種類有:物理(physics) 魔法(magic) 念力(psychic) 遠擊(shot)
: 必中(stick) 氣(air)
你可以宣告為兩層 mapping 會比較方便。
mapping 的 if(! 判斷規則是這樣的。
比方 RACE_ANTI = ([]), 那至少可以做 if(RACE_ANTI["xxx"]) 這樣
的判斷,它不會出問題。但是底下就會出問題..
if(RACE_ANTI["xxx"]["ooo"])
因為它會默認「RACE_ANTI 應該有 key」,所以 if(RACE_ANTI["xxx"])
不會有問題,但是你若直接判斷到第二層的話就會出問題,改法如下..
if(RACE_ANTI["xxx"]) // 先判斷有沒有第一層
if(RACE_ANTI["xxx"]["ooo"]) // 這時才判斷有沒有第二層
而一行可以解決的方法如下..
if(!undefinedp(RACE_ANTI["xxx"]["ooo"])) // 不過我很少這樣寫
因為你的 RACE_ANTI 只定義五個種族,所以只要有第一層,第二
層就至少可以做 if 判斷,所以你可以這樣做..
static mapping RACE_ANTI=([
"stoneman" :(["physics":2,"shot":2]),
.
.
]);
然後在判斷上就這樣做..
if(RACE_ANTI[race]) // 這樣就可以直接判斷有沒有第一層
{
xx1=(int)RACE_ANTI[race]["physics"]; // 這樣沒有第二層時該數值就是 0
xx2=(int)RACE_ANTI[race]["shot"];
}
這樣就可以少做那一行 sscanf 的程式段。
Laechan
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.117.3.82
→
08/02 21:51, , 1F
08/02 21:51, 1F
→
08/02 21:52, , 2F
08/02 21:52, 2F
討論串 (同標題文章)
mud_sanc 近期熱門文章
PTT遊戲區 即時熱門文章
21
49