Это основное внимание вопроса:Small Basic - более «естественное» поколение местности для простого клона Minecraft Я нашел в Интернете
For BlockX = 0 To 900 Step 30 'Try to carve out Hills
GraphicsWindow.BrushColor = "SkyBlue"
depth = Math.GetRandomNumber(5)
GraphicsWindow.FillRectangle(BlockX,BlockY,30,depth*30)
EndFor
И вся программа:
GraphicsWindow.Clear()
GraphicsWindow.CanResize = 0
GraphicsWindow.BackgroundColor = "SkyBlue"
gw = GraphicsWindow.Width
gh = GraphicsWindow.Height
gw = 900
gh = 600
For BlockX = 0 To 900 Step 30
For BlockY = 420 to 270 Step -30
b = Math.GetRandomNumber(2)
If b = 1 Then 'Stone
GraphicsWindow.DrawImage("C:\AllVersions\Versions\v0.4\SBCraft\assets\rock.png",BlockX,BlockY)
EndIf
If b = 2 Then 'Dirt
GraphicsWindow.DrawImage("C:\AllVersions\Versions\v0.4\SBCraft\assets\dirt.png",BlockX,BlockY)
EndIf
EndFor
EndFor
For BlockX = 0 To 900 Step 30 'Grass Layer
BlockY = 240
GraphicsWindow.DrawImage("C:\AllVersions\Versions\v0.4\SBCraft\assets\grass.png",BlockX,BlockY)
EndFor
For BlockX = 0 To 900 Step 30 'Try to carve out Hills
GraphicsWindow.BrushColor = "SkyBlue"
depth = Math.GetRandomNumber(5)
GraphicsWindow.FillRectangle(BlockX,BlockY,30,depth*30)
EndFor
Объяснения : Я нашел очень простой клон Minecraft онлайн, и я пытаюсь расширить его, добавив генератор ландшафта. Генератор рельефа поддерживает 3 блока грязи, травы и камня. Для нижних 6 слоев, грязь и камень случайным образом генерируются, и слой травы сверху. Основное внимание в этом вопросе является последнее утверждение For. Для каждого столбца выбрано случайное число. Выбранное случайное число - это количество блоков, удаленных в каждом столбце. Но это делает очень зубчатый и неестественный ландшафт. Есть ли какая-то странная тригонометрическая вещь, которую я могу сделать, чтобы сделать холмы/естественную местность или другим способом?