Re: [閒聊] 如何命名出帥氣的招式、ID或隊伍名稱已回收

看板C_Chat作者 (揮淚斬馬雲)時間7年前 (2016/10/04 16:59), 7年前編輯推噓19(1903)
留言22則, 21人參與, 最新討論串10/11 (看更多)
這東西理論上是可以寫產生器的。 我所 coding 的 mud,為了能在短時間產生大量的城鎮名稱, 我就寫了一支小程式來試著產生出英文的名字。 ====== // 隨機命名指令 // LAechan@Sanc add in 2013/07/15 #define names ({\ "a","b","c","d","e","f","g","h","i","j","k","l","m",\ "n","o","p","q","r","s","t","u","v","w","x","y","z"\ }) #define mothers ({"a","e","i","o","u","y"}) int cmd_runname(string str) { mixed strs=({}),tmps=({}); int s,i,m,t; // 先決定字串總長度, 6~14 s = 6+random(7); for(i=0;i<s;i++) strs+=({""}); // 選出一個開頭字母 strs[0] = names[random(26)]; // 接著去掉這個字母, 從 25 個剩餘字母裡挑出第二個字母 // 但是若開頭字是子音, 第二個字就高機率母音 tmps=names; if(member_array(strs[0],mothers)==-1 && random(3)>0) strs[1]=mothers[random(5)]; else { tmps-=({str}); strs[1] = tmps[random(25)]; } // 然後是決定母音的位置及數量, 依照 s 的長度來分配 m = s/(2+random(2)); for(i=0;i<m;i++) { t=2+random(s-2); strs[t]=mothers[random(5)]; } // 最後就是配置剩餘的子音 tmps=names; tmps-=mothers; tmps+=({"y"}); for(i=2;i<s;i++) if(strs[i]=="") strs[i]=tmps[random(21)]; write("產生出的名字: "+implode(strs,"")+"\n"); return 1; } ====== 底下我以剛剛跑出來的結果,挑三個出來做範例說明: 產生出的名字: laobieikgmqg 產生出的名字: suzohepgo 產生出的名字: oxuqafoayqea 以這三個名字為例,比方 laobieikgmqg 我可以取 laobiei 就好, 後面不要,翻成中文類似拉歐碧依這樣的名字,例如說 艾恩‧葛朗特第 64 層主城鎮 ~拉歐碧依~ 我想上面應該是沒什麼違和感的。 又例如 suzohepgo,翻成中文類似蘇柔嘿狗,那其實 hepgo 可以去 掉,換成像是蘇柔海姆,或是把幾個字音換掉,例如 suzohepgo 換 成 supoheim 蘇波荷姆這類的 艾恩‧葛朗特第 66 層主城鎮 ~蘇波荷姆~ 我想這也是沒什麼違和感的。 又例如 oxuqafoayqea,如果把中間的 qa 拿後面的 qea 來換,就 變成 oxuqeafoay,再把 xu 拿掉就變 oqeafoay,翻成中文大概就 像是歐奎雅法耶這樣的名字 艾恩‧葛朗特第 68 層主城鎮 ~歐奎雅法耶~ 舉這三個例子是要說明,程式產生的東西不是直接就拿來使用的, 產生出來的東西是一個「參考」,把這東西做一下去頭去尾、前後 替換、子母音替換等,才產生我真正想要的名字。 根據經驗,跑 100 個名字,才可能出現一個啥都不用改就能直接 用的名字。 底下是我之前有用以產生的幾個名字範例 阿斯忒伊 astelye 阿特隆佩 aterornpiie <= 這個就是直接跑出來的名字直接用 貝爾菲格爾 belphegor 畢庫斯碧 beekusbi . . . 提亞馬特 tiamat 威薩菲斯 wiexafiex 烏卡托 wucartuo 扎庫歐 zakiuo 這樣的名字產生風格,跟打工魔王有點像,我有儲存幾個例如; 馬拉古達 malacoda 巴巴力提亞 barbariccia 法爾法洛 farfarello 奧爾巴梅亞 orbameiyer 安特伊蘇拉 enteisla 艾夫薩汗 efusahaim 因古諾雷德 igunoretto 卡希亞斯 kasyase 聖埃雷 saintaire (我儲存這些名字的用意是做為程式修改的參考,也就是由其英 文名的子母音組成方式,來分析我的程式還能做什麼樣的改良) 技能名的部份,我以前也有寫過類似的東西,剛找程式碼找不到, 但大抵上可以根據以下的原則撰寫 1.把風火雷電炎雪氣........等等常見的名字放進 array1 中 2.把十百千萬億兆京........等等常見的數字放進 array2 中 3.把毀滅轟奔極霸威........等等常見的形容放進 array3 中 4.把殺擊破波砲斬拳........等等常見的尾字放進 array4 中 . . 然後讓程式亂數產生 3~8 個字的組合技能名,它不用管 array 幾個,只要確保每次都是亂數字數、亂數 array 指派即可,例如 某一次的結果可以是產生五個字的: 百 氣 寒 霜 指 array2[1]+array1[6]+array1[19]+array1[12]+array4[8] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 這三個字都儲存在 array1 然後就是讓程式產生海量的「參考」技能名,然後再從中找出大 致可做為技能名的「骨架」,然後 1.前後替換一下 2.左右挪動一下 3.增刪改幾個字 從上就可看出,重點就在於「樣本數」,也就是各 array 的內容 夠不夠多,內容越多,產生出的參考技能名就能越多樣。 因為我懶,所以我才寫程式幫我產生名字。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.224.161.173 ※ 文章網址: https://www.ptt.cc/bbs/C_Chat/M.1475571591.A.3F7.html ※ 編輯: laechan (61.224.161.173), 10/04/2016 17:02:51

