|
MUD至少北侠里只有小范围的随机的迷宫,并没有随机的大面积地图(或者有但是我不
知道)。而即时战略游戏多有一个功能随机生成地图以供对战使用,并避免玩家的审美
疲劳。MUD里如果能有随机产生一块地图,那么最直接的功能就是奖励手动。
假设用多米诺效应(A产生随机方向影响B,B影响C)可行是可行,生成的地图完全无法控
制地图的走向,并生成很多不合理的回路。而且我生成的地图,看起来完全不像合理的
地形,比如山路eastup到草地了westup又能回到山路。总之就是乱七八糟,完全不符
合真实世界的地形。
构想:已经确定某固定位置节点。以华山五峰为例:莲花峰连接地图文件A,朝阳峰连
接地图文件B,文件A,B之间用2个随机路段α,β(中间固定位置C)C点连接朝阳峰形
成回环。α,β段以及C地名都是同样的山路。
这样实际生成的地图总算有模有样了~
附上1个文件,请各位大大帮助修正。
// 山路
// edit: by zine 11 Sep 2010
inherit ROOM;
#include
string* sl = ({
__DIR__"shanlu",
__DIR__"shanlu2",
__DIR__"shanlu3",
__DIR__"shanlu4",
});
void create()
{
object nextdoor=load_object("/d/test/shanlu2");
int n=random(100);
set("short", "山路");
set("long", @LONG
这是一条蜿蜒曲折的山路,雾中的山顶若隐若现。
LONG
);
if (n>74)
{
set("exits", ([
"westup" : __DIR__"shanlu2",
]));
nextdoor->set("exits/eastdown", __DIR__"shanlu");
}
if (n>49)
{
set("exits", ([
"eastup" : __DIR__"shanlu2",
]));
nextdoor->set("exits/westdown", __DIR__"shanlu");
}
if (n>24)
{
set("exits", ([
"southup" : __DIR__"shanlu2",
]));
nextdoor->set("exits/northdown", __DIR__"shanlu");
}
else
{
set("exits", ([
"northup" : __DIR__"shanlu2",
]));
nextdoor->set("exits/southdown", __DIR__"shanlu");
}
setup();
}
void init()
{
object me=this_player();
object nextroom = load_object( sl[random(sizeof(sl))] );
if (userp(me) && (random(10)>7))
{
me->move(nextroom);
tell_object(me,HIY "山上滚下落石,你慌乱地躲避,不知不觉,越走越远。\n"NOR);
tell_room(environment(),"一个人影匆匆奔了过来,十分狼狈。\n");
}
return;
}
本来生成随机方向的那部分是用switch的,但Jason指点random小的时候随机性非常差。
随机方向加上20%几率的乱入加上前面方向上的回环。Grin,不过手动还是很容易走出来的。我做
的第一个版本,就是自己一分钟刷新方向,因为没刷新一个方向,下一个路段就生成一个反方向,
所以路径变得四通八达(直接成迷宫),本意是随机地图而不是随机迷宫,所以改成了这个比较简
单的,只随机4个方向。 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|