Re: [公告] 種族抗性也實裝了!

看板mud_sanc (Sanctuary - 聖殿)作者 (小太保)時間14年前 (2011/08/02 21:38), 編輯推噓0(002)
留言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
其實我不確定能不能兩層...所以才這樣做的.avert
08/02 21:51, 1F

08/02 21:52, , 2F
嗯。了解。納入下次修改時再順便改..
08/02 21:52, 2F
文章代碼(AID): #1ED_tSzZ (mud_sanc)
討論串 (同標題文章)
文章代碼(AID): #1ED_tSzZ (mud_sanc)