作者xga00mex (七祈綺契)
看板CFantasy
標題Re: [推薦] 碼農修真
時間Wed Sep 9 12:24:01 2020
※ 引述《aeoluns (風兒)》之銘言
: 感謝板友推薦,剛剛看到三十二章
: 有一段程式碼沒看懂,想和大家討論一下
: {
: 提供靈氣,
: 那么,
: 敏捷術開啟運行,
: 截斷靈氣,
: 那么,
: 敏捷術停止運行。}
function magics(human){
function agileMagic(mana){
if(mana){
human.useMagic("agileMagic")
}else{
human.stopMagic("agileMagic")
}
}
return {
agileMagic: agileMagic
}
}
菜雞 有錯歡迎提出
但有錯我也不更正==手機好難打
沒寫過遊戲大概是這樣
他那個當pseudo code我是覺得還好
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 125.230.42.28 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/CFantasy/M.1599625444.A.230.html
1F:→ peterturtle : 截斷靈氣要寫 if (!mana) 不是 else09/09 12:34
我就懶==
真要說我還要判斷他傳的是不是靈氣
2F:推 hkncanaan : 建議起一個interface Magic,裡面定對一個功能叫run09/09 12:35
3F:→ hkncanaan : 和stop09/09 12:35
太麻煩了 我手機打這段打快20分鐘
※ 編輯: xga00mex (125.230.42.28 臺灣), 09/09/2020 12:39:44
4F:→ peterturtle : 寫 if(!mana) 才能表現出冗碼啊 www09/09 12:41
5F:→ peterturtle : 不然其實我看起來比較像兩個 function09/09 12:42
6F:推 song7775 : 所以說這程式功能很怪阿w09/09 12:54
7F:推 song7775 : 啟動跟關閉兩個功能塞在同一個函數裡面09/09 12:57
8F:→ xga00mex : 他那個我覺得像是提一個要求 實作細節工程師隨意=09/09 12:57
9F:→ xga00mex : =09/09 12:57
10F:→ song7775 : 要進else只有mana==0 但都==0了為啥不是回傳mana不09/09 13:04
11F:→ song7775 : 足而是停下使用法術09/09 13:04
12F:→ song7775 : human.useMagic()那端沒有mana的相關判斷嗎w09/09 13:05
13F:→ xga00mex : 好問題 我有想過要不要傳過去 後來想想算了 停下就09/09 13:08
14F:→ xga00mex : 當他魔力不足能燒血條吧==09/09 13:08
15F:→ xga00mex : 說真的小說寫到太詳細反而很無聊 像瘋法推的那個中09/09 13:09
16F:→ xga00mex : 醫一堆古籍文言文我只想叫他給我全部翻成白話文09/09 13:09
17F:→ xga00mex : 不過這個碼農也有點太簡化就是了09/09 13:11
18F:→ song7775 : 這感覺不是簡化 是基本程式邏輯都不清楚09/09 13:12
做一個switch函數來call開/關我覺得還好吧==
回傳法力不足一樣要關法術啊或是等他跳錯自己停(?
想了一下human不該當magics參數
應該把magics當human私有函數的
※ 編輯: xga00mex (125.230.42.28 臺灣), 09/09/2020 13:30:18
19F:推 ms0301990 : 不懂的覺得可以看,相關專業頭很痛的作品lol09/09 13:43
20F:→ song7775 : 比較直覺的思考是法術端在吃不到mana的時候就會自09/09 13:51
21F:→ song7775 : 動停止吧09/09 13:51
22F:→ song7775 : 總覺得應該往回推先畫出流程圖w09/09 13:59
23F:→ song7775 : 有個問題是沒有agileMagic()函數的說明09/09 14:03
24F:→ xga00mex : 我不是來寫能動的程式的==那種不重要的細節沒差吧09/09 14:10
25F:→ xga00mex : 這個把human拿掉 判斷式裡改console.log應該也能動09/09 14:12
26F:→ xga00mex : 就是了09/09 14:13
※ 編輯: xga00mex (125.230.42.28 臺灣), 09/09/2020 14:13:44
27F:→ song7775 : 如果agileMagic()會在沒mana的時候自動停止那就不09/09 14:18
28F:→ song7775 : 需要寫出mana==0的時候停止法術了嘛09/09 14:18
29F:→ song7775 : 反正不重要啦w09/09 14:18
30F:推 warlockeric : 覺得不用return那行耶09/09 15:46
31F:推 mn435 : =0自動停止那很恐怖吧 那等於一直空轉 修真世界法力09/09 15:48
32F:→ mn435 : 真的歸零可能跟廢功沒兩樣09/09 15:48
這是js的閉包寫法==
要用的話就
var customMagic = magics(human)
customMagic.agileMagic(mana)
不能不return
作者寫的是提供/截斷
不做手動停止的話
有可能是自己被抽乾(假設靈氣直接抽自身)
或沒影響(給定量靈氣到用完為止)
前者好處是不用一直刷新
後者好處是不怕被抽乾
我自己覺得作者是想寫前者
但我沒把human.useMagic的實作細節寫出來所以就當通用吧==
※ 編輯: xga00mex (125.230.42.28 臺灣), 09/09/2020 16:30:29
33F:→ song7775 : 所以才會說不知道法術是啥內容需要說明嘛w 09/09 20:15
34F:→ song7775 : 畢竟也有可能是施法後法術有持續時間 09/09 20:17