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。

相關文章
相關標籤/搜索