Fw: [閒聊] 隨機地圖產生器

作者: laechan (揮淚斬馬雲)   2018-11-28 10:29:16
※ [本文轉錄自 mud 看板 #1R_VpCQ1 ]
作者: laechan (揮淚斬馬雲) 看板: mud
標題: Re: [閒聊] 隨機地圖產生器
時間: Wed Nov 28 10:26:15 2018
網頁好讀版:https://www.ptt.cc/bbs/mud/M.1543371980.A.681.html
隨機地圖產生器 v1 版本
https://sites.google.com/view/randomapv1
Demo 參考影片
https://www.youtube.com/watch?v=PNlr272JP4k
有興趣的人可以玩玩看 ^_^
形成 x-x 圖後,各 mud 的 coder 可透過以下 code 輕易將它
轉成 001~xxx 的圖:
// 假設產生的 x-x 圖如底下
[email protected]
x-x-x-x-x-x-x
| | | |
x-x x-x-x-x x
| | | | |
x-x x-x x-x-x
| | | |
x-x x-x x
| | |
x-x-x-x-x-x x
LONG
;
tmps=explode(tmp,"\n");
s=sizeof(tmps);
new_tmp="";
for(i=0;i<s;i=i+2)
{
tmp=tmps[i];
sln=strlen(tmp);
for(j=0;j<sln;j=j+2)
{
if(tmp[j..j]=="x")
{
r++;
if(r<10)
new_tmp+="00"+r;
else if(r<100)
new_tmp+="0"+r;
else
new_tmp+=""+r;
}
else
new_tmp+=" ";
if(j+1>=sln) break;
new_tmp+=tmp[j+1..j+1];
}
new_tmp+="\n";
if(i+1>=s) break;
tmp=tmps[i+1];
sln=strlen(tmp);
for(j=0;j<sln;j=j+2)
{
if(tmp[j..j]=="|")
new_tmp+=" | ";
else
new_tmp+=" ";
if(j+1>=sln) break;
new_tmp+=" ";
}
new_tmp+="\n";
}
write(new_tmp+"\n這張地圖共 "+r+" 個房間.\n");
執行結果如下:
001-002-003-004-005-006-007
| | | |
008-009 010-011-012-013 014
| | | | |
015-016 017-018 019-020-021
| | | |
022-023 024-025 026
| | |
027-028-029-030-031-032 033
這張地圖共 33 個房間.
coder 再依自己的需求去讀取每一個數字格,經過適當的轉換
後,就能生成 001.c~033.c 區域房間檔,以 sanc 為例:
> more map
:::::::::::::: /open/test/map ::::::::::::::
001-002-003-004-005-006-007
| | | |
008-009 010-011-012-013 014
| | | | |
015-016 017-018 019-020-021
| | | |
022-023 024-025 026
| | |
027-028-029-030-031-032 033
> trans map to /open/test by area_script
圖檔: /open/test/map
目錄: /open/test
腳本: /open/test/area_script
請按[enter]鍵進行圖檔轉換...
資料讀取完成,共讀進了 33 個房間資料。
區域產生完成,共產生了 33 個房間檔案。
> ls
1 001.c 1 010.c 1 019.c 1 028.c
1 002.c 1 011.c 1 020.c 1 029.c
1 003.c 1 012.c 1 021.c 1 030.c
1 004.c 1 013.c 1 022.c 1 031.c
1 005.c 1 014.c 1 023.c 1 032.c
1 006.c 1 015.c 1 024.c 1 033.c
1 007.c 1 016.c 1 025.c 1 area_script
1 008.c 1 017.c 1 026.c 1 map
1 009.c 1 018.c 1 027.c
當 mud 有提供這種將 x-x 圖轉換成 數字圖,再轉換成區域房間
檔的機制時,生成地圖的工作就可以由玩家來做,mud 管理者則可
以設定 x-x 圖的徵稿機制,設定徵稿條件:
1.區域的大小範圍
2.區域的房間數量(數量/面積 = 密度,也可以約定密度)
3.需提供區域從起點走到終點的路線
(可複製隨機地圖產生器產生的路徑,也可以透過目視自己key)
4.需附上左側的 x-x 文字串,以及右側的截圖。截圖例
https://i.imgur.com/EoiYH1Q.jpg
這樣管理者一看就知道玩家所投稿的地圖長怎樣。
以上一點分享。
Laechan

Links booklink

Contact Us: admin [ a t ] ucptt.com