Tomorrow - 地形生成(1)

原理很简单,请不要喷。数组


效果展现

种子输入框 

种子输入框markdown

种子为12345的地形

 种子为12345的地形dom

种子为23456的地形 

种子为23456的地形spa


代码展现

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:生产随机数code

方块重力处理

map[i,j]==1是确保正在处理的位置有方块
map[i,j+1]==0是确保正在处理的位置下面一格没有方块对象

若是符合条件的话blog

map[i,j+1]=map[i,j]//清空当前格
map[i,j]=0;//填充下面格

(即当前方块下落)游戏

注意一下,这里没有用map[i,j+1]=1,让往后二次开发有更多方块。开发

放置方块

其实它的本质就是建立对象。rem

instance_create(x,y,obj)的用法本身看F1.

结语

这是我作的第一个记录,但愿个人沙盒游戏也能坚持作下去!

说明

本文原做者Tesla,首发于Tesla-173的我的博客

Tesla本人转载至Gamemaker开发者之家

未经受权禁止转载。

如需转载请联系2230229670@qq.com。

相关文章
相关标签/搜索