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