10/04 17:03, , 1F
這樣更麻煩吧XD,推認真
10/04 17:03, 1F

10/04 17:04, , 2F
推xDDDD
10/04 17:04, 2F

10/04 17:09, , 3F
太猛拉
10/04 17:09, 3F

10/04 17:14, , 4F
XD 這招厲害
10/04 17:14, 4F

10/04 17:15, , 5F
認真推
10/04 17:15, 5F

10/04 17:19, , 6F
你是天才!
10/04 17:19, 6F
我是懶......

10/04 17:21, , 7F
這要推
10/04 17:21, 7F
※ 編輯: laechan (61.224.161.173), 10/04/2016 17:23:10

10/04 17:29, , 8F
看不懂 總之推
10/04 17:29, 8F

10/04 17:54, , 9F
很認真的在看code wwwww
10/04 17:54, 9F

10/04 18:31, , 10F
快推要不然別人以為我們看不懂
10/04 18:31, 10F

10/04 18:43, , 11F
封你為code命名王
10/04 18:43, 11F

10/04 18:44, , 12F
認真給推
10/04 18:44, 12F

10/04 18:55, , 13F
哇靠XDDDD
10/04 18:55, 13F

10/04 19:29, , 14F
認真推XDDDD
10/04 19:29, 14F

10/04 20:08, , 15F
百氣寒霜指!!(感覺喊出來就贏一半了)
10/04 20:08, 15F

10/04 21:06, , 16F
code命名(跪
10/04 21:06, 16F

10/04 21:47, , 17F
你害我浪費了半個小時在看codeXDDD
10/04 21:47, 17F

10/05 00:21, , 18F
推 太神惹
10/05 00:21, 18F

10/05 00:57, , 19F
樓下 為什麼我看了1小時才開始理解code
10/05 00:57, 19F

10/05 00:57, , 20F
一勞永逸 果然懶 XDDDD
10/05 00:57, 20F

10/05 15:37, , 21F
只能產生「供參考的」名字,感覺不夠威
10/05 15:37, 21F

10/05 15:37, , 22F
直接從神話傳奇抓專有名詞會不會比較方便?
10/05 15:37, 22F
比方程式寫得很細、很多行,可產生出幾乎不再需要修改的名字 又比方程式寫得很簡易,但產生出的名字幾乎都只有參考價值還需要修正 那我的想法就是,必然有一支程式: 1.可經常產生具參考價值的名字 2.再透過人腦做稍微的修正即可得到真正能使用的名字 ^^^^ 也就是說我把 程式的核心處理部份 交給 人腦 來做,這樣程式就不需要 寫得很複雜很多行。 ※ 編輯: laechan (61.224.161.173), 10/06/2016 09:07:27
文章代碼(AID): #1Nys-7Ft (C_Chat)
討論串 (同標題文章)
完整討論串 (本文為第 10 之 11 篇):
文章代碼(AID): #1Nys-7Ft (C_Chat)