分享发现 做地图 or 画画?如此简单!

能宕就宕 · 2020年04月18日 · 最后由 能宕就宕 回复于 2020年04月18日 · 198 次阅读

坐标式地图


注:灵感来自花心大萝卜发给我的mud游戏,样式是萝卜的游戏江湖

前言

目的是提高自由度,虽然样子简略了些,会HTML 我反正不会 可以弄表格,再加个框框会好看些。

思路是,在前面把地图 出来,后面的移动根据前面设定数组名来调用

精简版6*9

应萝卜要求 在下面那个超大版基础上修改的,更加接近小白水平

=:MD.行=1;MD.列=1;MD.n="道路"

=:MD.行1=["城墙","城墙","城墙","城墙","城墙","城墙","城墙","城墙","城墙"]

=:MD.行2=["城墙","道路","学堂","道路","官府","道路","河流","道路","城墙"]

=:MD.行3=["城墙","道路","道路","酒馆","道路","道路","小桥","道路","城墙"]

=:MD.行4=["城墙","武馆","道路","道路","道路","道路","河流","道路","城墙"]

=:MD.行5=["城墙","道路","云府","道路","赌坊","道路","河流","河流","城墙"]

=:MD.行6=["城墙","城墙","城墙","城墙","城墙","城墙","城墙","城墙","城墙"]


[1]
=:if(MD.行==1){MD.上=undefined;MD.中=MD.行1;MD.下=MD.行2}

=:if(MD.行==2){MD.上=MD.行1;MD.中=MD.行2;MD.下=MD.行3}

=:if(MD.行==3){MD.上=MD.行2;MD.中=MD.行3;MD.下=MD.行4}

=:if(MD.行==4){MD.上=MD.行3;MD.中=MD.行4;MD.下=MD.行5}

=:if(MD.行==5){MD.上=MD.行4;MD.中=MD.行5;MD.下=MD.行6}

=:if(MD.行==6){MD.上=MD.行5;MD.中=MD.行6;MD.下=undefined}
[|]
<center>我的位置:(j)MD.n(/j)——((j)MD.行(/j),(j)MD.列(/j))
<hr><center>(b)1(/b)<center>(b)2(/b)我在这里(b)3(/b)<center>(b)4(/b)
选:(j)MD.上[MD.列](/j)
<:if(MD.上==undefined){curBtn = null}
>:MD.n=MD.上[MD.列];MD.行--
选:(j)MD.中[MD.列-1](/j)
<:if(MD.中[MD.列-1]==undefined){curBtn = null}
>:MD.n=MD.中[MD.列-1];MD.列--
选:(j)MD.中[MD.列+1](/j)
<:if(MD.中[MD.列+1]==undefined){curBtn = null}
>:MD.n=MD.中[MD.列+1];MD.列++
选:(j)MD.下[MD.列](/j)
<:if(MD.下==undefined){curBtn = null}
>:MD.n=MD.下[MD.列];MD.行++
跳:1

精简版测试链接

超大版20*20

更加复杂些,先一张空白白纸,然后道路,然后把建筑物覆盖到道路上,一层盖一层。

用var 是为了方便测试,这个思路仅供参考,有兴趣的朋友可以自行研究。

for是为了方便涂鸦,但是就是一把刷子,精密度不高。

200,200开始是因为从0,0开始好像有bug。

需要画图,把数字标出来,有点工程师的感觉。

=:var n="镇中心";var x=200;var y=200

=:MD.le={}

=:var i=0;var j=0

=:for(i=0;i<500;i++){MD.le[i]=[]}

=:for(j=0;j<500;j++){for(i=0;i<500;i++){MD.le[j][i]="无"}}

=:for(j=190;j<211;j++){for(i=190;i<211;i++){MD.le[j][i]="道路"}}

=:for(j=190;j<211;j+=20){for(i=190;i<211;i++){MD.le[j][i]="城墙"}}

=:for(j=191;j<210;j++){for(i=190;i<211;i+=20){MD.le[j][i]="城墙"}}

=:for(j=193;j<195;j++){for(i=205;i<207;i++){MD.le[j][i]="学堂"}}

=:for(j=198;j<201;j++){for(i=204;i<207;i++){MD.le[j][i]="官府"}}

=:for(j=204;j<207;j++){for(i=196;i<210;i++){MD.le[j][i]="河流"}}

=:for(j=193;j<197;j++){for(i=198;i<202;i++){MD.le[j][i]="武馆"}}

=:for(j=198;j<201;j++){for(i=198;i<201;i++){MD.le[j][i]="酒馆"}}

=:for(j=191;j<204;j++){for(i=195;i<196;i++){MD.le[j][i]="商业街"}}

=:for(j=193;j<198;j++){for(i=192;i<193;i++){MD.le[j][i]="云府"}}

=:for(j=202;j<207;j++){for(i=192;i<193;i++){MD.le[j][i]="赌坊"}}

=:MD.le[200][200]="镇中心";for(j=204;j<207;j++){for(i=206;i<207;i++){MD.le[j][i]="小桥"}}

[1]
[|]
<center>我的位置:(j)n(/j)——((j)x(/j),(j)y(/j))
<hr>
<center>(b)1(/b)(b)2(/b)(b)3(/b)
<center>(b)4(/b)我在这里(b)5(/b)
<center>(b)6(/b)(b)7(/b)(b)8(/b)
选:(j)MD.le[x-1][y+1](/j)
<:if(MD.le[x-1][y+1]=="无"){curBtn = null}
>:n=MD.le[x-1][y+1];x--;y++
选:(j)MD.le[x][y+1](/j)
<:if(MD.le[x][y+1]=="无"){curBtn=null}
>:n=MD.le[x][y+1];y++
选:(j)MD.le[x+1][y+1](/j)
<:if(MD.le[x+1][y+1]=="无"){curBtn=null}
>:n=MD.le[x+1][y+1];x++;y++
选:(j)MD.le[x-1][y](/j)
<:if(MD.le[x-1][y]=="无"){curBtn=null}
>:n=MD.le[x-1][y];x--
选:(j)MD.le[x+1][y](/j)
<:if(MD.le[x+1][y]=="无"){curBtn=null}
>:n=MD.le[x+1][y];x++
选:(j)MD.le[x-1][y-1](/j)
<:if(MD.le[x-1][y-1]=="无"){curBtn=null}
>:n=MD.le[x-1][y-1];x--;y--
选:(j)MD.le[x][y-1](/j)
<:if(MD.le[x][y-1]=="无"){curBtn=null}
>:n=MD.le[x][y-1];y--
选:(j)MD.le[x+1][y-1](/j)
<:if(MD.le[x+1][y-1]=="无"){curBtn=null}
>:n=MD.le[x+1][y-1];x++;y--

跳:1

超大版测试链接

后记

第一次写教程,或者说是分享?自己也不太会,所以大家想提高游戏自由度,还是得自己摸索。

耗时2小时吧,挺快的了,搞出来什么都值得。

共收到 1 条回复

可以通过当前位置名称跳转到相应段落,城门忘记搞了,有点赶

能宕就宕 [实战教程] 手把手教你做桌游 中提及了此贴 04月22日 16:02
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册