Tomorrow - 地形生成(1)
原理很简单,请不要喷。
效果展示
种子输入框
种子为12345的地形
种子为23456的地形
代码展示
globalvar map
random_set_seed(real(get_string("Seed: ","")))//获取种子
for(i=0;i<=room_width/32;i+=1)
{
for(j=0;j<=room_height/32;j+=1)
{
map[i,j]=0;//初始化数组
}
}
for(i=0;i<=room_width/32;i+=1)
{
for(j=0;j<=room_height/32;j+=1)
{
if(random_range(0,100)>=65) map[i,j]=1;//按概率填充房间
}
}
for(n=1;n<=room_height/32;n+=1)
{
for(i=0;i<=room_width/32;i+=1)
{
for(j=0;j<=room_height/32-1;j+=1)
{
if(map[i,j+1]==0&&map[i,j]==1)
{
map[i,j+1]=map[i,j];
map[i,j]=0;//方块重力处理
}
}
}
}
for(i=0;i<=room_width/32;i+=1)
{
for(j=0;j<=room_height/32;j+=1)
{
if(map[i,j]==1) instance_create(i*32,j*32,obj_block)//在房间中按地图创建物体
}
}
代码讲解
使用的坐标系
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | ... |
---|---|---|---|---|---|---|---|---|---|
2 | |||||||||
3 | |||||||||
4 | |||||||||
5 | |||||||||
6 | |||||||||
7 | |||||||||
8 | |||||||||
9 | |||||||||
... | ... |
随机数
random_set_seed()
:置随机数种子random_range
:生产随机数
方块重力处理
map[i,j]==1
是确保正在处理的位置有方块map[i,j+1]==0
是确保正在处理的位置下面一格没有方块
如果符合条件的话
map[i,j+1]=map[i,j]//清空当前格
map[i,j]=0;//填充下面格
(即当前方块下落)
注意一下,这里没有用map[i,j+1]=1
,让日后二次开发有更多方块。
放置方块
其实它的本质就是创建对象。
instance_create(x,y,obj)
的用法自己看F1.
结语
这是我做的第一个记录,希望我的沙盒游戏也能坚持做下去!
说明
本文原作者Tesla,首发于Tesla-173的个人博客。
Tesla本人转载至Gamemaker开发者之家。
未经授权禁止转载。
如需转载请联系2230229670@qq.com。