原理很简单,请不要喷。


效果展示

种子输入框

种子为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。

 

Tomorrow - 地形生成(1)的更多相关文章

  1. 【BZOJ3193】[JLOI2013]地形生成(动态规划)

    [BZOJ3193][JLOI2013]地形生成(动态规划) 题面 BZOJ 洛谷 题解 第一问不难,首先按照山的高度从大往小排序,这样子只需要抉择前面有几座山就好了.然而有高度相同的山.其实也不麻烦 ...

  2. 【BZOJ3193】 [JLOI2013]地形生成

    BZOJ3193 [JLOI2013]地形生成 Solution 第一问不是很简单吗? 直接计数就好了. 第二问思考无果看了看hyj神仙的代码,发现可以dp求解. 具体可以看代码(其实主要是我说不清楚 ...

  3. 【BZOJ3193】[JLOI2013]地形生成 DP

    [BZOJ3193][JLOI2013]地形生成 Description 最近IK正在做关于地形建模的工作.其中一个工作阶段就是把一些山排列成一行.每座山都有各不相同的标号和高度.为了遵从一些设计上的 ...

  4. [Bzoj3193][JLOI2013]地形生成 (排列组合 + DP)

    3193: [JLOI2013]地形生成 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 459  Solved: 223[Submit][Status ...

  5. [bzoj3193][JLOI2013]地形生成_排列组合_贪心

    [JLOI2013]地形生成 题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=3193 题解: 这种求总排列的题,一种常规做法就是所有的元素 ...

  6. Day3:关于地形生成

    ---恢复内容开始--- 今天桃子好像还是没什么动静,不过媳妇倒是有一点见红~ 希望这是马上要出来的前兆了~ 桃子都已经晃点我俩好多回了~ 已经都快习惯来她这个狼来了的征兆了~ ----------- ...

  7. Minecraft类游戏地形生成机制

    目录 前言 生成地形高度 生成生物群落 模拟雨水侵蚀.生成河流(未完) 生成洞穴.裂谷 生成植被 放置树木(Bezier曲线) 生成建筑 生成发展域(元胞自动机模型) 放置建筑(DFS) 连接道路(A ...

  8. 初试PyOpenGL二 (Python+OpenGL)基本地形生成与高度检测

    在上文中,讲述了PyOpenGL的基本配置,以及网格,球形的生成,以及基本的漫游.现在利用上一篇的内容,来利用高程图实现一个基本的地形,并且,利用上文中的第三人称漫游,以小球为视角,来在地形上前后左右 ...

  9. [JLOI2013]地形生成

    JLOI2013过了好长时间,才写第四题.. 第一问比较好想. 第二问我想到了n^3次方的做法,但是数据....于是没敢写,然后上网查了一下题解,居然是O(n^3)过的,数据这么弱... /* * P ...

随机推荐

  1. 第三周java实验报告

        实验三 Java基本程序设计(2) 实验时间 2018-9-13 第一部分:理论知识回顾 第一章 再次了解了java“白皮书”的关键术语,java的常见术语,对于大多数“白皮书”的关键术语依然 ...

  2. FTP服务器与客户端的安装与配置

    FTP服务器安装与配置 1. 切换到root用户:  su root 2. 查看系统中是否安装了vsftpd,可以通过执行命令 :  rpm -qa | grep vsftpd 3. 如果没有安装 v ...

  3. 【笔记3-31】Python语言基础-列表list

    列表list my_list = [1, 2, 3, 4, 5] 索引index my_list[0] 获取列表长度 len(my_list) 切片 [起始:结束:步长] my_list[1:3:2] ...

  4. 解决python3使用cx_Freeze打包成exe后不能运行

    我使用的是python3.4,在使用cx_Freeze打包成exe后发现有些打包后程序能够运行,但是有些无法运行 这是控制台报错 经过多方查找发现原来是windows缺少一些python的扩展包 如下 ...

  5. matplotlib.pyplot.text

    matplotlib.pyplot.text(x, y, s, fontdict=None, withdash=<deprecated parameter>, **kwargs)[sour ...

  6. Linux常用的命令收藏

    摘要 Linux现在已经是大部分草根站长不可缺少的一部分,想要维护好你的网站就必须懂得常用的linux命令,这个可以加快你对服务器的维护,运营:同时Linux在嵌入式系统开发中有不可替代的优势,越来越 ...

  7. 从零开始实现穿衣图像分割完整教程(附python代码演练)

    时装业是人工智能领域很有前景的领域.研究人员可以开发具有一定实用价值的应用.我已经在这里展示了我对这个领域的兴趣,在那里我开发了一个来自Zalando在线商店的推荐和标记服装的解决方案. 在这篇文章中 ...

  8. Secret Milking Machine POJ - 2455 网络流(Dinic算法---广搜判断+深搜增广)+时间优化+二分

    题意: 第一行输入N M C ,表示从1到N有M条无向边,现在要从1走到N 走C次完全不同的路径,求最长边的最小值.下面M行是从a点到b点的距离. 建图: 题上说从两点之间可以有多条边,问的是从1~N ...

  9. ES6全面讲解

    写在之前.讲解了比较常用的ES6知识点,可以快速的入门.有两个比较复杂的知识点(promise,generator)则是留在了其他文章中,在里面详细讲解. 介绍 1.历史 ​ 1.ECMAScript ...

  10. flask中filter和filter_by的区别

    filter_by表内部精确查询 User.query.filter_by(id=4).first() filter 全局查询 id必须指明来源于那张表User,而且需要用等号,而不是赋值 User. ...