网页
资讯
视频
图片
知道
文库
贴吧
地图
采购
进入贴吧
全吧搜索
吧内搜索
搜贴
搜人
进吧
搜标签
日
一
二
三
四
五
六
签到排名:今日本吧第
个签到,
本吧因你更精彩,明天继续来努力!
本吧签到人数:0
一键签到
成为超级会员,使用一键签到
一键签到
本月漏签
0
次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行
补签
。
连续签到:
天 累计签到:
天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
06月17日
漏签
0
天
vb游戏吧
关注:
80
贴子:
250
看贴
图片
吧主推荐
游戏
1
2
下一页
尾页
32
回复贴,共
2
页
,跳到
页
确定
<<返回vb游戏吧
>0< 加载中...
[教程]为2D游戏生成地图
只看楼主
收藏
回复
Kelin
颇具名气
6
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
有许多2D游戏,地图都起到关键性的作用,如图。现在在此教大家基本的地图生成技巧。
Kelin
颇具名气
6
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
首先必须承认一些事实:
1,地图数据大多都保存在二维数组里。
2,每一个数组成员,如第(A,B)个元素,代表第A排第B列,它的值代表该区域的内容。
3,地图数据是地图数据,地图纹理是地图纹理,这两个其实没多大关联,只是最后渲染的时候地图是什么值便把对应的图片粘过去罢了
2025-06-17 16:28:51
广告
Kelin
颇具名气
6
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
好。所有地图上都有最普遍存在的一种东西,比如沙漠地图中沙子最多。所以你应该先用For循环们 把数组内所有的元素都初始化成这个值,比如0代表沙子。
wkzfwkzf
富有名气
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
前排围观
Kelin
颇具名气
6
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
然后,寻找自己的规则,这需要看你要做什么游戏了。比如如果你需要这个效果:
Kelin
颇具名气
6
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
你需要把地图切开成上下两部分,上面的就不要了。最重要的是怎么切。
Kelin
颇具名气
6
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
等等…
Kelin
颇具名气
6
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
此时假设我们的地图是20*100大小的(高为20),则最开始最好选择折中切割,在第一列:把上面10个数据改成-1(代表什么都没有),下面10个数据依旧是0(沙子之类的)。
2025-06-17 16:22:51
广告
Kelin
颇具名气
6
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
很重要的:你需要把你折中的临界点,也就是上文的(1,10)号元素标记一下存在一个新的变量里。
Kelin
颇具名气
6
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
好的,现在你处理完了第一列,并且获得了一个临界元素。
Kelin
颇具名气
6
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
进入第二列,先锁定(2,10),就是与前一个临界元素相平的元素,然后进入随机模式:
Kelin
颇具名气
6
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
生成一个随机数0~2,如果是1,则无变化,还是(2,10);如果是0,则把纵坐标减1,返回(2,9);如果是2,便加一,返回(2,11);如果超出了范围(我们地图高是20,所以不能高出20,不低于0),则不变。
Kelin
颇具名气
6
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
上面这个处理算法很重要,我们称之为切割函数。
Kelin
颇具名气
6
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
其次是删除函数,就是把临界元素上方的元素赋予-1的值。一个For就可以解决。
2025-06-17 16:16:51
广告
Kelin
颇具名气
6
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
总代码大概长这样:
登录百度账号
扫二维码下载贴吧客户端
下载贴吧APP
看高清直播、视频!
贴吧页面意见反馈
违规贴吧举报反馈通道
贴吧违规信息处理公示